mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 22:01:30 +00:00
Bug 1163743 - Test changes for changing origin-when-crossorigin to origin-when-cross-origin. r=sstamm
This commit is contained in:
parent
7f55aa3206
commit
9533a4e3f4
@ -49,19 +49,19 @@ let _referrerTests = [
|
|||||||
rel: "noreferrer",
|
rel: "noreferrer",
|
||||||
result: "" // rel=noreferrer trumps meta-referrer
|
result: "" // rel=noreferrer trumps meta-referrer
|
||||||
},
|
},
|
||||||
// 3. Origin-when-crossorigin policy - this depends on the triggering
|
// 3. Origin-when-cross-origin policy - this depends on the triggering
|
||||||
// principal. We expect full referrer for same-origin requests,
|
// principal. We expect full referrer for same-origin requests,
|
||||||
// and origin referrer for cross-origin requests.
|
// and origin referrer for cross-origin requests.
|
||||||
{
|
{
|
||||||
fromScheme: "https://",
|
fromScheme: "https://",
|
||||||
toScheme: "https://",
|
toScheme: "https://",
|
||||||
policy: "origin-when-crossorigin",
|
policy: "origin-when-cross-origin",
|
||||||
result: "https://test1.example.com/browser" // same origin
|
result: "https://test1.example.com/browser" // same origin
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fromScheme: "http://",
|
fromScheme: "http://",
|
||||||
toScheme: "https://",
|
toScheme: "https://",
|
||||||
policy: "origin-when-crossorigin",
|
policy: "origin-when-cross-origin",
|
||||||
result: "http://test1.example.com" // cross origin
|
result: "http://test1.example.com" // cross origin
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
@ -44,7 +44,7 @@ var testData = {
|
|||||||
'crossorigin': 'origin',
|
'crossorigin': 'origin',
|
||||||
'downgrade': 'origin' }},
|
'downgrade': 'origin' }},
|
||||||
|
|
||||||
'origin-when-crossorigin': { 'csp': "script-src * 'unsafe-inline'; referrer origin-when-crossorigin",
|
'origin-when-cross-origin': { 'csp': "script-src * 'unsafe-inline'; referrer origin-when-cross-origin",
|
||||||
'expected': { 'sameorigin': 'full',
|
'expected': { 'sameorigin': 'full',
|
||||||
'crossorigin': 'origin',
|
'crossorigin': 'origin',
|
||||||
'downgrade': 'origin' }},
|
'downgrade': 'origin' }},
|
||||||
|
@ -242,6 +242,7 @@ support-files =
|
|||||||
w3element_traversal.svg
|
w3element_traversal.svg
|
||||||
wholeTexty-helper.xml
|
wholeTexty-helper.xml
|
||||||
file_nonascii_blob_url.html
|
file_nonascii_blob_url.html
|
||||||
|
referrerHelper.js
|
||||||
|
|
||||||
[test_anonymousContent_api.html]
|
[test_anonymousContent_api.html]
|
||||||
[test_anonymousContent_append_after_reflow.html]
|
[test_anonymousContent_append_after_reflow.html]
|
||||||
@ -613,6 +614,7 @@ skip-if = buildapp == 'b2g'
|
|||||||
[test_bug704320.html]
|
[test_bug704320.html]
|
||||||
skip-if = buildapp == 'b2g' || toolkit == 'android' || e10s # b2g (Needs multiple window.open support) android(times out, bug 1100609) e10s(randomly fails, bug 1100362)
|
skip-if = buildapp == 'b2g' || toolkit == 'android' || e10s # b2g (Needs multiple window.open support) android(times out, bug 1100609) e10s(randomly fails, bug 1100362)
|
||||||
[test_bug704320_policyset.html]
|
[test_bug704320_policyset.html]
|
||||||
|
support-files = referrerHelper.js
|
||||||
[test_bug704320_preload.html]
|
[test_bug704320_preload.html]
|
||||||
[test_bug707142.html]
|
[test_bug707142.html]
|
||||||
[test_bug708620.html]
|
[test_bug708620.html]
|
||||||
@ -665,6 +667,8 @@ skip-if = buildapp == 'mulet' || buildapp == 'b2g' || toolkit == 'android' || e1
|
|||||||
[test_bug1075702.html]
|
[test_bug1075702.html]
|
||||||
[test_bug1101364.html]
|
[test_bug1101364.html]
|
||||||
skip-if = buildapp == 'mulet' || buildapp == 'b2g' || toolkit == 'android'
|
skip-if = buildapp == 'mulet' || buildapp == 'b2g' || toolkit == 'android'
|
||||||
|
[test_bug1163743.html]
|
||||||
|
support-files = referrerHelper.js
|
||||||
[test_caretPositionFromPoint.html]
|
[test_caretPositionFromPoint.html]
|
||||||
[test_classList.html]
|
[test_classList.html]
|
||||||
# This test fails on the Mac for some reason
|
# This test fails on the Mac for some reason
|
||||||
|
76
dom/base/test/referrerHelper.js
Normal file
76
dom/base/test/referrerHelper.js
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
/**
|
||||||
|
* Listen for notifications from the child.
|
||||||
|
* These are sent in case of error, or when the loads we await have completed.
|
||||||
|
*/
|
||||||
|
window.addEventListener("message", function(event) {
|
||||||
|
if (event.data == "childLoadComplete") {
|
||||||
|
// all loads happen, continue the test.
|
||||||
|
advance();
|
||||||
|
} else if (event.data == "childOverload") {
|
||||||
|
// too many loads happened in a test frame, abort.
|
||||||
|
ok(false, "Too many load handlers called in test.");
|
||||||
|
SimpleTest.finish();
|
||||||
|
} else if (event.data.indexOf("fail-") == 0) {
|
||||||
|
// something else failed in the test frame, abort.
|
||||||
|
ok(false, "Child failed the test with error " + event.data.substr(5));
|
||||||
|
SimpleTest.finish();
|
||||||
|
}});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* helper to perform an XHR.
|
||||||
|
* Used by resetCounter() and checkResults().
|
||||||
|
*/
|
||||||
|
function doXHR(url, onSuccess, onFail) {
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
xhr.onload = function () {
|
||||||
|
if (xhr.status == 200) {
|
||||||
|
onSuccess(xhr);
|
||||||
|
} else {
|
||||||
|
onFail(xhr);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
xhr.open('GET', url, true);
|
||||||
|
xhr.send(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This triggers state-resetting on the counter server.
|
||||||
|
*/
|
||||||
|
function resetCounter() {
|
||||||
|
doXHR('/tests/dom/base/test/bug704320_counter.sjs?reset',
|
||||||
|
advance,
|
||||||
|
function(xhr) {
|
||||||
|
ok(false, "Need to be able to reset the request counter");
|
||||||
|
SimpleTest.finish();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Grabs the results via XHR and passes to checker.
|
||||||
|
*/
|
||||||
|
function checkResults(testname, expected) {
|
||||||
|
doXHR('/tests/dom/base/test/bug704320_counter.sjs?results',
|
||||||
|
function(xhr) {
|
||||||
|
var results = JSON.parse(xhr.responseText);
|
||||||
|
info(xhr.responseText);
|
||||||
|
|
||||||
|
ok('img' in results,
|
||||||
|
testname + " test: some image loads required in results object.");
|
||||||
|
is(results['img'].count, 2,
|
||||||
|
testname + " Test: Expected 2 loads for image requests.");
|
||||||
|
|
||||||
|
expected.forEach(function (ref) {
|
||||||
|
ok(results['img'].referrers.indexOf(ref) >= 0,
|
||||||
|
testname + " Test: Expected " + ref + " referrer policy in test, results were " +
|
||||||
|
JSON.stringify(results['img'].referrers) +".");
|
||||||
|
});
|
||||||
|
advance();
|
||||||
|
},
|
||||||
|
function(xhr) {
|
||||||
|
ok(false, "Can't get results from the counter server.");
|
||||||
|
SimpleTest.finish();
|
||||||
|
});
|
||||||
|
}
|
@ -5,7 +5,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1091883
|
|||||||
-->
|
-->
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="referrer" content="origin-when-crossorigin">
|
<meta name="referrer" content="origin-when-cross-origin">
|
||||||
<title>Test for Bug 1091883</title>
|
<title>Test for Bug 1091883</title>
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||||
@ -26,7 +26,7 @@ var numOrigins = origins.length;
|
|||||||
// includes a "frame" that includes a "subframe"; and then this test
|
// includes a "frame" that includes a "subframe"; and then this test
|
||||||
// navigates this "subframe" to the "target". Both the referrer and
|
// navigates this "subframe" to the "target". Both the referrer and
|
||||||
// the triggering principal are this test, i.e., "http://mochi.test:8888".
|
// the triggering principal are this test, i.e., "http://mochi.test:8888".
|
||||||
// Since the referrer policy is origin-when-crossorigin, we expect to have
|
// Since the referrer policy is origin-when-cross-origin, we expect to have
|
||||||
// a full referrer if and only if the target is also "http://mochi.test:8888";
|
// a full referrer if and only if the target is also "http://mochi.test:8888";
|
||||||
// in all other cases, the referrer needs to be the origin alone.
|
// in all other cases, the referrer needs to be the origin alone.
|
||||||
var numTests = numOrigins * numOrigins * numOrigins;
|
var numTests = numOrigins * numOrigins * numOrigins;
|
||||||
|
44
dom/base/test/test_bug1163743.html
Normal file
44
dom/base/test/test_bug1163743.html
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<!--
|
||||||
|
This checks if the origin-when-crossorigin policy works.
|
||||||
|
https://bugzilla.mozilla.org/show_bug.cgi?id=1163743
|
||||||
|
-->
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Test policies for Bug 1163743</title>
|
||||||
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||||
|
<script type="application/javascript" src="referrerHelper.js"></script>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||||
|
|
||||||
|
<script type="application/javascript;version=1.7">
|
||||||
|
|
||||||
|
SimpleTest.waitForExplicitFinish();
|
||||||
|
var advance = function() { tests.next(); };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* testing legacy support for origin-when-crossorigin (1163743)
|
||||||
|
*/
|
||||||
|
var tests = (function() {
|
||||||
|
var iframe = document.getElementById("testframe");
|
||||||
|
const sjs = "/tests/dom/base/test/bug704320.sjs?action=generate-policy-test";
|
||||||
|
|
||||||
|
// origin when crossorigin (trimming whitespace)
|
||||||
|
yield resetCounter();
|
||||||
|
yield iframe.src = sjs + "&policy=" + escape(' origin-when-crossorigin');
|
||||||
|
yield checkResults("origin-when-cross-origin", ["origin", "full"]);
|
||||||
|
|
||||||
|
// complete. Be sure to yield so we don't call this twice.
|
||||||
|
yield SimpleTest.finish();
|
||||||
|
})();
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body onload="tests.next();">
|
||||||
|
<iframe id="testframe"></iframe>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -26,25 +26,25 @@ var testIframeUrls = [
|
|||||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=no-referrer',
|
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=no-referrer',
|
||||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=unsafe-url',
|
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=unsafe-url',
|
||||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=origin',
|
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=origin',
|
||||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=origin-when-crossorigin',
|
'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',
|
||||||
// HTTP to HTTPS
|
// HTTP to HTTPS
|
||||||
'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',
|
'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',
|
||||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=no-referrer',
|
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=no-referrer',
|
||||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url',
|
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url',
|
||||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=origin',
|
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=origin',
|
||||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=origin-when-crossorigin',
|
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=origin-when-cross-origin',
|
||||||
// HTTPS to HTTP
|
// HTTPS to HTTP
|
||||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=no-referrer-when-downgrade',
|
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=no-referrer-when-downgrade',
|
||||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=no-referrer',
|
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=no-referrer',
|
||||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=unsafe-url',
|
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=unsafe-url',
|
||||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=origin',
|
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=origin',
|
||||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=origin-when-crossorigin',
|
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=origin-when-cross-origin',
|
||||||
// HTTPS to HTTPS
|
// HTTPS to HTTPS
|
||||||
'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',
|
'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',
|
||||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=no-referrer',
|
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=no-referrer',
|
||||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=unsafe-url',
|
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=unsafe-url',
|
||||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=origin',
|
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=origin',
|
||||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=origin-when-crossorigin'
|
'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'
|
||||||
];
|
];
|
||||||
|
|
||||||
var expectedResults = {
|
var expectedResults = {
|
||||||
@ -58,14 +58,14 @@ var expectedResults = {
|
|||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': '',
|
'unsafe-url': '',
|
||||||
'origin': '',
|
'origin': '',
|
||||||
'origin-when-crossorigin': '',
|
'origin-when-cross-origin': '',
|
||||||
'no-referrer-when-downgrade': ''
|
'no-referrer-when-downgrade': ''
|
||||||
},
|
},
|
||||||
'http-to-https': {
|
'http-to-https': {
|
||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url',
|
'unsafe-url': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url',
|
||||||
'origin': 'http://example.com',
|
'origin': 'http://example.com',
|
||||||
'origin-when-crossorigin': 'http://example.com',
|
'origin-when-cross-origin': 'http://example.com',
|
||||||
'no-referrer-when-downgrade': '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'
|
'no-referrer-when-downgrade': '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'
|
||||||
},
|
},
|
||||||
// Encrypted and not same-origin
|
// Encrypted and not same-origin
|
||||||
@ -73,7 +73,7 @@ var expectedResults = {
|
|||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': '',
|
'unsafe-url': '',
|
||||||
'origin': '',
|
'origin': '',
|
||||||
'origin-when-crossorigin': '',
|
'origin-when-cross-origin': '',
|
||||||
'no-referrer-when-downgrade': ''
|
'no-referrer-when-downgrade': ''
|
||||||
},
|
},
|
||||||
// Encrypted
|
// Encrypted
|
||||||
@ -81,7 +81,7 @@ var expectedResults = {
|
|||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': '',
|
'unsafe-url': '',
|
||||||
'origin': '',
|
'origin': '',
|
||||||
'origin-when-crossorigin': '',
|
'origin-when-cross-origin': '',
|
||||||
'no-referrer-when-downgrade': ''
|
'no-referrer-when-downgrade': ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -91,28 +91,28 @@ var expectedResults = {
|
|||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': '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',
|
'unsafe-url': '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',
|
||||||
'origin': 'http://example.com',
|
'origin': 'http://example.com',
|
||||||
'origin-when-crossorigin': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=origin-when-crossorigin&type=form',
|
'origin-when-cross-origin': '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',
|
||||||
'no-referrer-when-downgrade': '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'
|
'no-referrer-when-downgrade': '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'
|
||||||
},
|
},
|
||||||
'http-to-https': {
|
'http-to-https': {
|
||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': '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',
|
'unsafe-url': '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',
|
||||||
'origin': 'http://example.com',
|
'origin': 'http://example.com',
|
||||||
'origin-when-crossorigin': 'http://example.com',
|
'origin-when-cross-origin': 'http://example.com',
|
||||||
'no-referrer-when-downgrade': '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'
|
'no-referrer-when-downgrade': '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'
|
||||||
},
|
},
|
||||||
'https-to-http': {
|
'https-to-http': {
|
||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': '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',
|
'unsafe-url': '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',
|
||||||
'origin': 'https://example.com',
|
'origin': 'https://example.com',
|
||||||
'origin-when-crossorigin': 'https://example.com',
|
'origin-when-cross-origin': 'https://example.com',
|
||||||
'no-referrer-when-downgrade': ''
|
'no-referrer-when-downgrade': ''
|
||||||
},
|
},
|
||||||
'https-to-https': {
|
'https-to-https': {
|
||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': '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',
|
'unsafe-url': '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',
|
||||||
'origin': 'https://example.com',
|
'origin': 'https://example.com',
|
||||||
'origin-when-crossorigin': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=origin-when-crossorigin&type=form',
|
'origin-when-cross-origin': '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',
|
||||||
'no-referrer-when-downgrade': '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'
|
'no-referrer-when-downgrade': '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'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -122,28 +122,28 @@ var expectedResults = {
|
|||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': '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',
|
'unsafe-url': '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',
|
||||||
'origin': 'http://example.com',
|
'origin': 'http://example.com',
|
||||||
'origin-when-crossorigin': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=origin-when-crossorigin&type=window.location',
|
'origin-when-cross-origin': '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',
|
||||||
'no-referrer-when-downgrade': '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'
|
'no-referrer-when-downgrade': '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'
|
||||||
},
|
},
|
||||||
'http-to-https': {
|
'http-to-https': {
|
||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': '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',
|
'unsafe-url': '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',
|
||||||
'origin': 'http://example.com',
|
'origin': 'http://example.com',
|
||||||
'origin-when-crossorigin': 'http://example.com',
|
'origin-when-cross-origin': 'http://example.com',
|
||||||
'no-referrer-when-downgrade': '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'
|
'no-referrer-when-downgrade': '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'
|
||||||
},
|
},
|
||||||
'https-to-http': {
|
'https-to-http': {
|
||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': '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',
|
'unsafe-url': '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',
|
||||||
'origin': 'https://example.com',
|
'origin': 'https://example.com',
|
||||||
'origin-when-crossorigin': 'https://example.com',
|
'origin-when-cross-origin': 'https://example.com',
|
||||||
'no-referrer-when-downgrade': ''
|
'no-referrer-when-downgrade': ''
|
||||||
},
|
},
|
||||||
'https-to-https': {
|
'https-to-https': {
|
||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': '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',
|
'unsafe-url': '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',
|
||||||
'origin': 'https://example.com',
|
'origin': 'https://example.com',
|
||||||
'origin-when-crossorigin': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=origin-when-crossorigin&type=window.location',
|
'origin-when-cross-origin': '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',
|
||||||
'no-referrer-when-downgrade': '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'
|
'no-referrer-when-downgrade': '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'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -152,28 +152,28 @@ var expectedResults = {
|
|||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=unsafe-url',
|
'unsafe-url': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=unsafe-url',
|
||||||
'origin': 'http://example.com',
|
'origin': 'http://example.com',
|
||||||
'origin-when-crossorigin': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=origin-when-crossorigin',
|
'origin-when-cross-origin': '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',
|
||||||
'no-referrer-when-downgrade': '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'
|
'no-referrer-when-downgrade': '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'
|
||||||
},
|
},
|
||||||
'http-to-https': {
|
'http-to-https': {
|
||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url',
|
'unsafe-url': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url',
|
||||||
'origin': 'http://example.com',
|
'origin': 'http://example.com',
|
||||||
'origin-when-crossorigin': 'http://example.com',
|
'origin-when-cross-origin': 'http://example.com',
|
||||||
'no-referrer-when-downgrade': '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'
|
'no-referrer-when-downgrade': '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'
|
||||||
},
|
},
|
||||||
'https-to-http': {
|
'https-to-http': {
|
||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=unsafe-url',
|
'unsafe-url': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=unsafe-url',
|
||||||
'origin': 'https://example.com',
|
'origin': 'https://example.com',
|
||||||
'origin-when-crossorigin': 'https://example.com',
|
'origin-when-cross-origin': 'https://example.com',
|
||||||
'no-referrer-when-downgrade': ''
|
'no-referrer-when-downgrade': ''
|
||||||
},
|
},
|
||||||
'https-to-https': {
|
'https-to-https': {
|
||||||
'no-referrer': '',
|
'no-referrer': '',
|
||||||
'unsafe-url': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=unsafe-url',
|
'unsafe-url': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=unsafe-url',
|
||||||
'origin': 'https://example.com',
|
'origin': 'https://example.com',
|
||||||
'origin-when-crossorigin': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=origin-when-crossorigin',
|
'origin-when-cross-origin': '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',
|
||||||
'no-referrer-when-downgrade': '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'
|
'no-referrer-when-downgrade': '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'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=704320
|
|||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Test policies for Bug 704320</title>
|
<title>Test policies for Bug 704320</title>
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||||
|
<script type="application/javascript" src="referrerHelper.js"></script>
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||||
|
|
||||||
<script type="application/javascript;version=1.7">
|
<script type="application/javascript;version=1.7">
|
||||||
@ -16,24 +17,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=704320
|
|||||||
SimpleTest.waitForExplicitFinish();
|
SimpleTest.waitForExplicitFinish();
|
||||||
var advance = function() { tests.next(); };
|
var advance = function() { tests.next(); };
|
||||||
|
|
||||||
/**
|
|
||||||
* Listen for notifications from the child.
|
|
||||||
* These are sent in case of error, or when the loads we await have completed.
|
|
||||||
*/
|
|
||||||
window.addEventListener("message", function(event) {
|
|
||||||
if (event.data == "childLoadComplete") {
|
|
||||||
// all loads happen, continue the test.
|
|
||||||
advance();
|
|
||||||
} else if (event.data == "childOverload") {
|
|
||||||
// too many loads happened in a test frame, abort.
|
|
||||||
ok(false, "Too many load handlers called in test.");
|
|
||||||
SimpleTest.finish();
|
|
||||||
} else if (event.data.indexOf("fail-") == 0) {
|
|
||||||
// something else failed in the test frame, abort.
|
|
||||||
ok(false, "Child failed the test with error " + event.data.substr(5));
|
|
||||||
SimpleTest.finish();
|
|
||||||
}});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the main test routine -- serialized by use of a generator.
|
* This is the main test routine -- serialized by use of a generator.
|
||||||
* It resets the counter, then performs two tests in sequence using
|
* It resets the counter, then performs two tests in sequence using
|
||||||
@ -82,8 +65,8 @@ var tests = (function() {
|
|||||||
|
|
||||||
// origin when cross-origin (trimming whitespace)
|
// origin when cross-origin (trimming whitespace)
|
||||||
yield resetCounter();
|
yield resetCounter();
|
||||||
yield iframe.src = sjs + "&policy=" + escape(' origin-when-crossorigin');
|
yield iframe.src = sjs + "&policy=" + escape(' origin-when-cross-origin');
|
||||||
yield checkResults("origin-when-crossorigin", ["origin", "full"]);
|
yield checkResults("origin-when-cross-origin", ["origin", "full"]);
|
||||||
|
|
||||||
// according to the spec section 4.1:
|
// according to the spec section 4.1:
|
||||||
// "If the meta element lacks a content attribute, or if that attribute’s
|
// "If the meta element lacks a content attribute, or if that attribute’s
|
||||||
@ -109,65 +92,6 @@ var tests = (function() {
|
|||||||
yield SimpleTest.finish();
|
yield SimpleTest.finish();
|
||||||
})();
|
})();
|
||||||
|
|
||||||
// Helper functions below.
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* helper to perform an XHR.
|
|
||||||
* Used by resetCounter() and checkResults().
|
|
||||||
*/
|
|
||||||
function doXHR(url, onSuccess, onFail) {
|
|
||||||
var xhr = new XMLHttpRequest();
|
|
||||||
xhr.onload = function () {
|
|
||||||
if (xhr.status == 200) {
|
|
||||||
onSuccess(xhr);
|
|
||||||
} else {
|
|
||||||
onFail(xhr);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
xhr.open('GET', url, true);
|
|
||||||
xhr.send(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This triggers state-resetting on the counter server.
|
|
||||||
*/
|
|
||||||
function resetCounter() {
|
|
||||||
doXHR('/tests/dom/base/test/bug704320_counter.sjs?reset',
|
|
||||||
advance,
|
|
||||||
function(xhr) {
|
|
||||||
ok(false, "Need to be able to reset the request counter");
|
|
||||||
SimpleTest.finish();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Grabs the results via XHR and passes to checker.
|
|
||||||
*/
|
|
||||||
function checkResults(testname, expected) {
|
|
||||||
doXHR('/tests/dom/base/test/bug704320_counter.sjs?results',
|
|
||||||
function(xhr) {
|
|
||||||
var results = JSON.parse(xhr.responseText);
|
|
||||||
info(xhr.responseText);
|
|
||||||
|
|
||||||
ok('img' in results,
|
|
||||||
testname + " test: some image loads required in results object.");
|
|
||||||
is(results['img'].count, 2,
|
|
||||||
testname + " Test: Expected 2 loads for image requests.");
|
|
||||||
|
|
||||||
expected.forEach(function (ref) {
|
|
||||||
ok(results['img'].referrers.indexOf(ref) >= 0,
|
|
||||||
testname + " Test: Expected " + ref + " referrer policy in test, results were " +
|
|
||||||
JSON.stringify(results['img'].referrers) +".");
|
|
||||||
});
|
|
||||||
advance();
|
|
||||||
},
|
|
||||||
function(xhr) {
|
|
||||||
ok(false, "Can't get results from the counter server.");
|
|
||||||
SimpleTest.finish();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user