Bug 1240804 - Wait for RDM tool to init first. r=me

MozReview-Commit-ID: Eb1xsE5irMw
This commit is contained in:
J. Ryan Stinnett
2016-03-29 10:53:54 -05:00
parent 07632d59c0
commit 7b56407c30
2 changed files with 18 additions and 1 deletions

View File

@@ -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() {

View File

@@ -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();