| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="../resources/js-test.js"></script> |
| <script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> |
| <script src="file:///gen/services/device/public/interfaces/battery_monitor.mojom.js"></script> |
| <script src="resources/mock-battery-monitor.js"></script> |
| <script> |
| description("Test promise resolution and event listeners callbacks."); |
| |
| if (!window.testRunner) |
| debug('This test cannot be run without the TestRunner'); |
| |
| // Clean-up any unused battery manager objects from previous tests. |
| gc(); |
| jsTestIsAsync = true; |
| testRunner.waitUntilDone(); |
| |
| var battery; |
| function batteryStatusSuccess(batteryManager) { |
| debug('batteryStatusSuccess invoked'); |
| battery = batteryManager; |
| testIfBatteryStatusIsUpToDate(battery); |
| |
| battery.addEventListener('chargingchange', onChargingChange); |
| battery.addEventListener('dischargingtimechange', onDischargingTimeChange); |
| battery.addEventListener('chargingtimechange', onChargingTimeChange); |
| battery.addEventListener('levelchange', onLevelChange); |
| |
| setTimeout(fireNextMockBatteryInfo, 0); |
| } |
| |
| function fireNextMockBatteryInfo() { |
| setAndFireMockBatteryInfo(true, 11, 22, 0.6); |
| } |
| |
| var chargingChanged = 0; |
| var chargingTimeChanged = 0; |
| var dischargingTimeChanged = 0; |
| var levelChanged = 0; |
| |
| function onChargingChange() { |
| debug('chargingchange invoked'); |
| if (this !== battery) { testFailed('this !== battery'); } |
| testIfBatteryStatusIsUpToDate(this); |
| chargingChanged++; |
| finishIfReady(); |
| } |
| |
| function onChargingTimeChange() { |
| debug('chargingtimechange invoked'); |
| if (this !== battery) { testFailed('this !== battery'); } |
| testIfBatteryStatusIsUpToDate(this); |
| chargingTimeChanged++; |
| finishIfReady(); |
| } |
| |
| function onDischargingTimeChange() { |
| debug('dischargingtimechange invoked'); |
| if (this !== battery) { testFailed('this !== battery'); } |
| testIfBatteryStatusIsUpToDate(this); |
| dischargingTimeChanged++; |
| finishIfReady(); |
| } |
| |
| function onLevelChange() { |
| debug('levelchange invoked'); |
| if (this !== battery) { testFailed('this !== battery'); } |
| testIfBatteryStatusIsUpToDate(this); |
| levelChanged++; |
| finishIfReady(); |
| } |
| |
| function finishIfReady() { |
| if (chargingChanged == 1 && chargingTimeChanged == 1 && dischargingTimeChanged == 1 && levelChanged == 1) { |
| battery.removeEventListener('chargingchange', onChargingChange); |
| battery.removeEventListener('dischargingtimechange', onDischargingTimeChange); |
| battery.removeEventListener('chargingtimechange', onChargingTimeChange); |
| battery.removeEventListener('levelchange', onLevelChange); |
| setTimeout(finishJSTest, 0); |
| } |
| } |
| |
| navigator.getBattery().then(batteryStatusSuccess, batteryStatusFailure); |
| setAndFireMockBatteryInfo(false, 10, 20, 0.5); |
| </script> |
| </body> |
| </html> |