Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Errors
- This test failed 18 times in the preceding 30 days. quicksearch this test
- Manifest: browser/components/sessionstore/test/browser.toml
/* Any copyright is dedicated to the Public Domain.
"use strict";
const ORIG_STATE = SessionStore.getBrowserState();
registerCleanupFunction(async () => {
await SessionStoreTestUtils.promiseBrowserState(ORIG_STATE);
});
add_task(async function test_tabGroupsUndo() {
Assert.equal(
SessionStore.getLastClosedTabGroupId(window),
null,
"Should start without a last closed tab group id"
);
Assert.equal(
window.gBrowser.tabGroups.length,
0,
"Should start with no tab groups"
);
let groupedTabs = [
];
await Promise.all(
groupedTabs.map(g => promiseBrowserLoaded(g.linkedBrowser))
);
info("Adding to tab group");
let tabGroup = gBrowser.addTabGroup(groupedTabs);
let tabGroupId = tabGroup.id;
info("Waiting for tab group removed");
let removePromise = BrowserTestUtils.waitForEvent(
tabGroup,
"TabGroupRemoved"
);
gBrowser.removeTabGroup(tabGroup);
await removePromise;
await TabStateFlusher.flushWindow(window);
info("Waiting for getLastClosedTabGroupId");
await BrowserTestUtils.waitForCondition(
() => SessionStore.getLastClosedTabGroupId(window) !== null
);
Assert.equal(
SessionStore.getLastClosedTabGroupId(window),
tabGroupId,
"SessionStore saves the ID of the last closed tab group"
);
undoCloseTab();
Assert.equal(window.gBrowser.tabGroups.length, 1, "Tab group was restored");
Assert.equal(
SessionStore.getLastClosedTabGroupId(window),
null,
"SessionStore reset the ID of the last closed tab group"
);
BrowserTestUtils.removeTab(gBrowser.tabGroups[0].tabs[0]);
Assert.equal(
SessionStore.getLastClosedTabGroupId(window),
null,
"SessionStore last closed group ID is null after closing a tab within a group"
);
await promiseBrowserLoaded(ungroupedTab.linkedBrowser);
BrowserTestUtils.removeTab(ungroupedTab);
Assert.equal(
SessionStore.getLastClosedTabGroupId(window),
null,
"SessionStore last closed group ID is null after closing a tab not in a group"
);
let savedGroupedTabs = [
];
await Promise.all(
savedGroupedTabs.map(g => promiseBrowserLoaded(g.linkedBrowser))
);
info("Adding to tab group");
let savedTabGroup = gBrowser.addTabGroup(savedGroupedTabs);
let savedTabGroupId = savedTabGroup.id;
savedTabGroup.save();
info("Waiting for tab group removed");
removePromise = BrowserTestUtils.waitForEvent(
savedTabGroup,
"TabGroupRemoved"
);
gBrowser.removeTabGroup(savedTabGroup);
await removePromise;
await TabStateFlusher.flushWindow(window);
info("Waiting for getLastClosedTabGroupId");
await BrowserTestUtils.waitForCondition(
() => SessionStore.getLastClosedTabGroupId(window) !== null
);
Assert.equal(
SessionStore.getLastClosedTabGroupId(window),
savedTabGroupId,
"SessionStore saves the ID of the last saved and closed tab group"
);
gBrowser.removeAllTabsBut(gBrowser.tabs[0]);
});