<!
DOCTYPE HTML>
<
html>
<
head>
<
title>Bug 1045891</
title>
</
head>
<
body>
<
iframe id=
"testframe"> </
iframe>
<
script type=
"text/javascript">
page_id = window.location.hash.substring(1);
function executeTest(ev) {
testframe = document.getElementById(
'testframe');
testframe.contentWindow.postMessage({id:page_id, message:
"execute"},
'http://mochi.test:8888');
}
function reportError(ev) {
window.parent.postMessage({id:page_id, message:
"blocked"},
'http://mochi.test:8888');
cleanup();
}
function recvMessage(ev) {
if (ev.data.id == page_id) {
window.parent.postMessage({id:ev.data.id, message:ev.data.message},
'http://mochi.test:8888');
cleanup();
}
}
function cleanup() {
testframe = document.getElementById(
'testframe');
window.removeEventListener(
'message', recvMessage);
testframe.removeEventListener(
'load', executeTest);
testframe.removeEventListener(
'error', reportError);
}
window.addEventListener(
'message', recvMessage);
try {
// Please note that file_testserver.sjs?foo does not return a response.
// For testing purposes this is not necessary because we only want to check
// whether CSP allows or blocks the load.
src =
"file_testserver.sjs";
src +=
"?file=" + escape(
"tests/dom/security/test/csp/file_child-src_inner_frame.html");
src +=
"#" + escape(page_id);
testframe = document.getElementById(
'testframe');
testframe.addEventListener(
'load', executeTest);
testframe.addEventListener(
'error', reportError);
testframe.src = src;
}
catch (e) {
if (e.message.match(/Failed to load
script/)) {
window.parent.postMessage({id:page_id, message:
"blocked"},
'http://mochi.test:8888');
} else {
window.parent.postMessage({id:page_id, message:
"exception"},
'http://mochi.test:8888');
}
}
</
script>
</
body>
</
html>