Mypal68/browser/components/sessionstore/test/browser_350525.js
2022-04-16 07:41:55 +03:00

130 lines
3.1 KiB
JavaScript

"use strict";
add_task(async function setup() {
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);
/**
* getClosedTabCount, undoCloseTab
*/
// get closed tab count
let count = ss.getClosedTabCount(window);
let max_tabs_undo = Services.prefs.getIntPref(
"browser.sessionstore.max_tabs_undo"
);
ok(
0 <= count && count <= max_tabs_undo,
"getClosedTabCount 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 getClosedTabCount
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);
// getClosedTabCount
let newcount = ss.getClosedTabCount(window);
ok(
newcount > count,
"after closing a tab, getClosedTabCount 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);
});