forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			76 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Test for Bug 503832
 | 
						|
 * https://bugzilla.mozilla.org/show_bug.cgi?id=503832
 | 
						|
 */
 | 
						|
 | 
						|
add_task(async function() {
 | 
						|
  var pagetitle = "Page Title for Bug 503832";
 | 
						|
  var pageurl =
 | 
						|
    "http://mochi.test:8888/browser/docshell/test/browser/file_bug503832.html";
 | 
						|
  var fragmenturl =
 | 
						|
    "http://mochi.test:8888/browser/docshell/test/browser/file_bug503832.html#firefox";
 | 
						|
 | 
						|
  var historyService = Cc[
 | 
						|
    "@mozilla.org/browser/nav-history-service;1"
 | 
						|
  ].getService(Ci.nsINavHistoryService);
 | 
						|
 | 
						|
  let fragmentPromise = new Promise(resolve => {
 | 
						|
    const listener = events => {
 | 
						|
      const { url, title } = events[0];
 | 
						|
 | 
						|
      switch (url) {
 | 
						|
        case pageurl:
 | 
						|
          is(title, pagetitle, "Correct page title for " + url);
 | 
						|
          return;
 | 
						|
        case fragmenturl:
 | 
						|
          is(title, pagetitle, "Correct page title for " + url);
 | 
						|
          // If titles for fragment URLs aren't set, this code
 | 
						|
          // branch won't be called and the test will timeout,
 | 
						|
          // resulting in a failure
 | 
						|
          PlacesObservers.removeListener(["page-title-changed"], listener);
 | 
						|
          resolve();
 | 
						|
      }
 | 
						|
    };
 | 
						|
 | 
						|
    PlacesObservers.addListener(["page-title-changed"], listener);
 | 
						|
  });
 | 
						|
 | 
						|
  /* Queries nsINavHistoryService and returns a single history entry
 | 
						|
   * for a given URI */
 | 
						|
  function getNavHistoryEntry(aURI) {
 | 
						|
    var options = historyService.getNewQueryOptions();
 | 
						|
    options.queryType = Ci.nsINavHistoryQueryOptions.QUERY_TYPE_HISTORY;
 | 
						|
    options.maxResults = 1;
 | 
						|
 | 
						|
    var query = historyService.getNewQuery();
 | 
						|
    query.uri = aURI;
 | 
						|
 | 
						|
    var result = historyService.executeQuery(query, options);
 | 
						|
    result.root.containerOpen = true;
 | 
						|
 | 
						|
    if (!result.root.childCount) {
 | 
						|
      return null;
 | 
						|
    }
 | 
						|
    var node = result.root.getChild(0);
 | 
						|
    result.root.containerOpen = false;
 | 
						|
    return node;
 | 
						|
  }
 | 
						|
 | 
						|
  // Make sure neither of the test pages haven't been loaded before.
 | 
						|
  var info = getNavHistoryEntry(makeURI(pageurl));
 | 
						|
  ok(!info, "The test page must not have been visited already.");
 | 
						|
  info = getNavHistoryEntry(makeURI(fragmenturl));
 | 
						|
  ok(!info, "The fragment test page must not have been visited already.");
 | 
						|
 | 
						|
  // Now open the test page in a new tab
 | 
						|
  await BrowserTestUtils.openNewForegroundTab(gBrowser, pageurl);
 | 
						|
 | 
						|
  // Now that the page is loaded, click on fragment link
 | 
						|
  await BrowserTestUtils.synthesizeMouseAtCenter(
 | 
						|
    "#firefox-link",
 | 
						|
    {},
 | 
						|
    gBrowser.selectedBrowser
 | 
						|
  );
 | 
						|
  await fragmentPromise;
 | 
						|
 | 
						|
  gBrowser.removeCurrentTab();
 | 
						|
});
 |