fune/browser/components/sessionstore/test/browser_464199.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

82 lines
3.8 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() {
/** Test for Bug 464199 **/
const REMEMBER = Date.now(), FORGET = Math.random();
let test_state = { windows: [{ "tabs": [{ "entries": [] }], _closedTabs: [
{ state: { entries: [{ url: "http://www.example.net/" }] }, title: FORGET },
{ state: { entries: [{ url: "http://www.example.org/" }] }, title: REMEMBER },
{ state: { entries: [{ url: "http://www.example.net/" },
{ url: "http://www.example.org/" }] }, title: FORGET },
{ state: { entries: [{ url: "http://example.net/" }] }, title: FORGET },
{ state: { entries: [{ url: "http://sub.example.net/" }] }, title: FORGET },
{ state: { entries: [{ url: "http://www.example.net:8080/" }] }, title: FORGET },
{ state: { entries: [{ url: "about:license" }] }, title: REMEMBER },
{ state: { entries: [{ url: "http://www.example.org/frameset",
children: [
{ url: "http://www.example.org/frame" },
{ url: "http://www.example.org:8080/frame2" }
] }] }, title: REMEMBER },
{ state: { entries: [{ url: "http://www.example.org/frameset",
children: [
{ url: "http://www.example.org/frame" },
{ url: "http://www.example.net/frame" }
] }] }, title: FORGET },
{ state: { entries: [{ url: "http://www.example.org/form",
formdata: { id: { "url": "http://www.example.net/" } }
}] }, title: REMEMBER },
{ state: { entries: [{ url: "http://www.example.org/form" }],
extData: { "setTabValue": "http://example.net:80" } }, title: REMEMBER }
] }] };
let remember_count = 5;
function countByTitle(aClosedTabList, aTitle) {
return aClosedTabList.filter(aData => aData.title == aTitle).length;
}
// open a window and add the above closed tab list
let newWin = openDialog(location, "", "chrome,all,dialog=no");
await promiseWindowLoaded(newWin);
Services.prefs.setIntPref("browser.sessionstore.max_tabs_undo",
test_state.windows[0]._closedTabs.length);
ss.setWindowState(newWin, JSON.stringify(test_state), true);
let closedTabs = JSON.parse(ss.getClosedTabData(newWin));
is(closedTabs.length, test_state.windows[0]._closedTabs.length,
"Closed tab list has the expected length");
is(countByTitle(closedTabs, FORGET),
test_state.windows[0]._closedTabs.length - remember_count,
"The correct amout of tabs are to be forgotten");
is(countByTitle(closedTabs, REMEMBER), remember_count,
"Everything is set up.");
await ForgetAboutSite.removeDataFromDomain("example.net");
await promiseClearHistory();
closedTabs = JSON.parse(ss.getClosedTabData(newWin));
is(closedTabs.length, remember_count,
"The correct amout of tabs was removed");
is(countByTitle(closedTabs, FORGET), 0,
"All tabs to be forgotten were indeed removed");
is(countByTitle(closedTabs, REMEMBER), remember_count,
"... and tabs to be remembered weren't.");
// clean up
Services.prefs.clearUserPref("browser.sessionstore.max_tabs_undo");
await BrowserTestUtils.closeWindow(newWin);
});