[Release] Webkit-EFL Ver. 2.0_beta_118996_0.6.22
[framework/web/webkit-efl.git] / LayoutTests / fast / events / page-visibility-iframe-propagation-test.html
1 <html>
2 <body>
3
4 <script src="../js/resources/js-test-pre.js"></script>
5
6 <script>
7
8 description("This test checks that Page Visibility state events are propagated to child frames.");
9
10 var jsTestIsAsync = true;
11
12 function makePageVisible() {
13     if (window.layoutTestController)
14         layoutTestController.setPageVisibility("visible");
15 }
16
17 function makePageHidden() {
18     if (window.layoutTestController)
19         layoutTestController.setPageVisibility("hidden");
20 }
21
22 function checkIsPageVisible() {
23     debug("Main Page:");
24     shouldBeEqualToString("document.webkitVisibilityState", "visible");
25     shouldBeFalse("document.webkitHidden");
26 }
27
28 function checkIsPageHidden() {
29     debug("Main Page:");
30     shouldBeEqualToString("document.webkitVisibilityState", "hidden");
31     shouldBeTrue("document.webkitHidden");
32 }
33
34 function checkIsChildFrameVisible() {
35     debug("Child Frame:");
36     shouldBeEqualToString("childFrame.contentDocument.webkitVisibilityState",
37                           "visible");
38     shouldBeFalse("childFrame.contentDocument.webkitHidden");
39 }
40
41 function checkIsChildFrameHidden() {
42     debug("Child Frame:");
43     shouldBeEqualToString("childFrame.contentDocument.webkitVisibilityState",
44                           "hidden");
45     shouldBeTrue("childFrame.contentDocument.webkitHidden");
46 }
47
48 // We will try to change the visibility states as:
49 //  0 - visible. (Initial - i.e. on load).
50 //  1 - hidden
51 //  2 - visible
52 var numVisibilityChanges = 0;
53
54 var childFrame;
55
56 function startTest() {
57     childFrame = document.getElementById("childFrame");
58     childFrame.contentDocument.addEventListener(
59         "webkitvisibilitychange", onChildFrameVisibilityChange, false);
60     document.addEventListener("webkitvisibilitychange",
61                               onVisibilityChange, false);
62
63     checkIsPageVisible();
64     checkIsChildFrameVisible();
65
66     numVisibilityChanges++;
67     makePageHidden();
68 }
69
70 var numFinishes = 0;
71 function finishTest() {
72     numFinishes++;
73     if (numFinishes < 2) {
74       return;
75     }
76
77     if (window.layoutTestController) {
78         layoutTestController.resetPageVisibility();
79     }
80     finishJSTest();
81 }
82
83 function onVisibilityChange() {
84     if (numVisibilityChanges == 1) {
85         checkIsPageHidden();
86         return;
87     } else if (numVisibilityChanges == 2) {
88         checkIsPageVisible();
89         finishTest();
90         return;
91     } else {
92         testFailed("Too many visibility transitions");
93         finishTest();
94         return;
95     }
96 }
97
98 function onChildFrameVisibilityChange() {
99     if (numVisibilityChanges == 1) {
100         checkIsChildFrameHidden();
101         numVisibilityChanges++;
102         makePageVisible();
103         return;
104     } else if (numVisibilityChanges == 2) {
105         checkIsChildFrameVisible();
106         finishTest();
107         return;
108     } else {
109         testFailed("Child Frame: Too many visibility transitions");
110         finishTest();
111     }
112 }
113
114 </script>
115
116 <script src="../js/resources/js-test-post.js"></script>
117
118 <iframe id="childFrame" onload="startTest()"></iframe>
119 </body>
120 </html>