Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / screen_orientation / page-visibility.html
1 <!DOCTYPE html>
2 <html>
3 <body>
4 <script src="../resources/testharness.js"></script>
5 <script src="../resources/testharnessreport.js"></script>
6 <iframe src='about:blank'></iframe>
7 <script>
8
9 var eventVisibleTest = async_test("Test that a change event is fired when the page is visible.");
10 var noEventHiddenTest = async_test("Test that change event is not fired when the page is not visible.");
11 var orientationUnchangeHiddenTest = async_test("Test that screen.orientation keeps returning the same orientation when the page is not visible.");
12 var orientationUpdateVisibleTest = async_test("Test that screen.orientation is updated once the page is visible again.");
13 var frameEventsTest = async_test("Test that the iframe got as many events as the main frame.");
14
15 var orientationChangeEventListenerCalls = 0;
16 var orientationChangeEventListenerCallsForFrame = 0;
17
18 screen.orientation.addEventListener('change', function() {
19     orientationChangeEventListenerCalls++;
20 });
21
22 window.frames[0].screen.orientation.addEventListener('change', function() {
23     orientationChangeEventListenerCallsForFrame++;
24 });
25
26 function runEventVisibleTest() {
27     eventVisibleTest.step(function() {
28         assert_false(document.hidden);
29     });
30
31     if (window.testRunner)
32         window.testRunner.setMockScreenOrientation("landscape-primary");
33
34     setTimeout(function() {
35         eventVisibleTest.step(function() {
36             assert_equals(orientationChangeEventListenerCalls, 1);
37             assert_equals(screen.orientation.type, "landscape-primary");
38         });
39         eventVisibleTest.done();
40
41         runNoEventHiddenTest();
42     });
43 }
44
45 function runNoEventHiddenTest() {
46     if (window.testRunner)
47         testRunner.setPageVisibility("hidden");
48
49     noEventHiddenTest.step(function() {
50         assert_true(document.hidden);
51     });
52
53     if (window.testRunner)
54         window.testRunner.setMockScreenOrientation("portrait-primary");
55
56     setTimeout(function() {
57         noEventHiddenTest.step(function() {
58             assert_equals(orientationChangeEventListenerCalls, 1);
59         });
60         noEventHiddenTest.done();
61
62         runOrientationUnchangeHiddenTest();
63     });
64 }
65
66 function runOrientationUnchangeHiddenTest() {
67     orientationUnchangeHiddenTest.step(function() {
68         assert_equals(screen.orientation.type, "landscape-primary");
69     });
70     orientationUnchangeHiddenTest.done();
71
72     runOrientationUpdateVisibleTest();
73 }
74
75 function runOrientationUpdateVisibleTest() {
76     if (window.testRunner)
77         testRunner.setPageVisibility("visible");
78
79     setTimeout(function() {
80         orientationUpdateVisibleTest.step(function() {
81             assert_false(document.hidden);
82             // A change event should have been fired.
83             assert_equals(orientationChangeEventListenerCalls, 2);
84             // Should keep returning the start returning the orientation value.
85             assert_equals(screen.orientation.type, "portrait-primary");
86         });
87
88         orientationUpdateVisibleTest.done();
89
90         runFrameEventsTest();
91     });
92 }
93
94 function runFrameEventsTest() {
95     frameEventsTest.step(function() {
96         assert_equals(orientationChangeEventListenerCallsForFrame, orientationChangeEventListenerCalls);
97     });
98     frameEventsTest.done();
99 }
100
101 runEventVisibleTest();
102
103 </script>
104 </body>
105 </html>