blob: 6a486eb9cd1edeb629340f5334887b57cfd90c53 [file] [log] [blame]
<html>
<body onload='startTest()'>
<script src="../../resources/js-test.js"></script>
<script>
// 'visibilitychange' event should bubble as defined in http://www.w3.org/TR/page-visibility/#sec-processing-model
// See: http://crbug.com/501821
description("This test checks that 'visibilitychange' event bubbles.");
var jsTestIsAsync = true;
function makePageVisible() {
if (window.testRunner)
testRunner.setPageVisibility("visible");
}
function makePageHidden() {
if (window.testRunner)
testRunner.setPageVisibility("hidden");
}
function checkIsPageVisible() {
shouldBeEqualToString("document.visibilityState", "visible");
shouldBeFalse("document.hidden");
}
function checkIsPageHidden() {
shouldBeEqualToString("document.visibilityState", "hidden");
shouldBeTrue("document.hidden");
}
// We will try to change the visibility states as:
// 0 - visible. (Initial - i.e. on load).
// 1 - hidden (should fire event and bubbles).
// 2 - visible (should fire event and bubbles).
var numVisibilityChanges = 0;
function startTest() {
// Document listener will be fired first
document.addEventListener(
"visibilitychange", onVisibilityChangeDocument, false);
window.addEventListener(
"visibilitychange", onVisibilityChangeWindow, false);
checkIsPageVisible();
numVisibilityChanges++;
makePageHidden();
}
function onVisibilityChangeDocument(event) {
shouldBeTrue("event.bubbles");
}
function onVisibilityChangeWindow(event) {
shouldBeTrue("event.bubbles");
if (numVisibilityChanges == 1) {
numVisibilityChanges++;
checkIsPageHidden();
makePageVisible();
} else if (numVisibilityChanges == 2) {
finishJSTest();
} else {
testFailed("Invalid number of visibility transitions");
finishJSTest();
}
}
</script>
</body>
</html>