trisquel-icecat/icecat/dom/tests/mochitest/bugs/test_postmessage.html

65 lines
2.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Test for Bug 1574017</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="/tests/SimpleTest/ChromeTask.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
<script type="application/javascript">
async function waitForErrorMessage(err) {
return ChromeTask.spawn(err, async err => {
await new Promise(resolve => {
let console = Services.console;
console.reset();
console.registerListener(function listener(aMessage) {
var sourceName = `http://mochi.test:8888/tests/dom/tests/mochitest/bugs/test_postmessage.html`;
if (
aMessage.message.includes(err) &&
aMessage instanceof Ci.nsIScriptError &&
aMessage.sourceName == sourceName
) {
console.unregisterListener(listener);
resolve();
}
});
});
});
}
add_task(async function testNoCallerURI() {
var Cu = SpecialPowers.Cu;
var princ = SpecialPowers.wrap(window.document).nodePrincipal;
var sandbox = Cu.Sandbox(princ, { sameZoneAs: this });
SpecialPowers.unwrap(sandbox).win = window.frames.diffDomain;
var err = `Failed to execute postMessage on DOMWindow: The target origin provided (https://example.com) does not match the recipient windows origin (https://example.org).`;
let consolePromise = waitForErrorMessage(err);
Cu.evalInSandbox(
'win.postMessage("We should not be able to post this message", "https://example.com");',
sandbox
);
await consolePromise;
ok(true, "Error message was logged correctly to the console");
Cu.nukeSandbox(sandbox);
});
add_task(async function testWithWindowID() {
var err = `Failed to execute postMessage on DOMWindow: The target origin provided (https://example.ru) does not match the recipient windows origin (https://example.org).`;
let consolePromise = waitForErrorMessage(err);
window.frames.diffDomain.postMessage(
"The window should not receive this",
"https://example.ru"
);
await consolePromise;
ok(true, "Error message was logged correctly to the console");
});
</script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1574017">Mozilla Bug 1574017</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
</pre>
<iframe id="diffDomain" name="diffDomain" src="https://example.org/tests/dom/tests/mochitest/bugs/file_empty.html"></iframe>
</body>
</html>