Bug 1240804 - Wait for RDM tool to init first. r=me
MozReview-Commit-ID: Eb1xsE5irMw
This commit is contained in:
@@ -43,10 +43,11 @@ let bootstrap = {
|
||||
this.telemetry.toolOpened("responsive");
|
||||
let store = this.store = Store();
|
||||
let app = App({
|
||||
onExit: () => window.postMessage({type: "exit"}, "*"),
|
||||
onExit: () => window.postMessage({ type: "exit" }, "*"),
|
||||
});
|
||||
let provider = createElement(Provider, { store }, app);
|
||||
ReactDOM.render(provider, document.querySelector("#root"));
|
||||
window.postMessage({ type: "init" }, "*");
|
||||
},
|
||||
|
||||
destroy() {
|
||||
|
||||
@@ -196,6 +196,7 @@ ResponsiveUI.prototype = {
|
||||
tabBrowser.loadURI(TOOL_URL);
|
||||
yield tabLoaded(this.tab);
|
||||
let toolWindow = this.toolWindow = tabBrowser.contentWindow;
|
||||
yield waitForMessage(toolWindow, "init");
|
||||
toolWindow.addInitialViewport(contentURI);
|
||||
toolWindow.addEventListener("message", this);
|
||||
}),
|
||||
@@ -226,6 +227,21 @@ ResponsiveUI.prototype = {
|
||||
},
|
||||
};
|
||||
|
||||
function waitForMessage(win, type) {
|
||||
let deferred = promise.defer();
|
||||
|
||||
let onMessage = event => {
|
||||
if (event.data.type !== type) {
|
||||
return;
|
||||
}
|
||||
win.removeEventListener("message", onMessage);
|
||||
deferred.resolve();
|
||||
};
|
||||
win.addEventListener("message", onMessage);
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function tabLoaded(tab) {
|
||||
let deferred = promise.defer();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user