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
		
			
				
	
	
		
			32 lines
		
	
	
	
		
			909 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			909 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
add_task(async function test() {
 | 
						|
  await BrowserTestUtils.withNewTab(
 | 
						|
    { gBrowser, url: "http://example.com" },
 | 
						|
    async function(browser) {
 | 
						|
      let numLocationChanges = 0;
 | 
						|
 | 
						|
      let listener = {
 | 
						|
        onLocationChange(browser, webProgress, request, uri, flags) {
 | 
						|
          info("location change: " + (uri && uri.spec));
 | 
						|
          numLocationChanges++;
 | 
						|
        },
 | 
						|
      };
 | 
						|
 | 
						|
      gBrowser.addTabsProgressListener(listener);
 | 
						|
 | 
						|
      await SpecialPowers.spawn(browser, [], function() {
 | 
						|
        // pushState to a new URL (http://example.com/foo").  This should trigger
 | 
						|
        // exactly one LocationChange event.
 | 
						|
        content.history.pushState(null, null, "foo");
 | 
						|
      });
 | 
						|
 | 
						|
      await Promise.resolve();
 | 
						|
 | 
						|
      gBrowser.removeTabsProgressListener(listener);
 | 
						|
      is(
 | 
						|
        numLocationChanges,
 | 
						|
        1,
 | 
						|
        "pushState should cause exactly one LocationChange event."
 | 
						|
      );
 | 
						|
    }
 | 
						|
  );
 | 
						|
});
 |