fune/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_windowtitle.js
Nika Layzell 42028efc71 Bug 1671983 - Part 4: Stop awaiting BrowserTestUtils.loadURI, r=annyG,remote-protocol-reviewers,extension-reviewers,preferences-reviewers,whimboo,zombie
This method only is async in order to allow callers to wait for a process switch
triggered by the call to `loadURI` to be finished before resolving. With
DocumentChannel, we should never trigger a process switch eagerly like this
again, so we don't need any of the async behaviour here anymore.

This part is largely mechanical changes to tests, removing the `await` calls on
`loadURI`, and a follow-up part will remove the actual async logic from
`BrowserTestUtils.loadURI`.

Differential Revision: https://phabricator.services.mozilla.com/D94641
2020-11-12 18:01:03 +00:00

112 lines
3.4 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// This test makes sure that the window title changes correctly while switching
// from and to private browsing mode.
const { AppConstants } = ChromeUtils.import(
"resource://gre/modules/AppConstants.jsm"
);
add_task(async function test() {
const testPageURL =
"http://mochi.test:8888/browser/" +
"browser/components/privatebrowsing/test/browser/browser_privatebrowsing_windowtitle_page.html";
requestLongerTimeout(2);
// initialization of expected titles
let test_title = "Test title";
let app_name = document.title;
// XXX: Bug 1597849 - Dehardcode titles by fetching them from Fluent
// to compare with the actual values.
const isMacOS = AppConstants.platform == "macosx";
let pb_postfix = isMacOS ? ` — (Private Browsing)` : ` (Private Browsing)`;
let page_with_title = isMacOS ? test_title : `${test_title}${app_name}`;
let page_without_title = app_name;
let about_pb_title = app_name;
let pb_page_with_title = isMacOS
? `${test_title}${pb_postfix}`
: `${test_title}${app_name}${pb_postfix}`;
let pb_page_without_title = `${app_name}${pb_postfix}`;
let pb_about_pb_title = `${app_name}${pb_postfix}`;
async function testTabTitle(aWindow, url, insidePB, expected_title) {
let tab = await BrowserTestUtils.openNewForegroundTab(aWindow.gBrowser);
BrowserTestUtils.loadURI(tab.linkedBrowser, url);
await BrowserTestUtils.browserLoaded(tab.linkedBrowser);
await BrowserTestUtils.waitForCondition(() => {
return aWindow.document.title === expected_title;
}, `Window title should be ${expected_title}, got ${aWindow.document.title}`);
is(
aWindow.document.title,
expected_title,
"The window title for " +
url +
" is correct (" +
(insidePB ? "inside" : "outside") +
" private browsing mode)"
);
let win = aWindow.gBrowser.replaceTabWithWindow(tab);
await BrowserTestUtils.waitForEvent(win, "load", false);
await BrowserTestUtils.waitForCondition(() => {
return win.document.title === expected_title;
}, `Window title should be ${expected_title}, got ${win.document.title}`);
is(
win.document.title,
expected_title,
"The window title for " +
url +
" detached tab is correct (" +
(insidePB ? "inside" : "outside") +
" private browsing mode)"
);
await Promise.all([
BrowserTestUtils.closeWindow(win),
BrowserTestUtils.closeWindow(aWindow),
]);
}
function openWin(private) {
return BrowserTestUtils.openNewBrowserWindow({ private });
}
await testTabTitle(
await openWin(false),
"about:blank",
false,
page_without_title
);
await testTabTitle(await openWin(false), testPageURL, false, page_with_title);
await testTabTitle(
await openWin(false),
"about:privatebrowsing",
false,
about_pb_title
);
await testTabTitle(
await openWin(true),
"about:blank",
true,
pb_page_without_title
);
await testTabTitle(
await openWin(true),
testPageURL,
true,
pb_page_with_title
);
await testTabTitle(
await openWin(true),
"about:privatebrowsing",
true,
pb_about_pb_title
);
});