browser_restore_private_tab_os.js (1940B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 "use strict"; 6 7 const TEST_URI = 8 "https://example.com/" + 9 "browser/browser/components/sessionstore/test/empty.html"; 10 11 add_setup(async function () { 12 await SpecialPowers.pushPrefEnv({ 13 set: [ 14 // Set the pref to true so we know exactly how many tabs should be restoring at 15 // any given time. This guarantees that a finishing load won't start another. 16 ["browser.sessionstore.restore_on_demand", true], 17 // Don't restore tabs lazily. 18 ["browser.sessionstore.restore_tabs_lazily", true], 19 // don't preload tabs so we don't have extra XULFrameLoaderCreated events 20 // firing 21 ["browser.newtab.preload", false], 22 ], 23 }); 24 }); 25 26 add_task(async function testRestore() { 27 // Clear the list of closed windows. 28 forgetClosedWindows(); 29 30 // Create a new private window 31 let win = await promiseNewWindowLoaded({ private: true }); 32 33 // Create a new private tab 34 let tab = BrowserTestUtils.addTab(win.gBrowser, TEST_URI); 35 let browser = tab.linkedBrowser; 36 await promiseBrowserLoaded(browser); 37 await TabStateFlusher.flush(browser); 38 39 // Ensure that closed tabs in a private windows can be restored. 40 win.gBrowser.removeTab(tab); 41 is(ss.getClosedTabCountForWindow(win), 1, "there is a single tab to restore"); 42 43 tab = SessionStore.undoCloseTab(win, 0); 44 info(`Undo close tab`); 45 browser = tab.linkedBrowser; 46 await promiseTabRestored(tab); 47 info(`Private tab restored`); 48 49 let expectedRemoteType = gFissionBrowser 50 ? "webIsolated=https://example.com^privateBrowsingId=1" 51 : "web"; 52 is(browser.remoteType, expectedRemoteType, "correct remote type"); 53 54 await BrowserTestUtils.closeWindow(win); 55 56 // Cleanup 57 info("Forgetting closed tabs"); 58 forgetClosedTabs(window); 59 });