4 <script src="../resources/testharness.js"></script>
5 <script src="../resources/testharnessreport.js"></script>
6 <iframe src='about:blank'></iframe>
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.");
15 var orientationChangeEventListenerCalls = 0;
16 var orientationChangeEventListenerCallsForFrame = 0;
18 screen.orientation.addEventListener('change', function() {
19 orientationChangeEventListenerCalls++;
22 window.frames[0].screen.orientation.addEventListener('change', function() {
23 orientationChangeEventListenerCallsForFrame++;
26 function runEventVisibleTest() {
27 eventVisibleTest.step(function() {
28 assert_false(document.hidden);
31 if (window.testRunner)
32 window.testRunner.setMockScreenOrientation("landscape-primary");
34 setTimeout(function() {
35 eventVisibleTest.step(function() {
36 assert_equals(orientationChangeEventListenerCalls, 1);
37 assert_equals(screen.orientation.type, "landscape-primary");
39 eventVisibleTest.done();
41 runNoEventHiddenTest();
45 function runNoEventHiddenTest() {
46 if (window.testRunner)
47 testRunner.setPageVisibility("hidden");
49 noEventHiddenTest.step(function() {
50 assert_true(document.hidden);
53 if (window.testRunner)
54 window.testRunner.setMockScreenOrientation("portrait-primary");
56 setTimeout(function() {
57 noEventHiddenTest.step(function() {
58 assert_equals(orientationChangeEventListenerCalls, 1);
60 noEventHiddenTest.done();
62 runOrientationUnchangeHiddenTest();
66 function runOrientationUnchangeHiddenTest() {
67 orientationUnchangeHiddenTest.step(function() {
68 assert_equals(screen.orientation.type, "landscape-primary");
70 orientationUnchangeHiddenTest.done();
72 runOrientationUpdateVisibleTest();
75 function runOrientationUpdateVisibleTest() {
76 if (window.testRunner)
77 testRunner.setPageVisibility("visible");
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");
88 orientationUpdateVisibleTest.done();
94 function runFrameEventsTest() {
95 frameEventsTest.step(function() {
96 assert_equals(orientationChangeEventListenerCallsForFrame, orientationChangeEventListenerCalls);
98 frameEventsTest.done();
101 runEventVisibleTest();