let frame = await new Promise(resolve => { let domHelper = new DOMHelpers(this.frame.contentWindow); let frameLoad = () => { this.emit("ready", this.frame); resolve(this.frame); }; domHelper.onceDOMReady(frameLoad); focusTab(this.hostTab); });
function onFrameLoad (frame) { let { resolve, promise } = Promise.defer(); if (frame.contentWindow) { let domHelper = new DOMHelpers(frame.contentWindow); domHelper.onceDOMReady(resolve); } else { let callback = () => { frame.removeEventListener("DOMContentLoaded", callback); resolve(); } frame.addEventListener("DOMContentLoaded", callback); } return promise; }
create: function () { let deferred = promise.defer(); let gBrowser = this.hostTab.ownerDocument.defaultView.gBrowser; let ownerDocument = gBrowser.ownerDocument; this._nbox = gBrowser.getNotificationBox(this.hostTab.linkedBrowser); this._splitter = ownerDocument.createElement("splitter"); this._splitter.setAttribute("class", "devtools-horizontal-splitter"); this.frame = ownerDocument.createElement("iframe"); this.frame.className = "devtools-toolbox-bottom-iframe"; this.frame.height = Math.min( Services.prefs.getIntPref(this.heightPref), this._nbox.clientHeight - MIN_PAGE_SIZE ); this._nbox.appendChild(this._splitter); this._nbox.appendChild(this.frame); let frameLoad = () => { this.emit("ready", this.frame); deferred.resolve(this.frame); }; this.frame.tooltip = "aHTMLTooltip"; // we have to load something so we can switch documents if we have to this.frame.setAttribute("src", "about:blank"); let domHelper = new DOMHelpers(this.frame.contentWindow); domHelper.onceDOMReady(frameLoad); focusTab(this.hostTab); return deferred.promise; },
create: function () { let deferred = promise.defer(); let gBrowser = this.hostTab.ownerDocument.defaultView.gBrowser; let ownerDocument = gBrowser.ownerDocument; this._sidebar = gBrowser.getSidebarContainer(this.hostTab.linkedBrowser); this._splitter = ownerDocument.createElement("splitter"); this._splitter.setAttribute("class", "devtools-side-splitter"); this.frame = ownerDocument.createElement("iframe"); this.frame.className = "devtools-toolbox-side-iframe"; this.frame.width = Math.min( Services.prefs.getIntPref(this.widthPref), this._sidebar.clientWidth - MIN_PAGE_SIZE ); this._sidebar.appendChild(this._splitter); this._sidebar.appendChild(this.frame); let frameLoad = () => { this.emit("ready", this.frame); deferred.resolve(this.frame); }; this.frame.tooltip = "aHTMLTooltip"; this.frame.setAttribute("src", "about:blank"); let domHelper = new DOMHelpers(this.frame.contentWindow); domHelper.onceDOMReady(frameLoad); focusTab(this.hostTab); return deferred.promise; },