67 lines
1.6 KiB
HTML
67 lines
1.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test.js"></script>
|
|
<script>
|
|
if (window.testRunner) {
|
|
testRunner.waitUntilDone();
|
|
testRunner.dumpAsText();
|
|
}
|
|
jsTestIsAsync = true;
|
|
var count = 0;
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
function filtered(url){
|
|
var parser = document.createElement('a');
|
|
parser.href = url;
|
|
if (parser.protocol.indexOf("javascript") == -1) {
|
|
parser.click();
|
|
}
|
|
}
|
|
|
|
function unfiltered(url){
|
|
var parser = document.createElement('a');
|
|
parser.href = url;
|
|
if (parser.protocol === "javascript:") {
|
|
parser.click();
|
|
};
|
|
}
|
|
|
|
description("Tests that we properly handle JavaScript URLs containing comment characters, newlines, and carriage returns.");
|
|
|
|
let cases = [ "javascript:alert(count); ++count;",
|
|
"javascript:// A fun test%0aalert(count); ++count;",
|
|
"javascript://:%0aalert(count); ++count;",
|
|
"javascript://:%0dalert(count); ++count;",
|
|
"javascript://:%0a%0dalert(count); ++count;",
|
|
"javascript://%0a://%0dalert(count); ++count;",
|
|
"javascript://%0d//:%0aalert(count); ++count;"
|
|
];
|
|
|
|
for (var c in cases)
|
|
filtered(cases[c]);
|
|
|
|
setTimeout(function () {
|
|
if (!count)
|
|
testPassed("No JavaScript URLs executed.");
|
|
else
|
|
testFailed("JavaScript URLs were executed.")
|
|
|
|
for (var c in cases)
|
|
unfiltered(cases[c]);
|
|
|
|
setTimeout(function() {
|
|
if (count == cases.length)
|
|
testPassed("JavaScript URLs were executed.")
|
|
else
|
|
testFailed("No JavaScript URLs executed.");
|
|
|
|
finishJSTest();
|
|
}, 0);
|
|
}, 0);
|
|
</script>
|
|
</body>
|
|
</html>
|