blob: 5740a9618ee6fb11c83550db6dc6c993180489f7 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test for setting document.location.hostname to unaccepted values</title>
</head>
<body>
<pre id="pre"></pre>
<script>
// This function will be redefined as the test cases get executed
var testCaseOnload = function() {
runOneTestThatShouldNotBeAccepted(0);
};
var iframeDocument;
function iframeOnload() {
iframeDocument = document.getElementById("targetFrame").contentDocument;
testCaseOnload();
}
function log(s) {
document.getElementById("pre").appendChild(document.createTextNode(s));
}
function runOneTestThatShouldNotBeAccepted(testIndex) {
var testCasesThatShouldNotBeAccepted = [
{ hostString : 'icl' + '\uf877' + 'oud.com', description : "'icl' + '\\uf877' + 'oud.com'" }
,{ hostString : 'icloud.com:-1', description : false }
,{ hostString : 'icloud.com:11c', description : false }
,{ hostString : 'icloud.com:11', description : false }
,{ hostString : 'icloud.com:80:', description : false }
,{ hostString : 'icloud.com:80:80', description : false }
,{ hostString : 'icloud.com:', description : false }
,{ hostString : ':80', description : false }
,{ hostString : ':', description : false }
];
if (testIndex >= testCasesThatShouldNotBeAccepted.length) {
if (window.testRunner)
testRunner.notifyDone();
} else {
// Prepare for next test case by setting testCaseOnload to load the test case
// and then load the simple HTML file that says "Before"
testCaseOnload = function () {
// Prepare test case execution by first setting testCaseOnload to check
// the test outcome and then load set the iframe's document.location.hostname
testCaseOnload = function(currentTestIndex) {
return function () {
if (iframeDocument.location.host == document.location.host) {
var currentCase = testCasesThatShouldNotBeAccepted[currentTestIndex],
description = (currentCase.description ? currentCase.description : currentCase.hostString);
log("PASS: " + description + " was not accepted.\n");
runOneTestThatShouldNotBeAccepted(currentTestIndex + 1);
} else {
// Fails may very well become 404s so this log message might not be triggered
log("FAIL: " + description + " was accepted, or at least the iframeDocument.location.host had changed to " + iframeDocument.location.host + "\n");
}
};
}(testIndex);
iframeDocument.location.hostname = testCasesThatShouldNotBeAccepted[testIndex].hostString;
};
iframeDocument.location = "./resources/set-document-location-iframe.html";
}
}
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
</script>
<iframe id="targetFrame" src="resources/set-document-location-iframe.html" onload="iframeOnload()"></iframe>
</body>
</html>