| const sourceOrigin = "https://127.0.0.1:8443/"; |
| const crossOrigin = "https://localhost:8443/"; |
| const downgradedOrigin = "http://127.0.0.1:8000/"; |
| const fullSourceURL = "fullSourceURL"; |
| |
| // [Referrer-Policy header, expected referrer, destination origin]. |
| let tests = [ |
| ["no-referrer", "", crossOrigin], |
| ["no-referrer", "", sourceOrigin], |
| ["no-referrer", "", downgradedOrigin], |
| ["origin", sourceOrigin, crossOrigin], |
| ["origin", sourceOrigin, sourceOrigin], |
| ["origin", sourceOrigin, downgradedOrigin], |
| ["unsafe-url", fullSourceURL, crossOrigin], |
| ["unsafe-url", fullSourceURL, sourceOrigin], |
| ["unsafe-url", fullSourceURL, downgradedOrigin], |
| ["no-referrer-when-downgrade", fullSourceURL, crossOrigin], |
| ["no-referrer-when-downgrade", fullSourceURL, sourceOrigin], |
| ["no-referrer-when-downgrade", "", downgradedOrigin], |
| ["same-origin", "", crossOrigin], |
| ["same-origin", fullSourceURL, sourceOrigin], |
| ["same-origin", "", downgradedOrigin], |
| ["strict-origin", sourceOrigin, crossOrigin], |
| ["strict-origin", sourceOrigin, sourceOrigin], |
| ["strict-origin", "", downgradedOrigin], |
| ["strict-origin-when-cross-origin", sourceOrigin, crossOrigin], |
| ["strict-origin-when-cross-origin", fullSourceURL, sourceOrigin], |
| ["strict-origin-when-cross-origin", "", downgradedOrigin], |
| ["origin-when-cross-origin", sourceOrigin, crossOrigin], |
| ["origin-when-cross-origin", fullSourceURL, sourceOrigin], |
| ["origin-when-cross-origin", sourceOrigin, downgradedOrigin], |
| ["invalid", sourceOrigin, crossOrigin], |
| ["invalid", fullSourceURL, sourceOrigin], |
| ["invalid", "", downgradedOrigin], |
| ["", sourceOrigin, crossOrigin], |
| ["", fullSourceURL, sourceOrigin], |
| ["", "", downgradedOrigin], |
| ]; |
| |
| let results = new Array(tests.length); |
| let resultCount = 0; |
| |
| function printResults() |
| { |
| for (let i = 0; i < results.length; i++) { |
| let currentTest = tests[i]; |
| actualReferrer = results[i] |
| debug("Testing 'Referrer-Policy: " + currentTest[0] + "' - referrer origin: " + sourceOrigin + " - destination origin: " + currentTest[2] + " - isMultipartResponse? " + isTestingMultipart); |
| if (currentTest[1] === fullSourceURL) |
| shouldBeEqualToString("actualReferrer", sourceOrigin + "security/resources/serve-referrer-policy-and-test.py?value=" + currentTest[0] + "&destinationOrigin=" + currentTest[2] + "&isTestingMultipart=" + (isTestingMultipart ? "1" : "0") + "&id=" + i); |
| else |
| shouldBeEqualToString("actualReferrer", "" + currentTest[1]); |
| debug(""); |
| } |
| finishJSTest(); |
| } |
| |
| onmessage = (msg) => { |
| results[msg.data.id] = msg.data.referer; |
| if (++resultCount == results.length) |
| printResults(); |
| } |
| |
| function runTests(isTestingMultipart) |
| { |
| window.isTestingMultipart = isTestingMultipart; |
| for (let i = 0; i < results.length; i++) { |
| let currentTest = tests[i % tests.length]; |
| let isTestingMultipart = i >= tests.length; |
| |
| let frame = document.createElement("iframe"); |
| frame.style = "display:none"; |
| frame.src = sourceOrigin + "security/resources/serve-referrer-policy-and-test.py?value=" + currentTest[0] + "&destinationOrigin=" + currentTest[2] + "&isTestingMultipart=" + (isTestingMultipart ? "1" : "0") + "&id=" + i; |
| document.body.appendChild(frame); |
| } |
| } |