You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ni...@apache.org on 2015/05/06 20:18:41 UTC
cordova-plugin-vibration git commit: CB-8930: Vibration on Windows
fails without a helpful error message when vibration functionality is missing
from the platform. This detects such a case and instead fails gracefully that
the feature isn't available.
Repository: cordova-plugin-vibration
Updated Branches:
refs/heads/master 9c98b92c2 -> 39ea936b1
CB-8930: Vibration on Windows fails without a helpful error message when
vibration functionality is missing from the platform. This detects such a
case and instead fails gracefully that the feature isn't available. Also
supports the Windows 10 vibration mechanism.
Incorporated CR feedback (thanks @purplecabbage and @nikhilkh)
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/commit/39ea936b
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/tree/39ea936b
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/diff/39ea936b
Branch: refs/heads/master
Commit: 39ea936b10585ea8bea41aeecd13fddfbfa08d6b
Parents: 9c98b92
Author: Rob Paveza <Ro...@microsoft.com>
Authored: Tue Apr 28 17:36:07 2015 -0700
Committer: Rob Paveza <Ro...@microsoft.com>
Committed: Fri May 1 10:21:21 2015 -0700
----------------------------------------------------------------------
plugin.xml | 2 +-
src/windows/VibrationProxy.js | 70 ++++++++++++++++++++++++++++++++------
2 files changed, 60 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/blob/39ea936b/plugin.xml
----------------------------------------------------------------------
diff --git a/plugin.xml b/plugin.xml
index a9c0d77..d1daa00 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -76,7 +76,7 @@
</js-module>
<framework src="src/windows/Vibration/Vibration.csproj" target="phone"
- type="projectReference" custom="true" />
+ type="projectReference" custom="true" versions="<10.0.0" />
</platform>
<!-- android -->
http://git-wip-us.apache.org/repos/asf/cordova-plugin-vibration/blob/39ea936b/src/windows/VibrationProxy.js
----------------------------------------------------------------------
diff --git a/src/windows/VibrationProxy.js b/src/windows/VibrationProxy.js
index 63c2aa7..3fb954b 100644
--- a/src/windows/VibrationProxy.js
+++ b/src/windows/VibrationProxy.js
@@ -20,7 +20,7 @@
*/
function checkReqs(actionName, fail) {
- if (WinJS.Utilities.isPhone !== true) {
+ if (!(Windows.Phone && Windows.Phone.Devices && Windows.Phone.Devices.Notification && Windows.Phone.Devices.Notification.VibrationDevice) && WinJS.Utilities.isPhone !== true) {
fail(actionName + ' is unsupported by this platform.');
return false;
}
@@ -43,18 +43,66 @@ function tryDoAction(actionName, success, fail, args, action) {
var DEFAULT_DURATION = 200;
-module.exports = {
- vibrate: function (success, fail, args) {
- tryDoAction("vibrate", success, fail, args, Vibration.Vibration.vibrate);
- },
+var VibrationDevice = (Windows.Phone && Windows.Phone.Devices && Windows.Phone.Devices.Notification && Windows.Phone.Devices.Notification.VibrationDevice && Windows.Phone.Devices.Notification.VibrationDevice);
+if (VibrationDevice) {
+ // Windows Phone 10 code paths
+ module.exports = {
+ vibrate: function(success, fail, args) {
+ try {
+ var duration = parseInt(args[0]);
+ if (isNaN(duration)) {
+ duration = DEFAULT_DURATION;
+ }
+ VibrationDevice.getDefault().vibrate(duration);
+ success();
+ }
+ catch (e) {
+ fail(e);
+ }
+ },
+ vibrateWithPattern: function(success, fail, args) {
+ // TODO: Implement with setTimeout.
+ fail('"vibrateWithPattern" is unsupported by this platform.');
+ },
+ cancelVibration: function(success, fail, args) {
+ try {
+ VibrationDevice.getDefault().cancel();
+ success();
+ }
+ catch (e) {
+ fail(e);
+ }
+ }
+ };
+} else if (typeof Vibration !== 'undefined' && Vibration.Vibration) {
+ // Windows Phone 8.1 code paths
+ module.exports = {
+ vibrate: function (success, fail, args) {
+ tryDoAction("vibrate", success, fail, args, Vibration.Vibration.vibrate);
+ },
+
+ vibrateWithPattern: function (success, fail, args) {
+ tryDoAction("vibrate", success, fail, [DEFAULT_DURATION], Vibration.Vibration.vibrate);
+ },
- vibrateWithPattern: function (success, fail, args) {
- tryDoAction("vibrate", success, fail, [DEFAULT_DURATION], Vibration.Vibration.vibrate);
- },
+ cancelVibration: function(success, fail, args) {
+ tryDoAction("cancelVibration", success, fail, args, Vibration.Vibration.cancelVibration);
+ }
+ };
+} else {
+ // code paths where no vibration mechanism is present
+ module.exports = {
+ vibrate: function (a, fail) {
+ fail('"vibrate" is unsupported by this device.');
+ },
+ vibrateWithPattern: function (success, fail, args) {
+ fail('"vibrateWithPattern" is unsupported by this device.');
+ },
- cancelVibration: function(success, fail, args) {
- tryDoAction("cancelVibration", success, fail, args, Vibration.Vibration.cancelVibration);
+ cancelVibration: function(success, fail, args) {
+ success();
+ }
}
-};
+}
require("cordova/exec/proxy").add("Vibration", module.exports);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org