|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
<html>
|
|
Packit |
f0b94e |
<head>
|
|
Packit |
f0b94e |
<title>Test for Principal in MessageManager</title>
|
|
Packit |
f0b94e |
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
Packit |
f0b94e |
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
|
|
Packit |
f0b94e |
</head>
|
|
Packit |
f0b94e |
<body>
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
<script type="application/javascript">
|
|
Packit |
f0b94e |
"use strict";
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
var permManager = Cc["@mozilla.org/permissionmanager;1"]
|
|
Packit |
f0b94e |
.getService(Ci.nsIPermissionManager);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
SimpleTest.waitForExplicitFinish();
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
const childFrameURL =
|
|
Packit |
f0b94e |
"data:text/html,<html><body></body></html>";
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function childFrameScript() {
|
|
Packit |
f0b94e |
"use strict";
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
addMessageListener("test:ipcMessage", function(message) {
|
|
Packit |
f0b94e |
sendAsyncMessage(message.name, "principal: " + (message.principal ? "OK" : "KO"));
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
sendAsyncMessage(message.name, "principal.appId: " +
|
|
Packit |
f0b94e |
("appId" in message.principal ? "OK" : "KO"));
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
sendAsyncMessage(message.name, "principal.origin: " +
|
|
Packit |
f0b94e |
("origin" in message.principal ? "OK" : "KO"));
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
sendAsyncMessage(message.name, "principal.isInIsolatedMozBrowserElement: " +
|
|
Packit |
f0b94e |
("isInIsolatedMozBrowserElement" in message.principal ? "OK" : "KO"));
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
sendAsyncMessage(message.name, "DONE");
|
|
Packit |
f0b94e |
});
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function runTests() {
|
|
Packit |
f0b94e |
ok("Browser prefs set.");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
let iframe = document.createElement("iframe");
|
|
Packit |
f0b94e |
SpecialPowers.wrap(iframe).mozbrowser = true;
|
|
Packit |
f0b94e |
iframe.id = "iframe";
|
|
Packit |
f0b94e |
iframe.src = childFrameURL;
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
iframe.addEventListener("mozbrowserloadend", function() {
|
|
Packit |
f0b94e |
ok(true, "Got iframe load event.");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
let mm = SpecialPowers.getBrowserFrameMessageManager(iframe);
|
|
Packit |
f0b94e |
mm.addMessageListener("test:ipcMessage", function(message) {
|
|
Packit |
f0b94e |
// We need to wrap to access message.json, and unwrap to do the
|
|
Packit |
f0b94e |
// identity check.
|
|
Packit |
f0b94e |
var msg = SpecialPowers.unwrap(SpecialPowers.wrap(message).json);
|
|
Packit |
f0b94e |
if (/OK$/.exec(msg)) {
|
|
Packit |
f0b94e |
ok(true, msg);
|
|
Packit |
f0b94e |
} else if(/KO$/.exec(msg)) {
|
|
Packit |
f0b94e |
ok(true, false);
|
|
Packit |
f0b94e |
} else if (/DONE/.exec(msg)) {
|
|
Packit |
f0b94e |
permManager.removeFromPrincipal(window.document.nodePrincipal, "browser",
|
|
Packit |
f0b94e |
Ci.nsIPermissionManager.ALLOW_ACTION);
|
|
Packit |
f0b94e |
SimpleTest.finish();
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
});
|
|
Packit |
f0b94e |
mm.loadFrameScript("data:,(" + childFrameScript.toString() + ")();",
|
|
Packit |
f0b94e |
false);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
mm.sendAsyncMessage("test:ipcMessage", 42, null, window.document.nodePrincipal);
|
|
Packit |
f0b94e |
});
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
document.body.appendChild(iframe);
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
addEventListener("load", function() {
|
|
Packit |
f0b94e |
info("Got load event.");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
permManager.addFromPrincipal(window.document.nodePrincipal, "browser",
|
|
Packit |
f0b94e |
Ci.nsIPermissionManager.ALLOW_ACTION);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
SpecialPowers.pushPrefEnv({
|
|
Packit |
f0b94e |
"set": [
|
|
Packit |
f0b94e |
["dom.mozBrowserFramesEnabled", true],
|
|
Packit |
f0b94e |
["network.disable.ipc.security", true],
|
|
Packit |
f0b94e |
["browser.pagethumbnails.capturing_disabled", true]
|
|
Packit |
f0b94e |
]
|
|
Packit |
f0b94e |
}, runTests);
|
|
Packit |
f0b94e |
});
|
|
Packit |
f0b94e |
</script>
|
|
Packit |
f0b94e |
</body>
|
|
Packit |
f0b94e |
</html>
|