mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-05 08:35:26 +00:00
130 lines
4.4 KiB
HTML
130 lines
4.4 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Test policies for Bug 1101288</title>
|
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
|
|
<!--
|
|
This checks if the right policies are applied from a given string when the policy is changed after the document has been loaded.
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=1101288
|
|
-->
|
|
<script type="application/javascript;version=1.7">
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
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();
|
|
}
|
|
});
|
|
|
|
/**
|
|
* helper to perform an XHR.
|
|
*/
|
|
function doXHR(aUrl, onSuccess, onFail) {
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.responseType = "json";
|
|
xhr.onload = function () {
|
|
onSuccess(xhr);
|
|
};
|
|
xhr.onerror = function () {
|
|
onFail(xhr);
|
|
};
|
|
xhr.open('GET', aUrl, true);
|
|
xhr.send(null);
|
|
}
|
|
|
|
/**
|
|
* Grabs the results via XHR and passes to checker.
|
|
*/
|
|
function checkIndividualResults(aTestname, aExpectedReferrer, aName) {
|
|
doXHR('/tests/dom/base/test/referrer_change_server.sjs?action=get-test-results',
|
|
function(xhr) {
|
|
var results = xhr.response;
|
|
info(JSON.stringify(xhr.response));
|
|
|
|
for (i in aName) {
|
|
ok(aName[i] in results.tests, aName[i] + " tests have to be performed.");
|
|
is(results.tests[aName[i]].policy, aExpectedReferrer[i], aTestname + ' --- ' + results.tests[aName[i]].policy + ' (' + results.tests[aName[i]].referrer + ')');
|
|
}
|
|
advance();
|
|
},
|
|
function(xhr) {
|
|
ok(false, "Can't get results from the counter server.");
|
|
SimpleTest.finish();
|
|
});
|
|
}
|
|
|
|
function resetState() {
|
|
doXHR('/tests/dom/base/test/referrer_change_server.sjs?action=resetState',
|
|
advance,
|
|
function(xhr) {
|
|
ok(false, "error in reset state");
|
|
SimpleTest.finish();
|
|
});
|
|
}
|
|
|
|
|
|
/**
|
|
* This is the main test routine -- serialized by use of a generator.
|
|
* It resets the counter, then performs two tests in sequence using
|
|
* the same iframe.
|
|
*/
|
|
var tests = (function() {
|
|
var iframe = document.getElementById("testframe");
|
|
var sjs = "/tests/dom/base/test/referrer_change_server.sjs?action=generate-policy-test";
|
|
|
|
yield resetState();
|
|
var name = "no-referrer-unsafe-url";
|
|
yield iframe.src = sjs + "&policy=" + escape('no-referrer') + "&name=" + name + "&newPolicy=" + escape('unsafe-url');
|
|
yield checkIndividualResults("unsafe-url (changed) with no-referrer first", ["full"], [name+'unsafe-url']);
|
|
|
|
yield resetState();
|
|
var name = "origin-no-referrer";
|
|
yield iframe.src = sjs + "&policy=" + escape('origin') + "&name=" + name + "&newPolicy=" + escape('no-referrer');
|
|
yield checkIndividualResults("no-referrer (changed) with origin first", ["none"], [name+'no-referrer']);
|
|
|
|
yield resetState();
|
|
var name = "unsafe-url-no-referrer";
|
|
yield iframe.src = sjs + "&policy=" + escape('unsafe-url') + "&name=" + name + "&newPolicy=" + escape('no-referrer');
|
|
yield checkIndividualResults("no-referrer (changed) with unsafe-url first", ["none"], [name+'no-referrer']);
|
|
|
|
sjs = "/tests/dom/base/test/referrer_change_server.sjs?action=generate-policy-test2";
|
|
|
|
yield resetState();
|
|
var name = "no-referrer-unsafe-url";
|
|
yield iframe.src = sjs + "&policy=" + escape('no-referrer') + "&name=" + name + "&newPolicy=" + escape('unsafe-url');
|
|
yield checkIndividualResults("unsafe-url (changed) with no-referrer first", ["full"], [name+'unsafe-url']);
|
|
|
|
yield resetState();
|
|
var name = "origin-no-referrer";
|
|
yield iframe.src = sjs + "&policy=" + escape('origin') + "&name=" + name + "&newPolicy=" + escape('no-referrer');
|
|
yield checkIndividualResults("no-referrer (changed) with origin first", ["none"], [name+'no-referrer']);
|
|
|
|
yield resetState();
|
|
var name = "unsafe-url-no-referrer";
|
|
yield iframe.src = sjs + "&policy=" + escape('unsafe-url') + "&name=" + name + "&newPolicy=" + escape('no-referrer');
|
|
yield checkIndividualResults("no-referrer (changed) with unsafe-url first", ["none"], [name+'no-referrer']);
|
|
|
|
// 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>
|
|
|