browser_tab_groups_save_on_removeTabsToTheEnd.js (3082B)
1 /* Any copyright is dedicated to the Public Domain. 2 https://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 const ORIG_STATE = SessionStore.getBrowserState(); 7 8 registerCleanupFunction(async () => { 9 await SessionStoreTestUtils.promiseBrowserState(ORIG_STATE); 10 }); 11 12 add_task(async function test_removeTabsToTheEnd_saves_tab_groups() { 13 let win = await promiseNewWindowLoaded(); 14 let tab1 = BrowserTestUtils.addTab(win.gBrowser, "about:robots"); 15 let tab2 = BrowserTestUtils.addTab(win.gBrowser, "about:robots"); 16 let tab3 = BrowserTestUtils.addTab(win.gBrowser, "about:robots"); 17 18 let tabGroup = win.gBrowser.addTabGroup([tab2, tab3], { insertBefore: tab2 }); 19 let tabGroupId = tabGroup.id; 20 21 await TabStateFlusher.flushWindow(win); 22 23 Assert.equal( 24 win.gBrowser.tabs.length, 25 4, 26 "should be 4 tabs: 1 tab from new window and 3 tabs just created" 27 ); 28 Assert.equal( 29 SessionStore.getSavedTabGroups().length, 30 0, 31 "should not be any saved tab groups to start" 32 ); 33 34 win.gBrowser.removeTabsToTheEndFrom(tab1); 35 36 await TestUtils.waitForCondition( 37 () => win.gBrowser.tabs.length == 2, 38 "waiting for tabs to the end to close" 39 ); 40 41 await TabStateFlusher.flushWindow(win); 42 43 Assert.equal( 44 SessionStore.getSavedTabGroups().length, 45 1, 46 "should have saved a tab group" 47 ); 48 Assert.ok( 49 SessionStore.getSavedTabGroup(tabGroupId), 50 "should have saved the tab group that was closed" 51 ); 52 53 await BrowserTestUtils.closeWindow(win); 54 forgetClosedWindows(); 55 forgetSavedTabGroups(); 56 }); 57 58 add_task( 59 async function test_removeTabsToTheEnd_only_saves_when_whole_tab_group_removed() { 60 let win = await promiseNewWindowLoaded(); 61 let tab1 = BrowserTestUtils.addTab(win.gBrowser, "about:robots"); 62 let tab2 = BrowserTestUtils.addTab(win.gBrowser, "about:robots"); 63 BrowserTestUtils.addTab(win.gBrowser, "about:robots"); 64 65 let tabGroup = win.gBrowser.addTabGroup([tab1, tab2], { 66 insertBefore: tab1, 67 }); 68 69 await TabStateFlusher.flushWindow(win); 70 71 Assert.equal( 72 win.gBrowser.tabs.length, 73 4, 74 "should be 4 tabs: 1 tab from new window and 3 tabs just created" 75 ); 76 Assert.equal( 77 SessionStore.getSavedTabGroups().length, 78 0, 79 "should not be any saved tab groups to start" 80 ); 81 82 win.gBrowser.removeTabsToTheEndFrom(tab1); 83 84 await TestUtils.waitForCondition( 85 () => win.gBrowser.tabs.length == 2, 86 "waiting for tabs to the end to close" 87 ); 88 89 await TabStateFlusher.flushWindow(win); 90 91 Assert.equal( 92 SessionStore.getSavedTabGroups().length, 93 0, 94 "should not have saved a tab group because one did not close" 95 ); 96 Assert.deepEqual( 97 win.gBrowser.tabGroups, 98 [tabGroup], 99 "tab group should still exist in the tab strip" 100 ); 101 Assert.deepEqual( 102 tabGroup.tabs, 103 [tab1], 104 "tab group should just have one tab left" 105 ); 106 107 await win.gBrowser.removeTabGroup(tabGroup); 108 await BrowserTestUtils.closeWindow(win); 109 forgetClosedWindows(); 110 forgetSavedTabGroups(); 111 } 112 );