Change fast/e* files to use pre and post js files in LayoutTests/resources.
[WebKit-https.git] / LayoutTests / fast / events / page-visibility-transition-test.html
1 <html>
2 <body onload='startTest()'>
3
4 <script src="../../resources/js-test-pre.js"></script>
5
6 <script>
7
8 description("This test checks that Page Visibility state values are correct and the event changes are fired correctly.");
9
10 var jsTestIsAsync = true;
11
12 function makePageVisible() {
13     if (window.testRunner)
14         testRunner.setPageVisibility("visible");
15 }
16
17 function makePageHidden() {
18     if (window.testRunner)
19         testRunner.setPageVisibility("hidden");
20 }
21
22 function makePagePrerender() {
23     if (window.testRunner)
24         testRunner.setPageVisibility("prerender");
25 }
26
27 function makePageUnloaded() {
28     if (window.testRunner)
29         testRunner.setPageVisibility("unloaded");
30 }
31
32 function checkIsPageVisible() {
33     shouldBeEqualToString("document.visibilityState", "visible");
34     shouldBeFalse("document.hidden");
35 }
36
37 function checkIsPageHidden() {
38     shouldBeEqualToString("document.visibilityState", "hidden");
39     shouldBeTrue("document.hidden");
40 }
41
42 function checkIsPagePrerendering() {
43     shouldBeEqualToString("document.visibilityState", "prerender");
44     shouldBeTrue("document.hidden");
45 }
46
47 function checkIsPageInUnloaded() {
48     shouldBeEqualToString("document.visibilityState", "unloaded");
49     shouldBeTrue("document.hidden");
50 }
51
52 // We will try to change the visibility states as:
53 //  0 - visible. (Initial - i.e. on load).
54 //  1 - hidden (should fire event).
55 //  2 - hidden (no event).
56 //  3 - prerender (should fire event).
57 //  4 - visible (should fire event).
58 //  5 - unloaded (should fire event).
59 //  6 - visible (should fire event).
60 var numVisibilityChanges = 0;
61
62 function startTest() {
63     document.addEventListener(
64         "visibilitychange", onVisibilityChange, false);
65     checkIsPageVisible();
66     numVisibilityChanges++;
67     makePageHidden();
68 }
69
70 function finishTest() {
71     if (window.testRunner) {
72         testRunner.resetPageVisibility();
73     }
74     finishJSTest();
75 }
76
77 function onVisibilityChange() {
78     if (numVisibilityChanges == 1) {
79         checkIsPageHidden();
80         numVisibilityChanges++;
81         makePageHidden();
82         checkIsPageHidden();
83         numVisibilityChanges++;
84         makePagePrerender();
85         return;
86     } else if (numVisibilityChanges == 2) {
87         testFailed("Invalid event fired on same state change.");
88         finishTest();
89         return;
90     } else if (numVisibilityChanges == 3) {
91         checkIsPagePrerendering();
92         numVisibilityChanges++;
93         makePageVisible();
94         return;
95     } else if (numVisibilityChanges == 4) {
96         checkIsPageVisible();
97         numVisibilityChanges++;
98         makePageUnloaded();
99         return;
100     } else if (numVisibilityChanges == 5) {
101         checkIsPageInUnloaded();
102         numVisibilityChanges++;
103         makePageVisible();
104         return;
105     } else if (numVisibilityChanges == 6) {
106         checkIsPageVisible();
107         numVisibilityChanges++;
108         finishTest();
109         return;
110     } else {
111         testFailed("Too many visibility transitions");
112         finishTest();
113         return;
114     }
115 }
116
117 </script>
118
119 <script src="../../resources/js-test-post.js"></script>
120
121 </body>
122 </html>