tor-browser

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

browser_aboutCertError_offlineSupport_feltPrivacyV1.js (2815B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const BAD_CERT_PAGE = "https://expired.example.com";
      7 const DUMMY_SUPPORT_BASE_PATH = "/1/firefox/fxVersion/OSVersion/language/";
      8 const DUMMY_SUPPORT_URL = BAD_CERT_PAGE + DUMMY_SUPPORT_BASE_PATH;
      9 const OFFLINE_SUPPORT_PAGE =
     10  "chrome://global/content/neterror/supportpages/time-errors.html";
     11 
     12 add_setup(async function () {
     13  await SpecialPowers.pushPrefEnv({
     14    set: [
     15      ["test.wait300msAfterTabSwitch", true],
     16      ["security.certerrors.felt-privacy-v1", true],
     17    ],
     18  });
     19 });
     20 
     21 add_task(async function testOfflineSupportPage() {
     22  // Cache the original value of app.support.baseURL pref to reset later
     23  let originalBaseURL = Services.prefs.getCharPref("app.support.baseURL");
     24 
     25  Services.prefs.setCharPref("app.support.baseURL", DUMMY_SUPPORT_URL);
     26  let errorTab = await openErrorPage(BAD_CERT_PAGE);
     27 
     28  let offlineSupportPromise = BrowserTestUtils.waitForNewTab(
     29    gBrowser,
     30    DUMMY_SUPPORT_URL + "time-errors"
     31  );
     32  await SpecialPowers.spawn(
     33    errorTab.linkedBrowser,
     34    [DUMMY_SUPPORT_URL],
     35    async expectedURL => {
     36      let doc = content.document;
     37 
     38      const netErrorCard = doc.querySelector("net-error-card").wrappedJSObject;
     39      await netErrorCard.getUpdateComplete();
     40 
     41      netErrorCard.advancedButton.scrollIntoView();
     42      EventUtils.synthesizeMouseAtCenter(
     43        netErrorCard.advancedButton,
     44        {},
     45        content
     46      );
     47 
     48      await ContentTaskUtils.waitForCondition(
     49        () => ContentTaskUtils.isVisible(netErrorCard.advancedContainer),
     50        "Advanced container is visible"
     51      );
     52      Assert.ok(
     53        netErrorCard.advancedShowing,
     54        "Advanced showing attribute should be true"
     55      );
     56      Assert.ok(ContentTaskUtils.isVisible(netErrorCard.advancedContainer));
     57 
     58      let learnMoreLink = netErrorCard.learnMoreLink;
     59      Assert.ok(learnMoreLink, '"Learn More" link exists.');
     60 
     61      let supportPageURL = learnMoreLink.getAttribute("href");
     62      Assert.equal(
     63        supportPageURL,
     64        expectedURL + "time-errors",
     65        "Correct support page URL has been set"
     66      );
     67      learnMoreLink.scrollIntoView();
     68      Assert.ok(ContentTaskUtils.isVisible(learnMoreLink));
     69      await EventUtils.synthesizeMouseAtCenter(learnMoreLink, {}, content);
     70    }
     71  );
     72  let offlineSupportTab = await offlineSupportPromise;
     73  await BrowserTestUtils.browserLoaded(
     74    gBrowser.selectedBrowser,
     75    false,
     76    OFFLINE_SUPPORT_PAGE
     77  );
     78 
     79  // Reset this pref instead of clearing it to maintain globally set
     80  // custom value for testing purposes.
     81  Services.prefs.setCharPref("app.support.baseURL", originalBaseURL);
     82 
     83  await BrowserTestUtils.removeTab(offlineSupportTab);
     84  await BrowserTestUtils.removeTab(errorTab);
     85 });