forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
add_task(async function() {
 | 
						|
  let url =
 | 
						|
    getRootDirectory(gTestPath).replace(
 | 
						|
      "chrome://mochitests/content/",
 | 
						|
      "http://example.com/"
 | 
						|
    ) + "file_bug1206879.html";
 | 
						|
  let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, url, true);
 | 
						|
 | 
						|
  let numLocationChanges = await SpecialPowers.spawn(
 | 
						|
    tab.linkedBrowser,
 | 
						|
    [],
 | 
						|
    async function() {
 | 
						|
      let webprogress = content.docShell.QueryInterface(Ci.nsIWebProgress);
 | 
						|
      let locationChangeCount = 0;
 | 
						|
      let listener = {
 | 
						|
        onLocationChange(aWebProgress, aRequest, aLocation, aFlags) {
 | 
						|
          info("onLocationChange: " + aLocation.spec);
 | 
						|
          locationChangeCount++;
 | 
						|
          this.resolve();
 | 
						|
        },
 | 
						|
        QueryInterface: ChromeUtils.generateQI([
 | 
						|
          "nsIWebProgressListener",
 | 
						|
          "nsISupportsWeakReference",
 | 
						|
        ]),
 | 
						|
      };
 | 
						|
      let locationPromise = new Promise((resolve, reject) => {
 | 
						|
        listener.resolve = resolve;
 | 
						|
      });
 | 
						|
      webprogress.addProgressListener(
 | 
						|
        listener,
 | 
						|
        Ci.nsIWebProgress.NOTIFY_LOCATION
 | 
						|
      );
 | 
						|
 | 
						|
      content.frames[0].history.pushState(null, null, "foo");
 | 
						|
 | 
						|
      await locationPromise;
 | 
						|
      webprogress.removeProgressListener(listener);
 | 
						|
 | 
						|
      return locationChangeCount;
 | 
						|
    }
 | 
						|
  );
 | 
						|
 | 
						|
  gBrowser.removeTab(tab);
 | 
						|
  is(
 | 
						|
    numLocationChanges,
 | 
						|
    1,
 | 
						|
    "pushState with a different URI should cause a LocationChange event."
 | 
						|
  );
 | 
						|
});
 |