| <html> |
| <body onload='startTest()'> |
| |
| <script src="../js/resources/js-test-pre.js"></script> |
| |
| <script> |
| |
| description("This test checks that Page Visibility state values are correct and the event changes are fired correctly."); |
| |
| var jsTestIsAsync = true; |
| |
| function makePageVisible() { |
| if (window.testRunner) |
| testRunner.setPageVisibility("visible"); |
| } |
| |
| function makePageHidden() { |
| if (window.testRunner) |
| testRunner.setPageVisibility("hidden"); |
| } |
| |
| function makePagePrerender() { |
| if (window.testRunner) |
| testRunner.setPageVisibility("prerender"); |
| } |
| |
| function makePagePreview() { |
| if (window.testRunner) |
| testRunner.setPageVisibility("preview"); |
| } |
| |
| function checkIsPageVisible() { |
| shouldBeEqualToString("document.webkitVisibilityState", "visible"); |
| shouldBeFalse("document.webkitHidden"); |
| } |
| |
| function checkIsPageHidden() { |
| shouldBeEqualToString("document.webkitVisibilityState", "hidden"); |
| shouldBeTrue("document.webkitHidden"); |
| } |
| |
| function checkIsPagePrerendering() { |
| shouldBeEqualToString("document.webkitVisibilityState", "prerender"); |
| shouldBeTrue("document.webkitHidden"); |
| } |
| |
| function checkIsPageInPreview() { |
| shouldBeEqualToString("document.webkitVisibilityState", "preview"); |
| shouldBeTrue("document.webkitHidden"); |
| } |
| |
| // We will try to change the visibility states as: |
| // 0 - visible. (Initial - i.e. on load). |
| // 1 - hidden (should fire event). |
| // 2 - hidden (no event). |
| // 3 - prerender (should fire event). |
| // 4 - visible (should fire event). |
| // 5 - preview (should fire event). |
| // 6 - visible (should fire event). |
| var numVisibilityChanges = 0; |
| |
| function startTest() { |
| document.addEventListener( |
| "webkitvisibilitychange", onVisibilityChange, false); |
| checkIsPageVisible(); |
| numVisibilityChanges++; |
| makePageHidden(); |
| } |
| |
| function onVisibilityChange() { |
| if (numVisibilityChanges == 1) { |
| checkIsPageHidden(); |
| numVisibilityChanges++; |
| makePageHidden(); |
| checkIsPageHidden(); |
| numVisibilityChanges++; |
| makePagePrerender(); |
| return; |
| } else if (numVisibilityChanges == 2) { |
| testFailed("Invalid event fired on same state change."); |
| finishJSTest(); |
| return; |
| } else if (numVisibilityChanges == 3) { |
| checkIsPagePrerendering(); |
| numVisibilityChanges++; |
| makePageVisible(); |
| return; |
| } else if (numVisibilityChanges == 4) { |
| checkIsPageVisible(); |
| numVisibilityChanges++; |
| makePagePreview(); |
| return; |
| } else if (numVisibilityChanges == 5) { |
| checkIsPageInPreview(); |
| numVisibilityChanges++; |
| makePageVisible(); |
| return; |
| } else if (numVisibilityChanges == 6) { |
| checkIsPageVisible(); |
| numVisibilityChanges++; |
| finishJSTest(); |
| return; |
| } else { |
| testFailed("Too many visibility transitions"); |
| finishJSTest(); |
| return; |
| } |
| } |
| |
| </script> |
| |
| <script src="../js/resources/js-test-post.js"></script> |
| |
| </body> |
| </html> |