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