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();
 | |
| });
 | 
