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