2 <?xml-stylesheet href=
"chrome://global/skin" type=
"text/css"?>
4 <window id=
"690056Test"
5 xmlns=
"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
8 onload=
"setTimeout(nextTest,0);"
9 title=
"bug 6500056 test">
11 <script type=
"application/javascript" src=
"chrome://mochikit/content/chrome-harness.js" />
12 <script type=
"application/javascript" src=
"docshell_helpers.js" />
13 <script type=
"application/javascript"><![CDATA[
14 var tests = testIterator();
20 // Makes sure that we fire the visibilitychange events
21 function testIterator() {
25 // Load something for a start
27 uri: 'data:text/html,
<title>initial load
</title>',
28 onNavComplete: nextTest
32 // Now load a new page
34 uri: 'data:text/html,
<title>new load
</title>',
35 eventsToListenFor: [
"pageshow",
"pagehide",
"mozvisibilitychange" ],
36 expectedEvents: [ { type:
"pagehide",
37 title:
"initial load",
39 { type:
"mozvisibilitychange",
40 title:
"initial load",
41 visibilityState:
"hidden",
43 // No visibilitychange events fired for initial pageload
46 persisted: false }, // false on initial load
48 onNavComplete: nextTest
55 eventsToListenFor: [
"pageshow",
"pagehide",
"mozvisibilitychange" ],
56 expectedEvents: [ { type:
"pagehide",
59 { type:
"mozvisibilitychange",
61 visibilityState:
"hidden",
63 { type:
"mozvisibilitychange",
64 title:
"initial load",
65 visibilityState:
"visible",
68 title:
"initial load",
71 onNavComplete: nextTest
78 eventsToListenFor: [
"pageshow",
"pagehide",
"mozvisibilitychange" ],
79 expectedEvents: [ { type:
"pagehide",
80 title:
"initial load",
82 { type:
"mozvisibilitychange",
83 title:
"initial load",
84 visibilityState:
"hidden",
86 { type:
"mozvisibilitychange",
88 visibilityState:
"visible",
94 onNavComplete: nextTest
98 function generateDetector(state, hidden, title, name) {
99 var detector = function (event) {
100 is(event.target.mozHidden, hidden,
101 name +
" hidden value does not match");
102 is(event.target.mozVisibilityState, state,
103 name +
" state value does not match");
104 is(event.target.title, title,
105 name +
" title value does not match");
106 document.getElementById(
"content")
107 .removeEventListener(
"mozvisibilitychange",
113 document.getElementById(
"content")
114 .addEventListener(
"mozvisibilitychange", detector, true);
117 generateDetector(
"hidden", true,
"new load",
"Going hidden");
119 // Now flip our docshell to not active
120 document.getElementById(
"content").docShellIsActive = false;
123 // And navigate back; there should be no visibility state transitions
126 eventsToListenFor: [
"pageshow",
"pagehide",
"mozvisibilitychange" ],
127 expectedEvents: [ { type:
"pagehide",
131 title:
"initial load",
134 unexpectedEvents: [
"mozvisibilitychange" ],
135 onNavComplete: nextTest
139 generateDetector(
"visible", false,
"initial load",
"Going visible");
141 // Now set the docshell active again
142 document.getElementById(
"content").docShellIsActive = true;
148 eventsToListenFor: [
"pageshow",
"pagehide",
"mozvisibilitychange" ],
149 expectedEvents: [ { type:
"pagehide",
150 title:
"initial load",
152 { type:
"mozvisibilitychange",
153 title:
"initial load",
154 visibilityState:
"hidden",
156 { type:
"mozvisibilitychange",
158 visibilityState:
"visible",
164 onNavComplete: nextTest
168 // Tell the framework the test is finished. Include the final 'yield'
169 // statement to prevent a StopIteration exception from being thrown.
175 <browser type=
"content-primary" flex=
"1" id=
"content" src=
"about:blank"/>