tor-browser

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

browser_bug431826.js (3122B)


      1 add_task(async function () {
      2  for (let feltPrivacyEnabled of [false, true]) {
      3    await SpecialPowers.pushPrefEnv({
      4      set: [["security.certerrors.felt-privacy-v1", feltPrivacyEnabled]],
      5    });
      6 
      7    gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
      8 
      9    let promise = BrowserTestUtils.waitForErrorPage(gBrowser.selectedBrowser);
     10    BrowserTestUtils.startLoadingURIString(
     11      gBrowser,
     12      "https://nocert.example.com/"
     13    );
     14    await promise;
     15 
     16    await SpecialPowers.spawn(gBrowser.selectedBrowser, [], async () => {
     17      // Confirm that we are displaying the contributed error page, not the default
     18      let uri = content.document.documentURI;
     19      Assert.ok(
     20        uri.startsWith("about:certerror"),
     21        "Broken page should go to about:certerror, not about:neterror"
     22      );
     23    });
     24 
     25    if (feltPrivacyEnabled) {
     26      await SpecialPowers.spawn(gBrowser.selectedBrowser, [], async () => {
     27        let netErrorCard =
     28          content.document.querySelector("net-error-card").wrappedJSObject;
     29        await netErrorCard.getUpdateComplete();
     30        Assert.ok(
     31          !netErrorCard.advancedShowing,
     32          "Advanced showing attribute should be true"
     33        );
     34        Assert.ok(!netErrorCard.advancedContainer);
     35      });
     36    } else {
     37      await SpecialPowers.spawn(gBrowser.selectedBrowser, [], async () => {
     38        let div = content.document.getElementById("badCertAdvancedPanel");
     39        // Confirm that the expert section is collapsed
     40        Assert.ok(div, "Advanced content div should exist");
     41        Assert.equal(
     42          div.ownerGlobal.getComputedStyle(div).display,
     43          "none",
     44          "Advanced content should not be visible by default"
     45        );
     46      });
     47    }
     48 
     49    // Tweak the expert mode pref
     50    Services.prefs.setBoolPref("browser.xul.error_pages.expert_bad_cert", true);
     51 
     52    promise = BrowserTestUtils.waitForErrorPage(gBrowser.selectedBrowser);
     53    gBrowser.reload();
     54    await promise;
     55 
     56    if (feltPrivacyEnabled) {
     57      await SpecialPowers.spawn(gBrowser.selectedBrowser, [], async () => {
     58        let netErrorCard =
     59          content.document.querySelector("net-error-card").wrappedJSObject;
     60        await netErrorCard.getUpdateComplete();
     61        Assert.ok(
     62          netErrorCard.advancedShowing,
     63          "Advanced showing attribute should be true"
     64        );
     65        Assert.ok(ContentTaskUtils.isVisible(netErrorCard.advancedContainer));
     66      });
     67    } else {
     68      await SpecialPowers.spawn(gBrowser.selectedBrowser, [], async () => {
     69        let div = content.document.getElementById("badCertAdvancedPanel");
     70        Assert.ok(div, "Advanced content div should exist");
     71        Assert.equal(
     72          div.ownerGlobal.getComputedStyle(div).display,
     73          "block",
     74          "Advanced content should be visible by default"
     75        );
     76      });
     77    }
     78 
     79    // Clean up
     80    gBrowser.removeCurrentTab();
     81    if (
     82      Services.prefs.prefHasUserValue("browser.xul.error_pages.expert_bad_cert")
     83    ) {
     84      Services.prefs.clearUserPref("browser.xul.error_pages.expert_bad_cert");
     85    }
     86 
     87    await SpecialPowers.popPrefEnv();
     88  }
     89 });