4 <script src="../resources/js-test.js"></script>
6 description("Test battery status API with multiple promises after resolve.");
8 if (!window.testRunner)
9 debug('This test cannot be run without the TestRunner');
11 testRunner.waitUntilDone();
15 function setAndFireMockBatteryInfo(charging, chargingTime, dischargingTime, level) {
16 mockBatteryInfo = { charging: charging,
17 chargingTime: chargingTime,
18 dischargingTime: dischargingTime,
20 testRunner.didChangeBatteryStatus(charging, chargingTime, dischargingTime, level);
23 // compare obtained battery values with the mock values
24 function checkBatteryInfo(batteryManager) {
25 batteryInfo = batteryManager;
26 shouldBeDefined("batteryInfo");
27 shouldBeDefined("mockBatteryInfo");
28 shouldBe('batteryInfo.charging', 'mockBatteryInfo.charging');
29 shouldBe('batteryInfo.chargingTime', 'mockBatteryInfo.chargingTime');
30 shouldBe('batteryInfo.dischargingTime', 'mockBatteryInfo.dischargingTime');
31 shouldBe('batteryInfo.level', 'mockBatteryInfo.level');
34 function batteryStatusFailure() {
35 testFailed('failed to successfully resolve the promise');
39 function batteryStatusSuccess(battery) {
40 debug('resolution number 1');
41 checkBatteryInfo(battery);
43 navigator.getBattery().then(
45 debug('resolution number 2');
46 checkBatteryInfo(battery);
47 setTimeout(cleanupAndFinish, 0);
48 }, batteryStatusFailure);
51 function cleanupAndFinish() {
52 // stops updating battery and clears current battery status.
53 window.testRunner.setPageVisibility("hidden");
57 navigator.getBattery().then(batteryStatusSuccess, batteryStatusFailure);
58 setAndFireMockBatteryInfo(false, 10, 20, 0.5);