blob: 1e28707a9c84ad901017263c67960ced07b69851 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy" content="img-src 'none'; script-src 'unsafe-inline'">
<script>
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
tests = 4;
window.addEventListener("message", function(message) {
tests -= 1;
test();
}, false);
function test() {
function setImgSrc(isolated) {
var img = document.createElement('img');
document.body.appendChild(img);
img.onload = function () {
alert('LOADED in ' + (isolated ? "isolated world" : "main world"));
window.postMessage("next", "*");
};
img.onerror = function () {
alert('BLOCKED in ' + (isolated ? "isolated world" : "main world"));
window.postMessage("next", "*");
};
img.src = "../resources/abe.png";
}
function callEval(isolated) {
try {
eval("true");
alert('Called eval() in ' + (isolated ? "isolated world" : "main world"));
window.postMessage("next", "*");
} catch (error) {
console.log(error);
alert('BLOCKED eval() in ' + (isolated ? "isolated world" : "main world"));
window.postMessage("next", "*");
}
}
switch (tests) {
case 4:
setImgSrc(false);
break;
case 3:
testRunner.evaluateScriptInIsolatedWorld(1, String(setImgSrc) + "\nsetImgSrc(true);");
break;
case 2:
callEval(false);
break;
case 1:
testRunner.evaluateScriptInIsolatedWorld(1, String(callEval) + "\ncallEval(true);");
break;
case 0:
testRunner.notifyDone();
break;
}
}
</script>
</head>
<body onload='test();'>
<p>
This test ensures that scripts run in isolated worlds are affected
by the page's content security policy. Extensions, for example, should
not be able to load any resource they like.
</p>
</body>
</html>