Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* 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/. */
/* eslint-disable mozilla/no-arbitrary-setTimeout */
// This test makes sure that the title of existing history entries does not
// change inside a private window.
add_task(async function test() {
const TEST_URL =
"privatebrowsing/test/browser/title.sjs";
let cm = Services.cookies;
function cleanup() {
// delete all cookies
cm.removeAll();
// delete all history items
return PlacesUtils.history.clear();
}
await cleanup();
registerCleanupFunction(cleanup);
let win = await BrowserTestUtils.openNewBrowserWindow();
registerCleanupFunction(async () => {
await BrowserTestUtils.closeWindow(win);
});
let promiseTitleChanged = PlacesTestUtils.waitForNotification(
"page-title-changed",
events => events[0].url == TEST_URL
);
await BrowserTestUtils.openNewForegroundTab(win.gBrowser, TEST_URL);
await promiseTitleChanged;
await BrowserTestUtils.waitForCondition(async function () {
let entry = await PlacesUtils.history.fetch(TEST_URL);
return entry && entry.title == "No Cookie";
}, "The page should be loaded without any cookie for the first time");
promiseTitleChanged = PlacesTestUtils.waitForNotification(
"page-title-changed",
events => events[0].url == TEST_URL
);
await BrowserTestUtils.openNewForegroundTab(win.gBrowser, TEST_URL);
await promiseTitleChanged;
await BrowserTestUtils.waitForCondition(async function () {
let entry = await PlacesUtils.history.fetch(TEST_URL);
return entry && entry.title == "Cookie";
}, "The page should be loaded with a cookie for the second time");
await cleanup();
promiseTitleChanged = PlacesTestUtils.waitForNotification(
"page-title-changed",
events => events[0].url == TEST_URL
);
await BrowserTestUtils.openNewForegroundTab(win.gBrowser, TEST_URL);
await promiseTitleChanged;
await BrowserTestUtils.waitForCondition(async function () {
let entry = await PlacesUtils.history.fetch(TEST_URL);
return entry && entry.title == "No Cookie";
}, "The page should be loaded without any cookie again");
// Reopen the page in a private browser window, it should not notify a title
// change.
let win2 = await BrowserTestUtils.openNewBrowserWindow({ private: true });
registerCleanupFunction(async () => {
let promisePBExit = TestUtils.topicObserved("last-pb-context-exited");
await BrowserTestUtils.closeWindow(win2);
await promisePBExit;
});
await BrowserTestUtils.openNewForegroundTab(win2.gBrowser, TEST_URL);
// Wait long enough to be sure history didn't set a title.
await new Promise(resolve => setTimeout(resolve, 1000));
is(
(await PlacesUtils.history.fetch(TEST_URL)).title,
"No Cookie",
"The title remains the same after visiting in private window"
);
});