You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bh...@apache.org on 2013/06/13 15:40:37 UTC

webworks commit: [CB-3454] Refactored battery plugin to use webkitBattery + fire event on add

Updated Branches:
  refs/heads/master 773001d33 -> 1c9438f52


[CB-3454] Refactored battery plugin to use webkitBattery + fire event on add

Revewied by Bryan Higgins <bh...@blackberry.com>
Tested by Tracy Li <tl...@blackberry.com>


Project: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/commit/1c9438f5
Tree: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/tree/1c9438f5
Diff: http://git-wip-us.apache.org/repos/asf/cordova-blackberry/diff/1c9438f5

Branch: refs/heads/master
Commit: 1c9438f5281ddf80e604e929c32f391f3eddd031
Parents: 773001d
Author: jkeshavarzi <jk...@blackberry.com>
Authored: Wed Jun 12 13:19:33 2013 -0400
Committer: Bryan Higgins <bh...@blackberry.com>
Committed: Thu Jun 13 09:43:22 2013 -0400

----------------------------------------------------------------------
 blackberry10/bin/test/plugins/Battery/index.js  | 36 +++++------------
 .../plugins/Battery/src/blackberry10/index.js   | 42 +++++++++++++-------
 2 files changed, 39 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1c9438f5/blackberry10/bin/test/plugins/Battery/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/bin/test/plugins/Battery/index.js b/blackberry10/bin/test/plugins/Battery/index.js
index ff82a21..a717d94 100644
--- a/blackberry10/bin/test/plugins/Battery/index.js
+++ b/blackberry10/bin/test/plugins/Battery/index.js
@@ -35,16 +35,10 @@ describe("Battery", function () {
 
 
     beforeEach(function () {
-        GLOBAL.window = {
-            qnx: {
-                webplatform: {
-                    device: {
-                        addEventListener: jasmine.createSpy("webplatform.device.addEventListener").andCallFake(function (evt, cb) {
-                            callback = cb;
-                        }),
-                        removeEventListener: jasmine.createSpy("webplatform.device.removeEventListener")
-                    }
-                }
+        GLOBAL.navigator = {
+            webkitBattery: {
+                onlevelchange: jasmine.createSpy("navigator.webkitBattery.onlevelchange"),
+                onchargingchange: jasmine.createSpy("navigator.webkitBattery.onchargingchange")
             }
         };
         GLOBAL.PluginResult = function () {
@@ -54,7 +48,7 @@ describe("Battery", function () {
     });
 
     afterEach(function () {
-        delete GLOBAL.window;
+        delete GLOBAL.navigator;
         delete GLOBAL.PluginResult;
         delete require.cache[require.resolve(_apiDir + "index")];
     });
@@ -63,39 +57,31 @@ describe("Battery", function () {
 
         it("calls noResult and keeps callbacks", function () {
             index.start(noop, noop, args, env);
-            expect(window.qnx.webplatform.device.removeEventListener).not.toHaveBeenCalled();
-            expect(window.qnx.webplatform.device.addEventListener).toHaveBeenCalled();
+            expect(navigator.webkitBattery.onlevelchange).not.toEqual(null);
+            expect(navigator.webkitBattery.onchargingchange).not.toEqual(null);
             expect(mockPluginResult.noResult).toHaveBeenCalledWith(true);
             expect(mockPluginResult.error).not.toHaveBeenCalled();
         });
 
-        it("callback calls ok and keeps callbacks", function () {
-            callback("OK");
-            expect(mockPluginResult.callbackOk).toHaveBeenCalledWith("OK", true);
-            expect(mockPluginResult.error).not.toHaveBeenCalled();
-        });
-
         it("does not call error if already started", function () {
             index.start(noop, noop, args, env);
-            window.qnx.webplatform.device.addEventListener.reset();
             mockPluginResult.noResult.reset();
             index.start(noop, noop, args, env);
-            expect(window.qnx.webplatform.device.removeEventListener).toHaveBeenCalled();
-            expect(window.qnx.webplatform.device.addEventListener).toHaveBeenCalled();
+            expect(navigator.webkitBattery.onlevelchange).not.toEqual(null);
+            expect(navigator.webkitBattery.onchargingchange).not.toEqual(null);
             expect(mockPluginResult.error).not.toHaveBeenCalled();
             expect(mockPluginResult.noResult).toHaveBeenCalledWith(true);
         });
 
-
     });
 
     describe("stop", function () {
 
         it("calls noResult and does not keep callbacks", function () {
             index.start(noop, noop, args, env);
-            window.qnx.webplatform.device.removeEventListener.reset();
             index.stop(noop, noop, args, env);
-            expect(window.qnx.webplatform.device.removeEventListener).toHaveBeenCalled();
+            expect(navigator.webkitBattery.onlevelchange).toEqual(null);
+            expect(navigator.webkitBattery.onchargingchange).toEqual(null);
             expect(mockPluginResult.noResult).toHaveBeenCalledWith(false);
         });
 

http://git-wip-us.apache.org/repos/asf/cordova-blackberry/blob/1c9438f5/blackberry10/plugins/Battery/src/blackberry10/index.js
----------------------------------------------------------------------
diff --git a/blackberry10/plugins/Battery/src/blackberry10/index.js b/blackberry10/plugins/Battery/src/blackberry10/index.js
index 07a943c..4d3816f 100644
--- a/blackberry10/plugins/Battery/src/blackberry10/index.js
+++ b/blackberry10/plugins/Battery/src/blackberry10/index.js
@@ -14,31 +14,46 @@
  * limitations under the License.
  */
 
-var SYSTEM_EVENTS = ["device.battery.statusChange",
-                     "device.battery.chargeLow",
-                     "device.battery.chargeCritical"],
-    device = window.qnx.webplatform.device,
-    _clientListeners = {};
+    var _clientListeners = {},
+        _webkitBattery = navigator.webkitBattery || navigator.battery;
 
 module.exports = {
     start: function (success, fail, args, env) {
         var result = new PluginResult(args, env),
             listener = function (info) {
-                result.callbackOk(info, true);
+                var resultInfo = {};
+                if (info) {
+                    if (info.srcElement) {
+                        //webkitBattery listeners store webkitBattery in srcElement object
+                        info = info.srcElement;
+                    }
+
+                    //put data from webkitBattery into a format cordova expects
+                    //webkitBattery seems to return level as a decimal pre 10.2
+                    resultInfo.level = info.level <= 1 ? info.level * 100 : info.level,
+                    resultInfo.isPlugged = info.charging
+                }
+
+                result.callbackOk(resultInfo, true);
             };
 
         if (_clientListeners[env.webview.id]) {
             //TODO: Change back to erroring out after reset is implemented
             //result.error("Battery listener already running");
-            SYSTEM_EVENTS.forEach(function (event) {
-                device.removeEventListener(event, _clientListeners[env.webview.id]);
-            });
+            _webkitBattery.onchargingchange = null;
+            _webkitBattery.onlevelchange = null;
         }
 
         _clientListeners[env.webview.id] = listener;
-        SYSTEM_EVENTS.forEach(function (event) {
-            device.addEventListener(event, listener);
+
+        _webkitBattery.onchargingchange = listener;
+        _webkitBattery.onlevelchange = listener;
+
+        setTimeout(function(){
+            //Call callback with webkitBattery data right away
+            listener(_webkitBattery);
         });
+
         result.noResult(true);
     },
     stop: function (success, fail, args, env) {
@@ -48,9 +63,8 @@ module.exports = {
         if (!listener) {
             result.error("Battery listener has not started");
         } else {
-            SYSTEM_EVENTS.forEach(function (event) {
-                device.removeEventListener(event, listener);
-            });
+            _webkitBattery.onchargingchange = null;
+            _webkitBattery.onlevelchange = null;
             delete _clientListeners[env.webview.id];
             result.noResult(false);
         }