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