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);
}