browser_bug817947.js (1607B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 const URL = "http://mochi.test:8888/browser/"; 5 const PREF = "browser.sessionstore.restore_on_demand"; 6 7 add_task(async () => { 8 Services.prefs.setBoolPref(PREF, true); 9 registerCleanupFunction(function () { 10 Services.prefs.clearUserPref(PREF); 11 }); 12 13 let tab = await preparePendingTab(); 14 15 let deferredTab = Promise.withResolvers(); 16 17 let win = gBrowser.replaceTabWithWindow(tab); 18 win.addEventListener( 19 "before-initial-tab-adopted", 20 async () => { 21 let [newTab] = win.gBrowser.tabs; 22 await BrowserTestUtils.browserLoaded(newTab.linkedBrowser); 23 deferredTab.resolve(newTab); 24 }, 25 { once: true } 26 ); 27 28 let newTab = await deferredTab.promise; 29 is(newTab.linkedBrowser.currentURI.spec, URL, "correct url should be loaded"); 30 ok(!newTab.hasAttribute("pending"), "tab should not be pending"); 31 32 win.close(); 33 }); 34 35 async function preparePendingTab() { 36 let tab = BrowserTestUtils.addTab(gBrowser, URL); 37 await BrowserTestUtils.browserLoaded(tab.linkedBrowser); 38 39 let sessionUpdatePromise = BrowserTestUtils.waitForSessionStoreUpdate(tab); 40 BrowserTestUtils.removeTab(tab); 41 await sessionUpdatePromise; 42 43 let [{ state }] = SessionStore.getClosedTabDataForWindow(window); 44 45 tab = BrowserTestUtils.addTab(gBrowser, "about:blank"); 46 await BrowserTestUtils.browserLoaded(tab.linkedBrowser, { 47 wantLoad: "about:blank", 48 }); 49 SessionStore.setTabState(tab, JSON.stringify(state)); 50 ok(tab.hasAttribute("pending"), "tab should be pending"); 51 52 return tab; 53 }