blob: 622e35c15cbe8827810e777478d0cb7a03a90251 [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/mojom/battery_monitor.mojom.js"></script>
<script src="resources/mock-battery-monitor.js"></script>
<script>
description("Test multiple windows 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();
testRunner.setCanOpenWindows();
testRunner.setCloseRemainingWindowsWhenComplete(true);
var battery;
function batteryStatusSuccess(batteryManager) {
battery = batteryManager;
debug('resolution in window');
testIfBatteryStatusIsUpToDate(battery);
battery.addEventListener('levelchange', failAndFinish);
firstWindow = window;
secondWindow = window.open("");
secondWindow.navigator.getBattery().then(
function(battery2) {
debug('resolution in secondWindow');
testIfBatteryStatusIsUpToDate(battery2);
setTimeout(fireNewMockLevel, 0);
}, batteryStatusFailure);
testRunner.setPageVisibility("hidden");
debug("first window: page is hidden");
}
function fireNewMockLevel() {
setAndFireMockBatteryInfo(false, 10, 20, 0.6);
proceedToVisible();
}
function proceedToVisible() {
battery.removeEventListener('levelchange', failAndFinish);
battery.addEventListener('levelchange', onLevelChange);
testRunner.setPageVisibility("visible");
debug("first window: page is visible");
}
function onLevelChange() {
testIfBatteryStatusIsUpToDate(battery);
battery.removeEventListener('levelchange', onLevelChange);
setTimeout(finishJSTest, 0);
}
function failAndFinish() {
testFailed('received event while the page was hidden');
setTimeout(finishJSTest, 0);
}
debug("first window: page is visible");
navigator.getBattery().then(batteryStatusSuccess, batteryStatusFailure);
setAndFireMockBatteryInfo(false, 10, 20, 0.5);
</script>
</body>
</html>