51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
const URL = "http://mochi.test:8888/browser/";
|
|
const PREF = "browser.sessionstore.restore_on_demand";
|
|
|
|
add_task(async () => {
|
|
Services.prefs.setBoolPref(PREF, true);
|
|
registerCleanupFunction(function () {
|
|
Services.prefs.clearUserPref(PREF);
|
|
});
|
|
|
|
let tab = await preparePendingTab();
|
|
|
|
let deferredTab = Promise.withResolvers();
|
|
|
|
let win = gBrowser.replaceTabWithWindow(tab);
|
|
win.addEventListener(
|
|
"before-initial-tab-adopted",
|
|
async () => {
|
|
let [newTab] = win.gBrowser.tabs;
|
|
await BrowserTestUtils.browserLoaded(newTab.linkedBrowser);
|
|
deferredTab.resolve(newTab);
|
|
},
|
|
{ once: true }
|
|
);
|
|
|
|
let newTab = await deferredTab.promise;
|
|
is(newTab.linkedBrowser.currentURI.spec, URL, "correct url should be loaded");
|
|
ok(!newTab.hasAttribute("pending"), "tab should not be pending");
|
|
|
|
win.close();
|
|
});
|
|
|
|
async function preparePendingTab() {
|
|
let tab = BrowserTestUtils.addTab(gBrowser, URL);
|
|
await BrowserTestUtils.browserLoaded(tab.linkedBrowser);
|
|
|
|
let sessionUpdatePromise = BrowserTestUtils.waitForSessionStoreUpdate(tab);
|
|
BrowserTestUtils.removeTab(tab);
|
|
await sessionUpdatePromise;
|
|
|
|
let [{ state }] = SessionStore.getClosedTabDataForWindow(window);
|
|
|
|
tab = BrowserTestUtils.addTab(gBrowser, "about:blank");
|
|
await BrowserTestUtils.browserLoaded(tab.linkedBrowser);
|
|
SessionStore.setTabState(tab, JSON.stringify(state));
|
|
ok(tab.hasAttribute("pending"), "tab should be pending");
|
|
|
|
return tab;
|
|
}
|