tor-browser

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

browser_star_hsts.js (2273B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/
      3 */
      4 /* eslint-disable mozilla/no-arbitrary-setTimeout */
      5 
      6 var secureURL =
      7  "https://example.com/browser/browser/base/content/test/general/browser_star_hsts.sjs";
      8 var unsecureURL =
      9  // eslint-disable-next-line @microsoft/sdl/no-insecure-url
     10  "http://example.com/browser/browser/base/content/test/general/browser_star_hsts.sjs";
     11 
     12 add_task(async function test_star_redirect() {
     13  registerCleanupFunction(async () => {
     14    // Ensure to remove example.com from the HSTS list.
     15    let sss = Cc["@mozilla.org/ssservice;1"].getService(
     16      Ci.nsISiteSecurityService
     17    );
     18    sss.resetState(
     19      // eslint-disable-next-line @microsoft/sdl/no-insecure-url
     20      NetUtil.newURI("http://example.com/"),
     21      { partitionKey: "(http,example.com)" }
     22    );
     23    await PlacesUtils.bookmarks.eraseEverything();
     24    gBrowser.removeCurrentTab();
     25  });
     26 
     27  let tab = (gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser));
     28  // This will add the page to the HSTS cache.
     29  await BrowserTestUtils.loadURIString({
     30    browser: tab.linkedBrowser,
     31    uriString: secureURL,
     32  });
     33  // This should transparently be redirected to the secure page.
     34  await BrowserTestUtils.loadURIString({
     35    browser: tab.linkedBrowser,
     36    uriString: unsecureURL,
     37    finalURI: secureURL,
     38  });
     39 
     40  await promiseStarState(BookmarkingUI.STATUS_UNSTARRED);
     41 
     42  StarUI._createPanelIfNeeded();
     43  let bookmarkPanel = document.getElementById("editBookmarkPanel");
     44  let shownPromise = promisePopupShown(bookmarkPanel);
     45  BookmarkingUI.star.click();
     46  await shownPromise;
     47 
     48  is(BookmarkingUI.status, BookmarkingUI.STATUS_STARRED, "The star is starred");
     49 });
     50 
     51 /**
     52 * Waits for the star to reflect the expected state.
     53 */
     54 function promiseStarState(aValue) {
     55  return new Promise(resolve => {
     56    let expectedStatus = aValue
     57      ? BookmarkingUI.STATUS_STARRED
     58      : BookmarkingUI.STATUS_UNSTARRED;
     59    (function checkState() {
     60      if (
     61        BookmarkingUI.status == BookmarkingUI.STATUS_UPDATING ||
     62        BookmarkingUI.status != expectedStatus
     63      ) {
     64        info("Waiting for star button change.");
     65        setTimeout(checkState, 1000);
     66      } else {
     67        resolve();
     68      }
     69    })();
     70  });
     71 }