tor-browser

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

browser_bug503832.js (2570B)


      1 /* Test for Bug 503832
      2 * https://bugzilla.mozilla.org/show_bug.cgi?id=503832
      3 */
      4 
      5 add_setup(async function () {
      6  await SpecialPowers.pushPrefEnv({
      7    set: [["test.wait300msAfterTabSwitch", true]],
      8  });
      9 });
     10 
     11 add_task(async function () {
     12  var pagetitle = "Page Title for Bug 503832";
     13  var pageurl =
     14    "http://mochi.test:8888/browser/docshell/test/browser/file_bug503832.html";
     15  var fragmenturl =
     16    "http://mochi.test:8888/browser/docshell/test/browser/file_bug503832.html#firefox";
     17 
     18  var historyService = Cc[
     19    "@mozilla.org/browser/nav-history-service;1"
     20  ].getService(Ci.nsINavHistoryService);
     21 
     22  let fragmentPromise = new Promise(resolve => {
     23    const listener = events => {
     24      const { url, title } = events[0];
     25 
     26      switch (url) {
     27        case pageurl:
     28          is(title, pagetitle, "Correct page title for " + url);
     29          return;
     30        case fragmenturl:
     31          is(title, pagetitle, "Correct page title for " + url);
     32          // If titles for fragment URLs aren't set, this code
     33          // branch won't be called and the test will timeout,
     34          // resulting in a failure
     35          PlacesObservers.removeListener(["page-title-changed"], listener);
     36          resolve();
     37      }
     38    };
     39 
     40    PlacesObservers.addListener(["page-title-changed"], listener);
     41  });
     42 
     43  /* Queries nsINavHistoryService and returns a single history entry
     44   * for a given URI */
     45  function getNavHistoryEntry(aURI) {
     46    var options = historyService.getNewQueryOptions();
     47    options.queryType = Ci.nsINavHistoryQueryOptions.QUERY_TYPE_HISTORY;
     48    options.maxResults = 1;
     49 
     50    var query = historyService.getNewQuery();
     51    query.uri = aURI;
     52 
     53    var result = historyService.executeQuery(query, options);
     54    result.root.containerOpen = true;
     55 
     56    if (!result.root.childCount) {
     57      return null;
     58    }
     59    var node = result.root.getChild(0);
     60    result.root.containerOpen = false;
     61    return node;
     62  }
     63 
     64  // Make sure neither of the test pages haven't been loaded before.
     65  var info = getNavHistoryEntry(makeURI(pageurl));
     66  ok(!info, "The test page must not have been visited already.");
     67  info = getNavHistoryEntry(makeURI(fragmenturl));
     68  ok(!info, "The fragment test page must not have been visited already.");
     69 
     70  // Now open the test page in a new tab
     71  await BrowserTestUtils.openNewForegroundTab(gBrowser, pageurl);
     72 
     73  // Now that the page is loaded, click on fragment link
     74  await BrowserTestUtils.synthesizeMouseAtCenter(
     75    "#firefox-link",
     76    {},
     77    gBrowser.selectedBrowser
     78  );
     79  await fragmentPromise;
     80 
     81  gBrowser.removeCurrentTab();
     82 });