Bug 1315044 - Test loader destruction. r=jryans
MozReview-Commit-ID: Ky3Okig9qxs
--- a/devtools/server/tests/mochitest/test_getProcess.html
+++ b/devtools/server/tests/mochitest/test_getProcess.html
@@ -15,16 +15,17 @@ Bug 1060093 - Test DebuggerServer.getPro
let Cu = Components.utils;
let Cc = Components.classes;
let Ci = Components.interfaces;
let {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
let {DebuggerClient} = require("devtools/shared/client/main");
let {DebuggerServer} = require("devtools/server/main");
+let Services = require("Services");
window.onload = function() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPrefEnv({
"set": [
// Always log packets when running tests.
["devtools.debugger.log", true],
@@ -106,26 +107,52 @@ function runTests() {
// Assert that calling client.getProcess against the same process id is
// returning the same actor.
function getProcessAgain(firstActor, id) {
client.getProcess(id).then(response => {
let actor = response.form;
is(actor, firstActor,
"Second call to getProcess with the same id returns the same form");
+ closeClient();
+ });
+ }
+
+ function processScript() {
+ let listener = function () {
+ Services.obs.removeObserver(listener, "sdk:loader:destroy", false);
+ sendAsyncMessage("test:getProcess-destroy", null);
+ };
+ Services.obs.addObserver(listener, "sdk:loader:destroy", false);
+ }
+
+ function closeClient() {
+ let onLoaderDestroyed = new Promise(done => {
+ let processListener = function () {
+ Services.ppmm.removeMessageListener("test:getProcess-destroy", processListener)
+ done();
+ };
+ Services.ppmm.addMessageListener("test:getProcess-destroy", processListener)
+ });
+ let script = "data:,(" + processScript + ")()";
+ Services.ppmm.loadProcessScript(script, true);
+ client.close();
+
+ onLoaderDestroyed.then(function () {
+ Services.ppmm.removeDelayedProcessScript(script);
+ info("Loader destroyed in the content process\n");
+
cleanup();
});
}
function cleanup() {
- client.close().then(function () {
- DebuggerServer.destroy();
- iframe.remove();
- SimpleTest.finish()
- });
+ DebuggerServer.destroy();
+ iframe.remove();
+ SimpleTest.finish()
}
connect();
}
</script>
</pre>
</body>