Bug 1356376: Wait for message manager to disconnect after closing content page. r?aswan
This may or may not fix the intermittent, but hopefully it will.
MozReview-Commit-ID: BR0BtV4BPdq
--- a/toolkit/components/extensions/ExtensionXPCShellUtils.jsm
+++ b/toolkit/components/extensions/ExtensionXPCShellUtils.jsm
@@ -18,16 +18,18 @@ XPCOMUtils.defineLazyModuleGetter(this,
XPCOMUtils.defineLazyModuleGetter(this, "Extension",
"resource://gre/modules/Extension.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",
"resource://gre/modules/FileUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Schemas",
"resource://gre/modules/Schemas.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Services",
"resource://gre/modules/Services.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "TestUtils",
+ "resource://testing-common/TestUtils.jsm");
XPCOMUtils.defineLazyGetter(this, "Management", () => {
const {Management} = Cu.import("resource://gre/modules/Extension.jsm", {});
return Management;
});
/* exported ExtensionTestUtils */
@@ -136,20 +138,25 @@ class ContentPage {
this.browser.loadURI(url);
return promiseBrowserLoaded(this.browser, url, redirectUrl);
}
async close() {
await this.browserReady;
+ let {messageManager} = this.browser;
+
this.browser = null;
this.windowlessBrowser.close();
this.windowlessBrowser = null;
+
+ await TestUtils.topicObserved("message-manager-disconnect",
+ subject => subject === messageManager);
}
}
class ExtensionWrapper {
constructor(testScope, extension = null) {
this.testScope = testScope;
this.extension = null;