fune/browser/components/sessionstore/test/browser_394759_purge.js
Brendan Dahl 8a6f97c45c Bug 1442302 - Remove placesOverlay.xul. r=Gijs,mak,standard8
The overlay was responsible for script loading and defining three elements
(bhTooltip, placesCommands, placesContext). In the majority of places where
the overlay was included only part of it was used. To remove the overlay, the
elements were each split into include files and moved into where they
were used. For the scripts, a JS file was added that defines all the lazy
modules and then this script, globalOverlay.js and utilityOverlay.js were
inlined to everywhere that would have included them from the overlay.

MozReview-Commit-ID: 8T5D46oYWLn

--HG--
rename : browser/components/places/content/placesOverlay.xul => browser/components/places/content/placesCommands.inc.xul
rename : browser/components/places/content/placesOverlay.xul => browser/components/places/content/placesContextMenu.inc.xul
extra : rebase_source : c1071af4ea264a95183cbc65caae98feb23d58e5
2018-03-12 10:43:35 -07:00

131 lines
4.7 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/. */
let {ForgetAboutSite} = ChromeUtils.import("resource://gre/modules/ForgetAboutSite.jsm", {});
function promiseClearHistory() {
return new Promise(resolve => {
let observer = {
observe(aSubject, aTopic, aData) {
Services.obs.removeObserver(this, "browser:purge-domain-data");
resolve();
}
};
Services.obs.addObserver(observer, "browser:purge-domain-data");
});
}
add_task(async function() {
// utility functions
function countClosedTabsByTitle(aClosedTabList, aTitle) {
return aClosedTabList.filter(aData => aData.title == aTitle).length;
}
function countOpenTabsByTitle(aOpenTabList, aTitle) {
return aOpenTabList.filter(aData => aData.entries.some(aEntry => aEntry.title == aTitle)).length;
}
// backup old state
let oldState = ss.getBrowserState();
let oldState_wins = JSON.parse(oldState).windows.length;
if (oldState_wins != 1)
ok(false, "oldState in test_purge has " + oldState_wins + " windows instead of 1");
// create a new state for testing
const REMEMBER = Date.now(), FORGET = Math.random();
let testState = {
windows: [ { tabs: [{ entries: [{ url: "http://example.com/", triggeringPrincipal_base64 }] }], selected: 1 } ],
_closedWindows: [
// _closedWindows[0]
{
tabs: [
{ entries: [{ url: "http://example.com/", triggeringPrincipal_base64, title: REMEMBER }] },
{ entries: [{ url: "http://mozilla.org/", triggeringPrincipal_base64, title: FORGET }] }
],
selected: 2,
title: "mozilla.org",
_closedTabs: []
},
// _closedWindows[1]
{
tabs: [
{ entries: [{ url: "http://mozilla.org/", triggeringPrincipal_base64, title: FORGET }] },
{ entries: [{ url: "http://example.com/", triggeringPrincipal_base64, title: REMEMBER }] },
{ entries: [{ url: "http://example.com/", triggeringPrincipal_base64, title: REMEMBER }] },
{ entries: [{ url: "http://mozilla.org/", triggeringPrincipal_base64, title: FORGET }] },
{ entries: [{ url: "http://example.com/", triggeringPrincipal_base64, title: REMEMBER }] }
],
selected: 5,
_closedTabs: []
},
// _closedWindows[2]
{
tabs: [
{ entries: [{ url: "http://example.com/", triggeringPrincipal_base64, title: REMEMBER }] }
],
selected: 1,
_closedTabs: [
{
state: {
entries: [
{ url: "http://mozilla.org/", triggeringPrincipal_base64, title: FORGET },
{ url: "http://mozilla.org/again", triggeringPrincipal_base64, title: "doesn't matter" }
]
},
pos: 1,
title: FORGET
},
{
state: {
entries: [
{ url: "http://example.com", triggeringPrincipal_base64, title: REMEMBER }
]
},
title: REMEMBER
}
]
}
]
};
// set browser to test state
ss.setBrowserState(JSON.stringify(testState));
// purge domain & check that we purged correctly for closed windows
let clearHistoryPromise = promiseClearHistory();
await ForgetAboutSite.removeDataFromDomain("mozilla.org");
await clearHistoryPromise;
let closedWindowData = JSON.parse(ss.getClosedWindowData());
// First set of tests for _closedWindows[0] - tests basics
let win = closedWindowData[0];
is(win.tabs.length, 1, "1 tab was removed");
is(countOpenTabsByTitle(win.tabs, FORGET), 0,
"The correct tab was removed");
is(countOpenTabsByTitle(win.tabs, REMEMBER), 1,
"The correct tab was remembered");
is(win.selected, 1, "Selected tab has changed");
is(win.title, REMEMBER, "The window title was correctly updated");
// Test more complicated case
win = closedWindowData[1];
is(win.tabs.length, 3, "2 tabs were removed");
is(countOpenTabsByTitle(win.tabs, FORGET), 0,
"The correct tabs were removed");
is(countOpenTabsByTitle(win.tabs, REMEMBER), 3,
"The correct tabs were remembered");
is(win.selected, 3, "Selected tab has changed");
is(win.title, REMEMBER, "The window title was correctly updated");
// Tests handling of _closedTabs
win = closedWindowData[2];
is(countClosedTabsByTitle(win._closedTabs, REMEMBER), 1,
"The correct number of tabs were removed, and the correct ones");
is(countClosedTabsByTitle(win._closedTabs, FORGET), 0,
"All tabs to be forgotten were indeed removed");
// restore pre-test state
ss.setBrowserState(oldState);
});