2 <body onload='startTest()'>
4 <script src="../js/resources/js-test-pre.js"></script>
8 description("This test checks that Page Visibility state values are correct and the event changes are fired correctly.");
10 var jsTestIsAsync = true;
12 function makePageVisible() {
13 if (window.layoutTestController)
14 layoutTestController.setPageVisibility("visible");
17 function makePageHidden() {
18 if (window.layoutTestController)
19 layoutTestController.setPageVisibility("hidden");
22 function makePagePrerender() {
23 if (window.layoutTestController)
24 layoutTestController.setPageVisibility("prerender");
27 function makePagePreview() {
28 if (window.layoutTestController)
29 layoutTestController.setPageVisibility("preview");
32 function checkIsPageVisible() {
33 shouldBeEqualToString("document.webkitVisibilityState", "visible");
34 shouldBeFalse("document.webkitHidden");
37 function checkIsPageHidden() {
38 shouldBeEqualToString("document.webkitVisibilityState", "hidden");
39 shouldBeTrue("document.webkitHidden");
42 function checkIsPagePrerendering() {
43 shouldBeEqualToString("document.webkitVisibilityState", "prerender");
44 shouldBeTrue("document.webkitHidden");
47 function checkIsPageInPreview() {
48 shouldBeEqualToString("document.webkitVisibilityState", "preview");
49 shouldBeTrue("document.webkitHidden");
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 - preview (should fire event).
59 // 6 - visible (should fire event).
60 var numVisibilityChanges = 0;
62 function startTest() {
63 document.addEventListener(
64 "webkitvisibilitychange", onVisibilityChange, false);
66 numVisibilityChanges++;
70 function finishTest() {
71 if (window.layoutTestController) {
72 layoutTestController.resetPageVisibility();
77 function onVisibilityChange() {
78 if (numVisibilityChanges == 1) {
80 numVisibilityChanges++;
83 numVisibilityChanges++;
86 } else if (numVisibilityChanges == 2) {
87 testFailed("Invalid event fired on same state change.");
90 } else if (numVisibilityChanges == 3) {
91 checkIsPagePrerendering();
92 numVisibilityChanges++;
95 } else if (numVisibilityChanges == 4) {
97 numVisibilityChanges++;
100 } else if (numVisibilityChanges == 5) {
101 checkIsPageInPreview();
102 numVisibilityChanges++;
105 } else if (numVisibilityChanges == 6) {
106 checkIsPageVisible();
107 numVisibilityChanges++;
111 testFailed("Too many visibility transitions");
119 <script src="../js/resources/js-test-post.js"></script>