tor-browser

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

browser_switch_remoteness.js (1818B)


      1 "use strict";
      2 
      3 const URL = "http://example.com/browser_switch_remoteness_";
      4 
      5 function countHistoryEntries(browser, expected) {
      6  return SpecialPowers.spawn(browser, [{ expected }], async function (args) {
      7    let webNavigation = docShell.QueryInterface(Ci.nsIWebNavigation);
      8    let history = webNavigation.sessionHistory;
      9    Assert.equal(
     10      history && history.count,
     11      args.expected,
     12      "correct number of shistory entries"
     13    );
     14  });
     15 }
     16 
     17 add_task(async function () {
     18  // Open a new window.
     19  let win = await promiseNewWindowLoaded();
     20 
     21  // Add a new tab.
     22  let tab = BrowserTestUtils.addTab(win.gBrowser, "about:blank");
     23  let browser = tab.linkedBrowser;
     24  await BrowserTestUtils.browserLoaded(browser, { wantLoad: "about:blank" });
     25  ok(browser.isRemoteBrowser, "browser is remote");
     26 
     27  // Get the maximum number of preceding entries to save.
     28  const MAX_BACK = Services.prefs.getIntPref(
     29    "browser.sessionstore.max_serialize_back"
     30  );
     31  Assert.greater(
     32    MAX_BACK,
     33    -1,
     34    "check that the default has a value that caps data"
     35  );
     36 
     37  // Load more pages than we would save to disk on a clean shutdown.
     38  for (let i = 0; i < MAX_BACK + 2; i++) {
     39    BrowserTestUtils.startLoadingURIString(browser, URL + i);
     40    await promiseBrowserLoaded(browser);
     41    ok(browser.isRemoteBrowser, "browser is still remote");
     42  }
     43 
     44  // Check we have the right number of shistory entries.
     45  await countHistoryEntries(browser, MAX_BACK + 2);
     46 
     47  // Load a non-remote page.
     48  BrowserTestUtils.startLoadingURIString(browser, "about:robots");
     49  await promiseBrowserLoaded(browser);
     50  ok(!browser.isRemoteBrowser, "browser is not remote anymore");
     51 
     52  // Check that we didn't lose any shistory entries.
     53  await countHistoryEntries(browser, MAX_BACK + 3);
     54 
     55  // Cleanup.
     56  await BrowserTestUtils.closeWindow(win);
     57 });