Skip to content

Commit b10b8fe

Browse files
committed
Bug 1885189 - remove test-only uses of prompts.tabChromePromptSubDialog, r=mconley,credential-management-reviewers,mtigley
Differential Revision: https://phabricator.services.mozilla.com/D204538
1 parent 07aa4af commit b10b8fe

File tree

6 files changed

+45
-147
lines changed

6 files changed

+45
-147
lines changed

browser/base/content/test/tabPrompts/browser_contentOrigins.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,7 @@ async function checkDialog(
129129

130130
add_setup(async function () {
131131
await SpecialPowers.pushPrefEnv({
132-
set: [
133-
["prompts.modalType.httpAuth", Ci.nsIPrompt.MODAL_TYPE_TAB],
134-
["prompts.tabChromePromptSubDialog", true],
135-
],
132+
set: [["prompts.modalType.httpAuth", Ci.nsIPrompt.MODAL_TYPE_TAB]],
136133
});
137134
});
138135

browser/components/originattributes/test/browser/browser_httpauth.js

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@ let authPromptModalType = Services.prefs.getIntPref(
66
"prompts.modalType.httpAuth"
77
);
88

9-
let commonDialogEnabled =
10-
authPromptModalType === Services.prompt.MODAL_TYPE_WINDOW ||
11-
(authPromptModalType === Services.prompt.MODAL_TYPE_TAB &&
12-
Services.prefs.getBoolPref("prompts.tabChromePromptSubDialog"));
13-
149
let server = new HttpServer();
1510
server.registerPathHandler("/file.html", fileHandler);
1611
server.start(-1);
@@ -38,23 +33,15 @@ function fileHandler(metadata, response) {
3833
}
3934

4035
function onCommonDialogLoaded(subject) {
41-
let dialog;
42-
if (commonDialogEnabled) {
43-
dialog = subject.Dialog;
44-
} else {
45-
let promptBox =
46-
subject.ownerGlobal.gBrowser.selectedBrowser.tabModalPromptBox;
47-
dialog = promptBox.getPrompt(subject).Dialog;
48-
}
36+
let dialog = subject.Dialog;
37+
4938
// Submit random account and password
5039
dialog.ui.loginTextbox.setAttribute("value", Math.random());
5140
dialog.ui.password1Textbox.setAttribute("value", Math.random());
5241
dialog.ui.button0.click();
5342
}
5443

55-
let authPromptTopic = commonDialogEnabled
56-
? "common-dialog-loaded"
57-
: "tabmodal-dialog-loaded";
44+
let authPromptTopic = "common-dialog-loaded";
5845
Services.obs.addObserver(onCommonDialogLoaded, authPromptTopic);
5946

6047
registerCleanupFunction(() => {

toolkit/components/passwordmgr/test/mochitest/pwmgr_common.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,6 @@ let authPromptModalType = SpecialPowers.Services.prefs.getIntPref(
3030
"prompts.modalType.httpAuth"
3131
);
3232

33-
// Whether the auth prompt is a commonDialog.xhtml or a TabModalPrompt
34-
let authPromptIsCommonDialog =
35-
authPromptModalType === SpecialPowers.Services.prompt.MODAL_TYPE_WINDOW ||
36-
(authPromptModalType === SpecialPowers.Services.prompt.MODAL_TYPE_TAB &&
37-
SpecialPowers.Services.prefs.getBoolPref(
38-
"prompts.tabChromePromptSubDialog",
39-
false
40-
));
41-
4233
/**
4334
* Recreate a DOM tree using the outerHTML to ensure that any event listeners
4435
* and internal state for the elements are removed.

toolkit/components/passwordmgr/test/mochitest/test_bug_627616.html

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -117,30 +117,12 @@
117117
sendAsyncMessage("prepareForNextTestDone");
118118
});
119119

120-
const modalType = Services.prefs.getIntPref(
121-
"prompts.modalType.httpAuth"
122-
);
123-
const authPromptIsCommonDialog =
124-
modalType === Services.prompt.MODAL_TYPE_WINDOW
125-
|| (modalType === Services.prompt.MODAL_TYPE_TAB
126-
&& Services.prefs.getBoolPref(
127-
"prompts.tabChromePromptSubDialog",
128-
false
129-
));
130-
131-
const dialogObserverTopic = authPromptIsCommonDialog
132-
? "common-dialog-loaded" : "tabmodal-dialog-loaded";
120+
const dialogObserverTopic = "common-dialog-loaded";
133121

134122
function dialogObserver(subj, _topic, _data) {
135-
if (authPromptIsCommonDialog) {
136-
subj.Dialog.ui.prompt.document
137-
.getElementById("commonDialog")
138-
.acceptDialog();
139-
} else {
140-
const prompt = subj.ownerGlobal.gBrowser.selectedBrowser
141-
.tabModalPromptBox.getPrompt(subj);
142-
prompt.Dialog.ui.button0.click(); // Accept button
143-
}
123+
subj.Dialog.ui.prompt.document
124+
.getElementById("commonDialog")
125+
.acceptDialog();
144126
sendAsyncMessage("promptAccepted");
145127
}
146128

toolkit/components/prompts/test/PromptTestUtils.sys.mjs

Lines changed: 30 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,9 @@
66
* nsIPromptService.
77
*/
88

9-
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
109
import { BrowserTestUtils } from "resource://testing-common/BrowserTestUtils.sys.mjs";
1110
import { TestUtils } from "resource://testing-common/TestUtils.sys.mjs";
1211

13-
const kPrefs = {};
14-
15-
// Whether prompts with modal type TAB are shown as SubDialog (true) or
16-
// TabModalPrompt (false).
17-
XPCOMUtils.defineLazyPreferenceGetter(
18-
kPrefs,
19-
"tabPromptSubDialogEnabled",
20-
"prompts.tabChromePromptSubDialog",
21-
false
22-
);
23-
24-
function isCommonDialog(modalType) {
25-
return (
26-
modalType === Services.prompt.MODAL_TYPE_WINDOW ||
27-
(kPrefs.tabPromptSubDialogEnabled &&
28-
modalType === Services.prompt.MODAL_TYPE_TAB) ||
29-
modalType === Services.prompt.MODAL_TYPE_CONTENT
30-
);
31-
}
32-
3312
export let PromptTestUtils = {
3413
/**
3514
* Wait for a prompt from nsIPrompt or nsIPromptsService, interact with it and
@@ -75,13 +54,7 @@ export let PromptTestUtils = {
7554
let promptClosePromise;
7655

7756
// Get parent window to listen for prompt close event
78-
let win;
79-
if (isCommonDialog(dialog.args.modalType)) {
80-
win = dialog.ui.prompt?.opener;
81-
} else {
82-
// Tab prompts should always have a parent window
83-
win = dialog.ui.prompt.win;
84-
}
57+
let win = dialog.ui.prompt?.opener;
8558

8659
if (win) {
8760
promptClosePromise = BrowserTestUtils.waitForEvent(
@@ -151,65 +124,50 @@ export let PromptTestUtils = {
151124
}
152125
}
153126

154-
let topic = isCommonDialog(modalType)
155-
? "common-dialog-loaded"
156-
: "tabmodal-dialog-loaded";
127+
let topic = "common-dialog-loaded";
157128

158129
let dialog;
159130
await TestUtils.topicObserved(topic, subject => {
160131
// If we are not given a browser, use the currently selected browser of the window
161132
let browser =
162133
parentBrowser || subject.ownerGlobal.gBrowser?.selectedBrowser;
163-
if (isCommonDialog(modalType)) {
164-
// Is not associated with given parent window, skip
165-
if (parentWindow && subject.opener !== parentWindow) {
166-
return false;
167-
}
168-
169-
// For tab prompts, ensure that the associated browser matches.
170-
if (browser && modalType == Services.prompt.MODAL_TYPE_TAB) {
171-
let dialogBox = parentWindow.gBrowser.getTabDialogBox(browser);
172-
let hasMatchingDialog = dialogBox
173-
.getTabDialogManager()
174-
._dialogs.some(
175-
d => d._frame?.browsingContext == subject.browsingContext
176-
);
177-
if (!hasMatchingDialog) {
178-
return false;
179-
}
180-
}
134+
// Is not associated with given parent window, skip
135+
if (parentWindow && subject.opener !== parentWindow) {
136+
return false;
137+
}
181138

182-
if (browser && modalType == Services.prompt.MODAL_TYPE_CONTENT) {
183-
let dialogBox = parentWindow.gBrowser.getTabDialogBox(browser);
184-
let hasMatchingDialog = dialogBox
185-
.getContentDialogManager()
186-
._dialogs.some(
187-
d => d._frame?.browsingContext == subject.browsingContext
188-
);
189-
if (!hasMatchingDialog) {
190-
return false;
191-
}
139+
// For tab prompts, ensure that the associated browser matches.
140+
if (browser && modalType == Services.prompt.MODAL_TYPE_TAB) {
141+
let dialogBox = parentWindow.gBrowser.getTabDialogBox(browser);
142+
let hasMatchingDialog = dialogBox
143+
.getTabDialogManager()
144+
._dialogs.some(
145+
d => d._frame?.browsingContext == subject.browsingContext
146+
);
147+
if (!hasMatchingDialog) {
148+
return false;
192149
}
150+
}
193151

194-
// subject is the window object of the prompt which has a Dialog object
195-
// attached.
196-
dialog = subject.Dialog;
197-
} else {
198-
// subject is the tabprompt dom node
199-
// Get the full prompt object which has the dialog object
200-
let prompt = browser.tabModalPromptBox.getPrompt(subject);
201-
202-
// Is not associated with given parent browser, skip.
203-
if (!prompt) {
152+
if (browser && modalType == Services.prompt.MODAL_TYPE_CONTENT) {
153+
let dialogBox = parentWindow.gBrowser.getTabDialogBox(browser);
154+
let hasMatchingDialog = dialogBox
155+
.getContentDialogManager()
156+
._dialogs.some(
157+
d => d._frame?.browsingContext == subject.browsingContext
158+
);
159+
if (!hasMatchingDialog) {
204160
return false;
205161
}
206-
207-
dialog = prompt.Dialog;
208162
}
209163

164+
// subject is the window object of the prompt which has a Dialog object
165+
// attached.
166+
dialog = subject.Dialog;
167+
210168
// Not the modalType we're looking for.
211169
// For window prompts dialog.args.modalType is undefined.
212-
if (isCommonDialog(modalType) && dialog.args.modalType !== modalType) {
170+
if (dialog.args.modalType !== modalType) {
213171
return false;
214172
}
215173

toolkit/components/prompts/test/chromeScript.js

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,6 @@ const { BrowserTestUtils } = ChromeUtils.importESModule(
88
"resource://testing-common/BrowserTestUtils.sys.mjs"
99
);
1010

11-
var tabSubDialogsEnabled = Services.prefs.getBoolPref(
12-
"prompts.tabChromePromptSubDialog",
13-
false
14-
);
15-
1611
// Define these to make EventUtils happy.
1712
let window = this;
1813
let parent = {};
@@ -86,27 +81,15 @@ async function handlePrompt(action, modalType, isSelect) {
8681
let ui;
8782
let browserWin = Services.wm.getMostRecentWindow("navigator:browser");
8883

89-
if (!tabSubDialogsEnabled && modalType === Services.prompt.MODAL_TYPE_TAB) {
90-
let gBrowser = browserWin.gBrowser;
91-
let promptManager = gBrowser.getTabModalPromptBox(gBrowser.selectedBrowser);
92-
let prompts = promptManager.listPrompts();
93-
if (!prompts.length) {
94-
return false; // try again in a bit
95-
}
84+
let doc = getDialogDoc();
85+
if (!doc) {
86+
return false; // try again in a bit
87+
}
9688

97-
ui = prompts[0].Dialog.ui;
98-
checkTabModal(prompts[0], gBrowser.selectedBrowser);
89+
if (isSelect) {
90+
ui = doc;
9991
} else {
100-
let doc = getDialogDoc();
101-
if (!doc) {
102-
return false; // try again in a bit
103-
}
104-
105-
if (isSelect) {
106-
ui = doc;
107-
} else {
108-
ui = doc.defaultView.Dialog.ui;
109-
}
92+
ui = doc.defaultView.Dialog.ui;
11093
}
11194

11295
let dialogClosed = BrowserTestUtils.waitForEvent(

0 commit comments

Comments
 (0)