blob: 1fd2b4d22b4f9669f08557e81e1ff1764f769faa [file] [log] [blame]
<!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>