You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by sh...@apache.org on 2016/12/08 00:56:19 UTC

[3/5] cordova-plugin-battery-status git commit: CB-8929 Use PowerManager to get battery state on Win 10

CB-8929 Use PowerManager to get battery state on Win 10

This closes #42


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-battery-status/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-battery-status/commit/85c6f507
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-battery-status/tree/85c6f507
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-battery-status/diff/85c6f507

Branch: refs/heads/1.2.x
Commit: 85c6f507a3e4b8640ae81eac3be953e6d7cf19ab
Parents: e7c1a16
Author: Vladimir Kotikov <ko...@gmail.com>
Authored: Mon Nov 7 14:46:20 2016 +0300
Committer: Vladimir Kotikov <ko...@gmail.com>
Committed: Tue Nov 8 17:09:07 2016 +0300

----------------------------------------------------------------------
 README.md                   |  6 +++---
 src/windows/BatteryProxy.js | 42 +++++++++++++++++++++++++++++++++++++++-
 tests/tests.js              | 40 ++++++++++++++++++++++----------------
 3 files changed, 67 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-battery-status/blob/85c6f507/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 8301f45..30ace99 100644
--- a/README.md
+++ b/README.md
@@ -65,7 +65,7 @@ Fires when the battery charge percentage changes by at least 1 percent, or when
 - Android
 - BlackBerry 10
 - Windows Phone 7 and 8
-- Windows (Windows Phone 8.1 only)
+- Windows (Windows Phone 8.1 and Windows 10)
 - Firefox OS
 - Browser (Chrome, Firefox, Opera)
 
@@ -100,7 +100,7 @@ Fires when the battery charge percentage reaches the low charge threshold. This
 - Android
 - BlackBerry 10
 - Firefox OS
-- Windows (Windows Phone 8.1 only)
+- Windows (Windows Phone 8.1 and Windows 10)
 - Browser (Chrome, Firefox, Opera)
 
 ### Quirks: Windows Phone 8.1
@@ -126,7 +126,7 @@ Fires when the battery charge percentage reaches the critical charge threshold.
 - Android
 - BlackBerry 10
 - Firefox OS
-- Windows (Windows Phone 8.1 only)
+- Windows (Windows Phone 8.1 and Windows 10)
 - Browser (Chrome, Firefox, Opera)
 
 ### Quirks: Windows Phone 8.1

http://git-wip-us.apache.org/repos/asf/cordova-plugin-battery-status/blob/85c6f507/src/windows/BatteryProxy.js
----------------------------------------------------------------------
diff --git a/src/windows/BatteryProxy.js b/src/windows/BatteryProxy.js
index ed91bcb..9f5ac66 100644
--- a/src/windows/BatteryProxy.js
+++ b/src/windows/BatteryProxy.js
@@ -19,7 +19,47 @@
  *
  */
 
-/* global WinJS, BatteryStatus */
+/* global Windows, WinJS, BatteryStatus */
+
+var PowerManager = Windows && Windows.System &&
+    Windows.System.Power && Windows.System.Power.PowerManager;
+
+if (PowerManager) {
+    var pluginCallback;
+    var reportStatus = function () {
+        if (!pluginCallback) {
+            return;
+        }
+
+        pluginCallback({
+            level: PowerManager.remainingChargePercent,
+            isPlugged: PowerManager.powerSupplyStatus !== Windows.System.Power.PowerSupplyStatus.notPresent
+        }, { keepCallback: true });
+    };
+
+    var BatteryWin10 = {
+        start: function (win, fail) {
+            pluginCallback = win;
+            PowerManager.addEventListener('remainingchargepercentchanged', reportStatus);
+            PowerManager.addEventListener('powersupplystatuschanged', reportStatus);
+
+            reportStatus();
+        },
+
+        stop: function () {
+            if (pluginCallback) {
+                PowerManager.removeEventListener('remainingchargepercentchanged', reportStatus);
+                PowerManager.removeEventListener('powersupplystatuschanged', reportStatus);
+            }
+
+            pluginCallback = null;
+        }
+    };
+
+    require("cordova/exec/proxy").add("Battery", BatteryWin10);
+    return;
+}
+
 
 var stopped;
 

http://git-wip-us.apache.org/repos/asf/cordova-plugin-battery-status/blob/85c6f507/tests/tests.js
----------------------------------------------------------------------
diff --git a/tests/tests.js b/tests/tests.js
index ad21d3b..69211ad 100644
--- a/tests/tests.js
+++ b/tests/tests.js
@@ -20,16 +20,22 @@
  */
 
 /* jshint jasmine: true */
-/* global WinJS */
+/* global Windows, WinJS */
 
 exports.defineAutoTests = function () {
-    var isWindowsStore = (cordova.platformId == "windows8") || (cordova.platformId == "windows" && !WinJS.Utilities.isPhone),
-        onEvent;
+    var hasPowerManagerAPI = Windows && Windows.System &&
+        Windows.System.Power && Windows.System.Power.PowerManager;
+
+    var batteryStatusUnsupported = cordova.platformId === "windows8" ||
+        // We don't test battery status on Windows when there is no corresponding APIs available
+        cordova.platformId === "windows" && !(hasPowerManagerAPI || WinJS.Utilities.isPhone);
+
+    var onEvent;
 
     describe('Battery (navigator.battery)', function () {
 
         it("battery.spec.1 should exist", function () {
-            if (isWindowsStore) {
+            if (batteryStatusUnsupported) {
                 pending('Battery status is not supported on windows store');
             }
 
@@ -42,7 +48,7 @@ exports.defineAutoTests = function () {
         describe("batterystatus", function () {
 
             afterEach(function () {
-                if (!isWindowsStore) {
+                if (!batteryStatusUnsupported) {
                     try {
                         window.removeEventListener("batterystatus", onEvent, false);
                     }
@@ -53,7 +59,7 @@ exports.defineAutoTests = function () {
             });
 
             it("battery.spec.2 should fire batterystatus events", function (done) {
-                if (isWindowsStore) {
+                if (batteryStatusUnsupported) {
                     pending('Battery status is not supported on windows store');
                 }
 
@@ -78,7 +84,7 @@ exports.defineAutoTests = function () {
         describe("batterylow", function () {
 
             afterEach(function () {
-                if (!isWindowsStore) {
+                if (!batteryStatusUnsupported) {
                     try {
                         window.removeEventListener("batterylow", onEvent, false);
                     }
@@ -89,7 +95,7 @@ exports.defineAutoTests = function () {
             });
 
             it("battery.spec.3 should fire batterylow event (30 -> 20)", function (done) {
-                if (isWindowsStore) {
+                if (batteryStatusUnsupported) {
                     pending('Battery status is not supported on windows store');
                 }
 
@@ -116,7 +122,7 @@ exports.defineAutoTests = function () {
             });
 
             it("battery.spec.3.1 should fire batterylow event (30 -> 19)", function (done) {
-                if (isWindowsStore) {
+                if (batteryStatusUnsupported) {
                     pending('Battery status is not supported on windows store');
                 }
 
@@ -142,7 +148,7 @@ exports.defineAutoTests = function () {
             });
 
             it("battery.spec.3.2 should not fire batterylow event (5 -> 20)", function (done) {
-                if (isWindowsStore) {
+                if (batteryStatusUnsupported) {
                     pending('Battery status is not supported on windows store');
                 }
 
@@ -168,7 +174,7 @@ exports.defineAutoTests = function () {
             });
 
             it("battery.spec.3.3 batterylow event(21 -> 20) should not fire if charging", function (done) {
-                if (isWindowsStore) {
+                if (batteryStatusUnsupported) {
                     pending('Battery status is not supported on windows store');
                 }
 
@@ -197,7 +203,7 @@ exports.defineAutoTests = function () {
         describe("batterycritical", function () {
 
             afterEach(function () {
-                if (!isWindowsStore) {
+                if (!batteryStatusUnsupported) {
                     try {
                         window.removeEventListener("batterycritical", onEvent, false);
                     }
@@ -208,7 +214,7 @@ exports.defineAutoTests = function () {
             });
 
             it("battery.spec.4 should fire batterycritical event (19 -> 5)", function (done) {
-                if (isWindowsStore) {
+                if (batteryStatusUnsupported) {
                     pending('Battery status is not supported on windows store');
                 }
 
@@ -235,7 +241,7 @@ exports.defineAutoTests = function () {
             });
 
             it("battery.spec.4.1 should fire batterycritical event (19 -> 4)", function (done) {
-                if (isWindowsStore) {
+                if (batteryStatusUnsupported) {
                     pending('Battery status is not supported on windows store');
                 }
 
@@ -262,7 +268,7 @@ exports.defineAutoTests = function () {
             });
 
             it("battery.spec.4.2 should fire batterycritical event (100 -> 4) when decreases", function (done) {
-                if (isWindowsStore) {
+                if (batteryStatusUnsupported) {
                     pending('Battery status is not supported on windows store');
                 }
 
@@ -288,7 +294,7 @@ exports.defineAutoTests = function () {
             });
 
             it("battery.spec.4.3 should not fire batterycritical event (4 -> 5) when increasing", function (done) {
-                if (isWindowsStore) {
+                if (batteryStatusUnsupported) {
                     pending('Battery status is not supported on windows store');
                 }
 
@@ -314,7 +320,7 @@ exports.defineAutoTests = function () {
             });
 
             it("battery.spec.4.4 should not fire batterycritical event (6 -> 5) if charging", function (done) {
-                if (isWindowsStore) {
+                if (batteryStatusUnsupported) {
                     pending('Battery status is not supported on windows store');
                 }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org