Skip to content

Commit

Permalink
Bug 1560192 - Clean up prompt open calls in Prompter.jsm. r=Gijs, a=p…
Browse files Browse the repository at this point in the history
…ascalc

Differential Revision: https://phabricator.services.mozilla.com/D35371

--HG--
extra : source : bfd88bfc61c42a09475da8749b2218f540e4592c
  • Loading branch information
Johann Hofmann authored and MrAlex94 committed Jun 24, 2019
1 parent 0223216 commit 887055d
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 14 deletions.
14 changes: 9 additions & 5 deletions browser/modules/RemotePrompt.jsm
Expand Up @@ -27,10 +27,14 @@ var RemotePrompt = {
receiveMessage(message) {
switch (message.name) {
case "Prompt:Open":
if (message.data.uri) {
this.openModalWindow(message.data, message.target);
const COMMON_DIALOG = "chrome://global/content/commonDialog.xul";
const SELECT_DIALOG = "chrome://global/content/selectDialog.xul";

if (message.data.tabPrompt) {
this.openTabPrompt(message.data, message.target);
} else {
this.openTabPrompt(message.data, message.target)
let uri = (message.data.promptType == "select") ? SELECT_DIALOG : COMMON_DIALOG;
this.openModalWindow(uri, message.data, message.target);
}
break;
}
Expand Down Expand Up @@ -94,13 +98,13 @@ var RemotePrompt = {
}
},

openModalWindow(args, browser) {
openModalWindow(uri, args, browser) {
let window = browser.ownerGlobal;
try {
PromptUtils.fireDialogEvent(window, "DOMWillOpenModalDialog", browser);
let bag = PromptUtils.objectToPropBag(args);

Services.ww.openWindow(window, args.uri, "_blank",
Services.ww.openWindow(window, uri, "_blank",
"centerscreen,chrome,modal,titlebar", bag);

PromptUtils.propBagToObject(bag, args);
Expand Down
18 changes: 9 additions & 9 deletions toolkit/components/prompts/src/nsPrompter.js
Expand Up @@ -440,15 +440,15 @@ function openTabPrompt(domWin, tabPrompt, args) {
}
}

function openRemotePrompt(domWin, args, tabPrompt) {
function openRemotePrompt(domWin, args) {
let docShell = domWin.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDocShell);
let messageManager = docShell.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsITabChild)
.messageManager;

let inPermitUnload = docShell.contentViewer && docShell.contentViewer.inPermitUnload;
let eventDetail = Cu.cloneInto({tabPrompt, inPermitUnload}, domWin);
let eventDetail = Cu.cloneInto({tabPrompt: args.tabPrompt, inPermitUnload}, domWin);
PromptUtils.fireDialogEvent(domWin, "DOMWillOpenModalDialog", null, eventDetail);

let winUtils = domWin.QueryInterface(Ci.nsIInterfaceRequestor)
Expand Down Expand Up @@ -546,7 +546,8 @@ ModalPrompter.prototype = {

if (allowTabModal && this.domWin) {
if (Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT) {
openRemotePrompt(this.domWin, args, true);
args.tabPrompt = true;
openRemotePrompt(this.domWin, args);
return;
}

Expand All @@ -558,17 +559,16 @@ ModalPrompter.prototype = {
}

// If we can't do a tab modal prompt, fallback to using a window-modal dialog.
const COMMON_DIALOG = "chrome://global/content/commonDialog.xul";
const SELECT_DIALOG = "chrome://global/content/selectDialog.xul";

let uri = (args.promptType == "select") ? SELECT_DIALOG : COMMON_DIALOG;

if (Services.appinfo.processType === Services.appinfo.PROCESS_TYPE_CONTENT) {
args.uri = uri;
args.tabPrompt = false;
openRemotePrompt(this.domWin, args);
return;
}

const COMMON_DIALOG = "chrome://global/content/commonDialog.xul";
const SELECT_DIALOG = "chrome://global/content/selectDialog.xul";

let uri = (args.promptType == "select") ? SELECT_DIALOG : COMMON_DIALOG;
let propBag = PromptUtils.objectToPropBag(args);
openModalWindow(this.domWin, uri, propBag);
PromptUtils.propBagToObject(propBag, args);
Expand Down

0 comments on commit 887055d

Please sign in to comment.