forked from mirrors/gecko-dev
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
131 lines
4.7 KiB
JavaScript
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);
|
|
});
|