tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }