blob: 8c225249bf5e6797fcd5f3904408e932b500cd98 [file] [log] [blame]
<html>
<body onload="startTest()">
<script src="../../resources/js-test-pre.js"></script>
<script>
description("This test checks that an iframe that moves between pages with different visibility will have the correct visibility value.");
var jsTestIsAsync = true;
var window2, iframe;
var isVisibilityChangeListenerAdded = false;
var isWindow2VisibilityChangeListenerAdded = false;
function startTest() {
if (!window.testRunner)
return;
testRunner.waitUntilDone();
debug("Window 1 is loaded");
if (window.document.hidden) {
isVisibilityChangeListenerAdded = true;
document.addEventListener("visibilitychange", openWindow, false);
return;
}
openWindow();
}
function openWindow() {
debug("Open window 2");
window2 = window.open("resources/page-visibility-iframe-move-new-page.html");
window2.addEventListener("load", window2Loaded, false);
}
function window2Loaded() {
debug("Window 2 is loaded");
if (window2.document.hidden) {
isWindow2VisibilityChangeListenerAdded = true;
window2.document.addEventListener("visibilitychange", changePageVisibility, false);
return;
}
changePageVisibility();
}
function changePageVisibility() {
debug("Will change visibility of window 1");
iframe = window2.document.getElementById("iframe");
shouldBeFalse("window.document.hidden");
shouldBeFalse("window2.document.hidden");
shouldBeFalse("iframe.contentDocument.hidden");
if (isVisibilityChangeListenerAdded)
document.removeEventListener("visibilitychange", openWindow, false);
document.addEventListener("visibilitychange", onVisibilityChange, false);
if (window.testRunner)
window.testRunner.setPageVisibility("hidden");
}
function onVisibilityChange() {
debug("VisibilityChange event is received");
shouldBeTrue("window.document.hidden");
shouldBeFalse("window2.document.hidden");
shouldBeFalse("iframe.contentDocument.hidden");
window.document.adoptNode(iframe);
window.document.body.appendChild(iframe);
debug("Frame is moved")
shouldBeTrue("window.document.hidden");
shouldBeFalse("window2.document.hidden");
shouldBeTrue("iframe.contentDocument.hidden");
finishTest();
}
function finishTest() {
window2.close();
document.removeEventListener("visibilitychange", onVisibilityChange, false);
window2.removeEventListener("load", window2Loaded, false);
if (isWindow2VisibilityChangeListenerAdded)
window2.document.removeEventListener("visibilitychange", changePageVisibility, false);
finishJSTest();
}
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>