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