2 * Listen for notifications from the child.
3 * These are sent in case of error, or when the loads we await have completed.
5 window.addEventListener("message", function (event) {
6 if (event.data == "childLoadComplete") {
7 // all loads happen, continue the test.
9 } else if (event.data == "childOverload") {
10 // too many loads happened in a test frame, abort.
11 ok(false, "Too many load handlers called in test.");
13 } else if (event.data.indexOf("fail-") == 0) {
14 // something else failed in the test frame, abort.
15 ok(false, "Child failed the test with error " + event.data.substr(5));
21 * helper to perform an XHR.
23 function doXHR(url, onSuccess, onFail) {
24 var xhr = new XMLHttpRequest();
25 xhr.onload = function () {
26 if (xhr.status == 200) {
32 xhr.open("GET", url, true);
37 * This triggers state-resetting on the counter server.
39 function resetCounter() {
41 "/tests/dom/base/test/bug704320_counter.sjs?reset",
44 ok(false, "Need to be able to reset the request counter");
51 * Grabs the results via XHR and passes to checker.
53 function checkIndividualResults(testname, expected) {
55 "/tests/dom/base/test/bug704320_counter.sjs?results",
57 var results = JSON.parse(xhr.responseText);
58 info(xhr.responseText);
62 testname + " test: some image loads required in results object."
67 testname + " Test: Expected 2 loads for image requests."
70 expected.forEach(function (ref) {
72 results.img.referrers.includes(ref),
76 " referrer policy in test, results were " +
77 JSON.stringify(results.img.referrers) +
84 ok(false, "Can't get results from the counter server.");
91 * Grabs the results via XHR and checks them
93 function checkExpectedGlobalResults(testName) {
94 var url = "bug704320.sjs?action=get-test-results";
98 var response = JSON.parse(xhr.response);
100 for (type in response) {
101 for (scheme in response[type]) {
102 for (policy in response[type][scheme]) {
104 EXPECTED_RESULTS[type] === undefined
105 ? EXPECTED_RESULTS.default[scheme][policy]
106 : EXPECTED_RESULTS[type][scheme][policy];
108 response[type][scheme][policy],
110 type + " " + scheme + " " + policy
118 ok(false, "Can't get results from the counter server.");
124 var EXPECTED_RESULTS = {
125 // From docshell/base/nsDocShell.cpp:
126 // "If the document containing the hyperlink being audited was not retrieved
127 // over an encrypted connection and its address does not have the same
128 // origin as "ping URL", send a referrer."
135 "origin-when-cross-origin": "",
136 "no-referrer-when-downgrade": "",
139 "strict-origin-when-cross-origin": "",
144 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url",
145 origin: "http://example.com/",
146 "origin-when-cross-origin": "http://example.com/",
147 "no-referrer-when-downgrade":
148 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=no-referrer-when-downgrade",
150 "strict-origin": "http://example.com/",
151 "strict-origin-when-cross-origin": "http://example.com/",
153 // Encrypted and not same-origin
158 "origin-when-cross-origin": "",
159 "no-referrer-when-downgrade": "",
162 "strict-origin-when-cross-origin": "",
169 "origin-when-cross-origin": "",
170 "no-referrer-when-downgrade": "",
173 "strict-origin-when-cross-origin": "",
176 // form is tested in a 2nd level iframe.
181 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=unsafe-url&type=form",
182 origin: "http://example.com/",
183 "origin-when-cross-origin":
184 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=origin-when-cross-origin&type=form",
185 "no-referrer-when-downgrade":
186 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=no-referrer-when-downgrade&type=form",
188 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=same-origin&type=form",
189 "strict-origin": "http://example.com/",
190 "strict-origin-when-cross-origin":
191 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=strict-origin-when-cross-origin&type=form",
196 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url&type=form",
197 origin: "http://example.com/",
198 "origin-when-cross-origin": "http://example.com/",
199 "no-referrer-when-downgrade":
200 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=https&policy=no-referrer-when-downgrade&type=form",
202 "strict-origin": "http://example.com/",
203 "strict-origin-when-cross-origin": "http://example.com/",
208 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=http&policy=unsafe-url&type=form",
209 origin: "https://example.com/",
210 "origin-when-cross-origin": "https://example.com/",
211 "no-referrer-when-downgrade": "",
214 "strict-origin-when-cross-origin": "",
219 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=unsafe-url&type=form",
220 origin: "https://example.com/",
221 "origin-when-cross-origin":
222 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=origin-when-cross-origin&type=form",
223 "no-referrer-when-downgrade":
224 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=no-referrer-when-downgrade&type=form",
226 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=same-origin&type=form",
227 "strict-origin": "https://example.com/",
228 "strict-origin-when-cross-origin":
229 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=strict-origin-when-cross-origin&type=form",
232 // window.location is tested in a 2nd level iframe.
237 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=unsafe-url&type=window.location",
238 origin: "http://example.com/",
239 "origin-when-cross-origin":
240 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=origin-when-cross-origin&type=window.location",
241 "no-referrer-when-downgrade":
242 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=no-referrer-when-downgrade&type=window.location",
244 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=same-origin&type=window.location",
245 "strict-origin": "http://example.com/",
246 "strict-origin-when-cross-origin":
247 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=strict-origin-when-cross-origin&type=window.location",
252 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url&type=window.location",
253 origin: "http://example.com/",
254 "origin-when-cross-origin": "http://example.com/",
255 "no-referrer-when-downgrade":
256 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=https&policy=no-referrer-when-downgrade&type=window.location",
258 "strict-origin": "http://example.com/",
259 "strict-origin-when-cross-origin": "http://example.com/",
264 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=http&policy=unsafe-url&type=window.location",
265 origin: "https://example.com/",
266 "origin-when-cross-origin": "https://example.com/",
267 "no-referrer-when-downgrade": "",
270 "strict-origin-when-cross-origin": "",
275 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=unsafe-url&type=window.location",
276 origin: "https://example.com/",
277 "origin-when-cross-origin":
278 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=origin-when-cross-origin&type=window.location",
279 "no-referrer-when-downgrade":
280 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=no-referrer-when-downgrade&type=window.location",
282 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=same-origin&type=window.location",
283 "strict-origin": "https://example.com/",
284 "strict-origin-when-cross-origin":
285 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=strict-origin-when-cross-origin&type=window.location",
292 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=unsafe-url",
293 origin: "http://example.com/",
294 "origin-when-cross-origin":
295 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=origin-when-cross-origin",
296 "no-referrer-when-downgrade":
297 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=no-referrer-when-downgrade",
299 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=same-origin",
300 "strict-origin": "http://example.com/",
301 "strict-origin-when-cross-origin":
302 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=strict-origin-when-cross-origin",
307 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url",
308 origin: "http://example.com/",
309 "origin-when-cross-origin": "http://example.com/",
310 "no-referrer-when-downgrade":
311 "http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=no-referrer-when-downgrade",
313 "strict-origin": "http://example.com/",
314 "strict-origin-when-cross-origin": "http://example.com/",
319 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=unsafe-url",
320 origin: "https://example.com/",
321 "origin-when-cross-origin": "https://example.com/",
322 "no-referrer-when-downgrade": "",
325 "strict-origin-when-cross-origin": "",
330 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=unsafe-url",
331 origin: "https://example.com/",
332 "origin-when-cross-origin":
333 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=origin-when-cross-origin",
334 "no-referrer-when-downgrade":
335 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=no-referrer-when-downgrade",
337 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=same-origin",
338 "strict-origin": "https://example.com/",
339 "strict-origin-when-cross-origin":
340 "https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=strict-origin-when-cross-origin",