fune/browser/components/sessionstore/test/browser_350525.js
Sam Foster a3004a21be Bug 1819675 - rename SessionStore.getClosedTabCount and getClosedTabData to getClosedTabCountForWindow and getClosedTabDataForWindow. r=dao,fxview-reviewers,kcochrane
- As closed tabs will change to mean closed tabs from all windows, rename these functions to make
  changes in later patches clearer when we mean closed tabs from this window specifically, or closed
  tabs for all private/non-private windows

Differential Revision: https://phabricator.services.mozilla.com/D177849
2023-05-30 18:54:12 +00:00

135 lines
3.1 KiB
JavaScript

"use strict";
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
set: [["dom.ipc.processCount", 1]],
});
});
add_task(async function () {
/** Test for Bug 350525 **/
function test(aLambda) {
try {
return aLambda() || true;
} catch (ex) {}
return false;
}
/**
* setCustomWindowValue, et al.
*/
let key = "Unique name: " + Date.now();
let value = "Unique value: " + Math.random();
// test adding
ok(
test(() => ss.setCustomWindowValue(window, key, value)),
"set a window value"
);
// test retrieving
is(
ss.getCustomWindowValue(window, key),
value,
"stored window value matches original"
);
// test deleting
ok(
test(() => ss.deleteCustomWindowValue(window, key)),
"delete the window value"
);
// value should not exist post-delete
is(ss.getCustomWindowValue(window, key), "", "window value was deleted");
// test deleting a non-existent value
ok(
test(() => ss.deleteCustomWindowValue(window, key)),
"delete non-existent window value"
);
/**
* setCustomTabValue, et al.
*/
key = "Unique name: " + Math.random();
value = "Unique value: " + Date.now();
let tab = BrowserTestUtils.addTab(gBrowser);
tab.linkedBrowser.stop();
// test adding
ok(
test(() => ss.setCustomTabValue(tab, key, value)),
"store a tab value"
);
// test retrieving
is(ss.getCustomTabValue(tab, key), value, "stored tab value match original");
// test deleting
ok(
test(() => ss.deleteCustomTabValue(tab, key)),
"delete the tab value"
);
// value should not exist post-delete
is(ss.getCustomTabValue(tab, key), "", "tab value was deleted");
// test deleting a non-existent value
ok(
test(() => ss.deleteCustomTabValue(tab, key)),
"delete non-existent tab value"
);
// clean up
await promiseRemoveTabAndSessionState(tab);
/**
* getClosedTabCountForWindow, undoCloseTab
*/
// get closed tab count
let count = ss.getClosedTabCountForWindow(window);
let max_tabs_undo = Services.prefs.getIntPref(
"browser.sessionstore.max_tabs_undo"
);
ok(
0 <= count && count <= max_tabs_undo,
"getClosedTabCountForWindow returns zero or at most max_tabs_undo"
);
// create a new tab
let testURL = "about:mozilla";
tab = BrowserTestUtils.addTab(gBrowser, testURL);
await promiseBrowserLoaded(tab.linkedBrowser);
// make sure that the next closed tab will increase getClosedTabCountForWindow
Services.prefs.setIntPref(
"browser.sessionstore.max_tabs_undo",
max_tabs_undo + 1
);
registerCleanupFunction(() =>
Services.prefs.clearUserPref("browser.sessionstore.max_tabs_undo")
);
// remove tab
await promiseRemoveTabAndSessionState(tab);
// getClosedTabCountForWindow
let newcount = ss.getClosedTabCountForWindow(window);
ok(
newcount > count,
"after closing a tab, getClosedTabCountForWindow has been incremented"
);
// undoCloseTab
tab = test(() => ss.undoCloseTab(window, 0));
ok(tab, "undoCloseTab doesn't throw");
await promiseTabRestored(tab);
is(tab.linkedBrowser.currentURI.spec, testURL, "correct tab was reopened");
// clean up
gBrowser.removeTab(tab);
});