blob: 7f00ac7bd0f685e63971f0a75d74a075498ad883 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<script src="../resources/js-test.js"></script>
<script>
description("Test with page visibility.");
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 mockBatteryInfo;
function setAndFireMockBatteryInfo(charging, chargingTime, dischargingTime, level) {
mockBatteryInfo = { charging: charging,
chargingTime: chargingTime,
dischargingTime: dischargingTime,
level: level };
testRunner.didChangeBatteryStatus(charging, chargingTime, dischargingTime, level);
}
// compare obtained battery values with the mock values
function checkBatteryInfo(batteryManager) {
batteryInfo = batteryManager;
shouldBeDefined("batteryInfo");
shouldBeDefined("mockBatteryInfo");
shouldBe('batteryInfo.charging', 'mockBatteryInfo.charging');
shouldBe('batteryInfo.chargingTime', 'mockBatteryInfo.chargingTime');
shouldBe('batteryInfo.dischargingTime', 'mockBatteryInfo.dischargingTime');
shouldBe('batteryInfo.level', 'mockBatteryInfo.level');
}
function batteryStatusFailure() {
testFailed('failed to successfully resolve the promise');
setTimeout(cleanupAndFinish, 0);
}
var battery;
function batteryStatusSuccess(batteryManager) {
battery = batteryManager;
checkBatteryInfo(battery);
battery.addEventListener('levelchange', failAndFinish);
testRunner.setPageVisibility("hidden");
debug("page is hidden");
setTimeout(fireNextMockBatteryInfo, 0);
}
function fireNextMockBatteryInfo() {
setAndFireMockBatteryInfo(false, 10, 20, 0.55);
testWithVisiblePage();
}
function testWithVisiblePage() {
battery.removeEventListener('levelchange', failAndFinish);
battery.addEventListener('levelchange', onLevelChange);
testRunner.setPageVisibility("visible");
debug("page is visible");
setAndFireMockBatteryInfo(false, 10, 20, 0.6);
}
function onLevelChange() {
checkBatteryInfo(battery);
battery.removeEventListener('levelchange', onLevelChange);
setTimeout(finishJSTest, 0);
}
function failAndFinish() {
testFailed('received event while the page was hidden');
setTimeout(finishJSTest, 0);
}
debug("page is visible");
navigator.getBattery().then(batteryStatusSuccess, batteryStatusFailure);
setAndFireMockBatteryInfo(false, 10, 20, 0.5);
</script>
</body>
</html>