mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-06-10 02:18:57 +00:00
134 lines
4.3 KiB
HTML
134 lines
4.3 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Test for registering/unregistering chrome OOP</title>
|
|
<script type="application/javascript"
|
|
src="/tests/SimpleTest/SimpleTest.js">
|
|
</script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
</head>
|
|
<body>
|
|
|
|
<script type="application/javascript;version=1.8">
|
|
"use strict";
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
const childFrameURL =
|
|
"data:text/html,<!DOCTYPE HTML><html><body></body></html>";
|
|
|
|
function childFrameScript() {
|
|
"use strict";
|
|
|
|
var ios =
|
|
Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
let cr =
|
|
Components.classes["@mozilla.org/chrome/chrome-registry;1"]
|
|
.getService(Ci.nsIXULChromeRegistry);
|
|
addMessageListener("test687194:resolveChromeURI", function(message) {
|
|
let result;
|
|
let threw = false;
|
|
try {
|
|
let uri = ios.newURI(message.data.URI, null, null);
|
|
result = cr.convertChromeURL(uri).spec;
|
|
} catch (e) {
|
|
threw = true;
|
|
result = "EXCEPTION: " + e;
|
|
}
|
|
|
|
message.target.sendAsyncMessage("test687194:resolveChromeURI:Answer",
|
|
{ threw: threw, result: result });
|
|
});
|
|
}
|
|
|
|
let test;
|
|
function* testStructure(mm) {
|
|
let lastResult;
|
|
|
|
mm.addMessageListener("test687194:resolveChromeURI:Answer", function(msg) {
|
|
test.next(msg.data);
|
|
});
|
|
|
|
mm.sendAsyncMessage("test687194:resolveChromeURI",
|
|
{ URI: "chrome://bug687194/content/e10sbug.js" });
|
|
lastResult = yield;
|
|
is(lastResult.threw, true, "URI shouldn't resolve to begin with");
|
|
|
|
let { AddonManager } = SpecialPowers.Cu.import("resource://gre/modules/AddonManager.jsm", {});
|
|
const INSTALL_URI =
|
|
"http://mochi.test:8888/tests/toolkit/mozapps/extensions/test/mochitest/file_bug687194.xpi"
|
|
AddonManager.getInstallForURL(INSTALL_URI, (install) => {
|
|
install = SpecialPowers.wrap(install);
|
|
install.addListener(SpecialPowers.wrapCallbackObject({
|
|
onInstallEnded: function(install, addon) {
|
|
SimpleTest.executeSoon(() => test.next(addon));
|
|
}
|
|
}));
|
|
install.install();
|
|
}, "application/x-xpinstall");
|
|
|
|
let addon = SpecialPowers.wrap(yield);
|
|
|
|
mm.sendAsyncMessage("test687194:resolveChromeURI",
|
|
{ URI: "chrome://bug687194/content/e10sbug.js" });
|
|
lastResult = yield;
|
|
is(lastResult.threw, false, "able to resolve after the installation");
|
|
|
|
let listener = SpecialPowers.wrapCallbackObject({
|
|
onUninstalled: function(removedAddon) {
|
|
if (removedAddon.id === addon.id) {
|
|
AddonManager.removeAddonListener(listener);
|
|
SimpleTest.executeSoon(() => test.next());
|
|
}
|
|
}
|
|
});
|
|
AddonManager.addAddonListener(listener);
|
|
addon.uninstall();
|
|
|
|
yield;
|
|
|
|
mm.sendAsyncMessage("test687194:resolveChromeURI",
|
|
{ URI: "chrome://bug687194/content/e10sbug.js" });
|
|
lastResult = yield;
|
|
is(lastResult.threw, true, "should have unregistered the URI");
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
function runTests() {
|
|
info("Browser prefs set.");
|
|
|
|
let iframe = document.createElement("iframe");
|
|
SpecialPowers.wrap(iframe).mozbrowser = true;
|
|
iframe.id = "iframe";
|
|
iframe.src = childFrameURL;
|
|
|
|
iframe.addEventListener("mozbrowserloadend", function() {
|
|
info("Got iframe load event.");
|
|
let mm = SpecialPowers.getBrowserFrameMessageManager(iframe);
|
|
mm.loadFrameScript("data:,(" + childFrameScript.toString() + ")();",
|
|
false);
|
|
|
|
test = testStructure(mm);
|
|
test.next();
|
|
});
|
|
|
|
document.body.appendChild(iframe);
|
|
}
|
|
|
|
addEventListener("load", function() {
|
|
info("Got load event.");
|
|
|
|
SpecialPowers.addPermission("browser", true, document);
|
|
SpecialPowers.pushPrefEnv({
|
|
"set": [
|
|
["dom.ipc.browser_frames.oop_by_default", true],
|
|
["dom.mozBrowserFramesEnabled", true],
|
|
["browser.pagethumbnails.capturing_disabled", true]
|
|
]
|
|
}, runTests);
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|