forked from mirrors/gecko-dev
		
	This is generally pretty straightforward, and rewrites nearly all calls. It skips the ones that it can detect using frame script globals like `sendAsyncMessage`, though. Differential Revision: https://phabricator.services.mozilla.com/D53740 --HG-- extra : moz-landing-system : lando
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
add_task(async function test() {
 | 
						|
  let testPath = getRootDirectory(gTestPath);
 | 
						|
 | 
						|
  await BrowserTestUtils.withNewTab(
 | 
						|
    { gBrowser, url: "about:blank" },
 | 
						|
    async function(tabBrowser) {
 | 
						|
      const URI = testPath + "file_with_favicon.html";
 | 
						|
      const expectedIcon = testPath + "file_generic_favicon.ico";
 | 
						|
      let faviconPromise = waitForLinkAvailable(tabBrowser);
 | 
						|
 | 
						|
      BrowserTestUtils.loadURI(tabBrowser, URI);
 | 
						|
 | 
						|
      let iconURI = await faviconPromise;
 | 
						|
      is(iconURI, expectedIcon, "Correct icon before pushState.");
 | 
						|
 | 
						|
      faviconPromise = waitForLinkAvailable(tabBrowser);
 | 
						|
 | 
						|
      await SpecialPowers.spawn(tabBrowser, [], function() {
 | 
						|
        content.history.pushState("page2", "page2", "page2");
 | 
						|
      });
 | 
						|
 | 
						|
      // We've navigated and shouldn't get a call to onLinkIconAvailable.
 | 
						|
      TestUtils.executeSoon(() => {
 | 
						|
        faviconPromise.cancel();
 | 
						|
      });
 | 
						|
 | 
						|
      try {
 | 
						|
        await faviconPromise;
 | 
						|
        ok(false, "Should not have seen a new icon load.");
 | 
						|
      } catch (e) {
 | 
						|
        ok(true, "Should have been able to cancel the promise.");
 | 
						|
      }
 | 
						|
    }
 | 
						|
  );
 | 
						|
});
 |