michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: "use strict"; michael@0: michael@0: const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; michael@0: michael@0: function whenBrowserLoaded(browser, callback) { michael@0: browser.addEventListener("load", function onLoad(event) { michael@0: if (event.target == browser.contentDocument) { michael@0: browser.removeEventListener("load", onLoad, true); michael@0: executeSoon(callback); michael@0: } michael@0: }, true); michael@0: } michael@0: michael@0: function waitForOnBeforeUnloadDialog(browser, callback) { michael@0: browser.addEventListener("DOMWillOpenModalDialog", function onModalDialog() { michael@0: browser.removeEventListener("DOMWillOpenModalDialog", onModalDialog, true); michael@0: michael@0: executeSoon(() => { michael@0: let stack = browser.parentNode; michael@0: let dialogs = stack.getElementsByTagNameNS(XUL_NS, "tabmodalprompt"); michael@0: let {button0, button1} = dialogs[0].ui; michael@0: callback(button0, button1); michael@0: }); michael@0: }, true); michael@0: }