no bug - Bumping Firefox l10n changesets r=release a=l10n-bump DONTBUILD CLOSED TREE
[gecko.git] / dom / workers / test / referrer_worker.html
blobf4c67199120489b241cdcd3fe2c07dcb1a6e5e7b
1 <!DOCTYPE html>
2 <html>
3 <head>
4 </head>
5 <body onload="tests.next();">
6 <script type="text/javascript">
7 const SJS = "referrer_test_server.sjs?";
8 const BASE_URL = "https://example.com/tests/dom/workers/test/" + SJS;
9 const GET_RESULT = BASE_URL + 'ACTION=get-test-results';
10 const RESET_STATE = BASE_URL + 'ACTION=resetState';
12 function ok(val, message) {
13 val = val ? "true" : "false";
14 window.parent.postMessage("SimpleTest.ok(" + val + ", '" + message + "');", "*");
17 function info(val) {
18 window.parent.postMessage("SimpleTest.info(" + val + ");", "*");
21 function is(a, b, message) {
22 ok(a == b, message);
25 function finish() {
26 // Let window.onerror have a chance to fire
27 setTimeout(function() {
28 setTimeout(function() {
29 tests.return();
30 window.parent.postMessage("SimpleTest.finish();", "*");
31 }, 0);
32 }, 0);
35 var testCases = {
36 'same-origin': { 'Referrer-Policy' : { 'default' : 'full',
37 'origin' : 'origin',
38 'origin-when-cross-origin' : 'full',
39 'unsafe-url' : 'full',
40 'same-origin' : 'full',
41 'strict-origin' : 'origin',
42 'strict-origin-when-cross-origin' : 'full',
43 'no-referrer' : 'none',
44 'unsafe-url, no-referrer' : 'none',
45 'invalid' : 'full' }},
47 'cross-origin': { 'Referrer-Policy' : { 'default' : 'origin',
48 'origin' : 'origin',
49 'origin-when-cross-origin' : 'origin',
50 'unsafe-url' : 'full',
51 'same-origin' : 'none',
52 'strict-origin' : 'origin',
53 'strict-origin-when-cross-origin' : 'origin',
54 'no-referrer' : 'none',
55 'unsafe-url, no-referrer' : 'none',
56 'invalid' : 'origin' }},
58 // Downgrading in worker is blocked entirely without unblock option
59 // https://bugzilla.mozilla.org/show_bug.cgi?id=1198078#c17
60 // Skip the downgrading test
61 /* 'downgrade': { 'Referrer-Policy' : { 'default' : 'full',
62 'origin' : 'full',
63 'origin-when-cross-origin"' : 'full',
64 'unsafe-url' : 'full',
65 'same-origin' : 'none',
66 'strict-origin' : 'none',
67 'strict-origin-when-cross-origin' : 'none',
68 'no-referrer' : 'full',
69 'unsafe-url, no-referrer' : 'none',
70 'invalid' : 'full' }}, */
75 var advance = function() { tests.next(); };
77 /**
78 * helper to perform an XHR
79 * to do checkIndividualResults and resetState
81 function doXHR(aUrl, onSuccess, onFail) {
82 var xhr = new XMLHttpRequest({mozSystem: true});
83 xhr.responseType = "json";
84 xhr.onload = function () {
85 onSuccess(xhr);
87 xhr.onerror = function () {
88 onFail(xhr);
90 xhr.open('GET', aUrl, true);
91 xhr.send(null);
95 function resetState() {
96 doXHR(RESET_STATE,
97 advance,
98 function(xhr) {
99 ok(false, "error in reset state");
100 finish();
104 function checkIndividualResults(aType, aPolicy, aExpected) {
105 var onload = xhr => {
106 var results = xhr.response;
107 dump(JSON.stringify(xhr.response));
108 // test id equals type + "-" + policy
109 // Ex: same-origin-default
110 var id = aType + "-" + aPolicy;
111 ok(id in results, id + " tests have to be performed.");
112 is(results[id].policy, aExpected, id + ' --- ' + results[id].policy + ' (' + results[id].referrer + ')');
113 advance();
115 var onerror = xhr => {
116 ok(false, "Can't get results from the counter server.");
117 finish();
119 doXHR(GET_RESULT, onload, onerror);
122 var tests = (function*() {
124 for (var type in testCases) {
125 for (var policy in testCases[type]['Referrer-Policy']) {
126 yield resetState();
127 var searchParams = new URLSearchParams();
128 searchParams.append("TYPE", type);
129 searchParams.append("ACTION", "test");
130 searchParams.append("Referrer-Policy", policy);
131 var worker = new Worker(BASE_URL + searchParams.toString());
132 worker.onmessage = function () {
133 advance();
135 yield worker.postMessage(42);
136 yield checkIndividualResults(type, policy, escape(testCases[type]['Referrer-Policy'][policy]));
140 finish();
141 })();
142 </script>
143 </body>
144 </html>