tor-browser

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

browser_backforward_userinteraction_about.js (2036B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const TEST_PAGE =
      7  getRootDirectory(gTestPath).replace(
      8    "chrome://mochitests/content",
      9    "https://example.com"
     10  ) + "dummy_page.html";
     11 
     12 // Regression test for navigating back after visiting an about: page
     13 // loaded in the parent process.
     14 add_task(async function test_about_back() {
     15  // Test with both pref on and off
     16  for (let requireUserInteraction of [true, false]) {
     17    Services.prefs.setBoolPref(
     18      "browser.navigation.requireUserInteraction",
     19      requireUserInteraction
     20    );
     21 
     22    let tab = await BrowserTestUtils.openNewForegroundTab(
     23      gBrowser,
     24      TEST_PAGE + "?entry=0"
     25    );
     26    let browser = tab.linkedBrowser;
     27    assertBackForwardState(false, false);
     28 
     29    // Add some user interaction to the initial entry
     30    await BrowserTestUtils.synthesizeMouse("body", 0, 0, {}, browser, true);
     31 
     32    await followLink(TEST_PAGE + "?entry=1");
     33    assertBackForwardState(true, false);
     34 
     35    await followLink(TEST_PAGE + "?entry=2");
     36    assertBackForwardState(true, false);
     37 
     38    // Add some user interaction to entry 2
     39    await BrowserTestUtils.synthesizeMouse("body", 0, 0, {}, browser, true);
     40 
     41    await loadURI("about:config");
     42    assertBackForwardState(true, false);
     43 
     44    await goBack(TEST_PAGE + "?entry=2");
     45    assertBackForwardState(true, true);
     46 
     47    if (!requireUserInteraction) {
     48      await goBack(TEST_PAGE + "?entry=1");
     49      assertBackForwardState(true, true);
     50    }
     51 
     52    await goBack(TEST_PAGE + "?entry=0");
     53    assertBackForwardState(false, true);
     54 
     55    if (!requireUserInteraction) {
     56      await goForward(TEST_PAGE + "?entry=1");
     57      assertBackForwardState(true, true);
     58    }
     59 
     60    await goForward(TEST_PAGE + "?entry=2");
     61    assertBackForwardState(true, true);
     62 
     63    await goForward("about:config");
     64    assertBackForwardState(true, false);
     65 
     66    BrowserTestUtils.removeTab(tab);
     67  }
     68 
     69  Services.prefs.clearUserPref("browser.navigation.requireUserInteraction");
     70 });