зеркало из https://github.com/mozilla/gecko-dev.git
91 строка
2.0 KiB
Plaintext
91 строка
2.0 KiB
Plaintext
|
jsURL = "javascript:" + escape('window.parent.postMessage("JS uri ran", "*");\
|
||
|
return \'\
|
||
|
<script>\
|
||
|
window.parent.postMessage("Able to access private: " +\
|
||
|
window.parent.private, "*");\
|
||
|
</script>\'');
|
||
|
dataURL = "data:text/html," + escape('<!DOCTYPE HTML>\
|
||
|
<script>\
|
||
|
try {\
|
||
|
window.parent.postMessage("Able to access private: " +\
|
||
|
window.parent.private, "*");\
|
||
|
}\
|
||
|
catch (e) {\
|
||
|
window.parent.postMessage("pass", "*");\
|
||
|
}\
|
||
|
</script>');
|
||
|
|
||
|
tests = [
|
||
|
// Plain document should work as normal
|
||
|
'<!DOCTYPE HTML>\
|
||
|
<script>\
|
||
|
try {\
|
||
|
window.parent.private;\
|
||
|
window.parent.postMessage("pass", "*");\
|
||
|
}\
|
||
|
catch (e) {\
|
||
|
window.parent.postMessage("Unble to access private", "*");\
|
||
|
}\
|
||
|
</script>',
|
||
|
|
||
|
// refresh to plain doc
|
||
|
{ refresh: "file_bug475636.sjs?1",
|
||
|
doc: '<!DOCTYPE HTML>' },
|
||
|
|
||
|
// meta-refresh to plain doc
|
||
|
'<!DOCTYPE HTML>\
|
||
|
<head>\
|
||
|
<meta http-equiv="refresh" content="0; url=file_bug475636.sjs?1">\
|
||
|
</head>',
|
||
|
|
||
|
// refresh to data url
|
||
|
{ refresh: dataURL,
|
||
|
doc: '<!DOCTYPE HTML>' },
|
||
|
|
||
|
// meta-refresh to data url
|
||
|
'<!DOCTYPE HTML>\
|
||
|
<head>\
|
||
|
<meta http-equiv="refresh" content="0; url=' + dataURL + '">\
|
||
|
</head>',
|
||
|
|
||
|
// refresh to js url should not be followed
|
||
|
{ refresh: jsURL,
|
||
|
doc:
|
||
|
'<!DOCTYPE HTML>\
|
||
|
<script>\
|
||
|
setTimeout(function() {\
|
||
|
window.parent.postMessage("pass", "*");\
|
||
|
}, 2000);\
|
||
|
</script>' },
|
||
|
|
||
|
// meta refresh to js url should not be followed
|
||
|
'<!DOCTYPE HTML>\
|
||
|
<head>\
|
||
|
<meta http-equiv="refresh" content="0; url=' + jsURL + '">\
|
||
|
</head>\
|
||
|
<script>\
|
||
|
setTimeout(function() {\
|
||
|
window.parent.postMessage("pass", "*");\
|
||
|
}, 2000);\
|
||
|
</script>'
|
||
|
];
|
||
|
|
||
|
|
||
|
function handleRequest(request, response)
|
||
|
{
|
||
|
dump("@@@@@@@@@hi there: " + request.queryString + "\n");
|
||
|
test = tests[parseInt(request.queryString, 10) - 1];
|
||
|
response.setHeader("Content-Type", "text/html");
|
||
|
|
||
|
if (!test) {
|
||
|
response.write('<script>parent.postMessage("done", "*");</script>');
|
||
|
}
|
||
|
else if (typeof test == "string") {
|
||
|
response.write(test);
|
||
|
}
|
||
|
else if (test.refresh) {
|
||
|
response.setHeader("Refresh", "0; url=" + test.refresh);
|
||
|
response.write(test.doc);
|
||
|
}
|
||
|
}
|