| <html> |
| <body onload='startTest()'> |
| |
| <script src="../../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 makePageUnloaded() { |
| if (window.testRunner) |
| testRunner.setPageVisibility("unloaded"); |
| } |
| |
| function checkIsPageVisible() { |
| shouldBeEqualToString("document.visibilityState", "visible"); |
| shouldBeFalse("document.hidden"); |
| shouldBeFalse("internals.scriptedAnimationsAreSuspended"); |
| } |
| |
| function checkIsPageHidden() { |
| shouldBeEqualToString("document.visibilityState", "hidden"); |
| shouldBeTrue("document.hidden"); |
| shouldBeTrue("internals.scriptedAnimationsAreSuspended"); |
| } |
| |
| // 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 - visible (should fire event). |
| var numVisibilityChanges = 0; |
| |
| function startTest() { |
| document.addEventListener( |
| "visibilitychange", onVisibilityChange, false); |
| checkIsPageVisible(); |
| numVisibilityChanges++; |
| makePageHidden(); |
| } |
| |
| function finishTest() { |
| if (window.testRunner) { |
| testRunner.resetPageVisibility(); |
| } |
| finishJSTest(); |
| } |
| |
| function onVisibilityChange() { |
| if (numVisibilityChanges == 1) { |
| checkIsPageHidden(); |
| numVisibilityChanges++; |
| makePageHidden(); |
| checkIsPageHidden(); |
| numVisibilityChanges++; |
| makePageVisible(); |
| return; |
| } else if (numVisibilityChanges == 2) { |
| testFailed("Invalid event fired on same state change."); |
| finishTest(); |
| return; |
| } else if (numVisibilityChanges == 3) { |
| checkIsPageVisible(); |
| numVisibilityChanges++; |
| finishTest(); |
| return; |
| } else { |
| testFailed("Too many visibility transitions"); |
| finishTest(); |
| return; |
| } |
| } |
| |
| </script> |
| |
| <script src="../../resources/js-test-post.js"></script> |
| |
| </body> |
| </html> |