forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			40 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| add_task(async function () {
 | |
|   let tab = (gBrowser.selectedTab = BrowserTestUtils.addTab(
 | |
|     gBrowser,
 | |
|     "about:mozilla"
 | |
|   ));
 | |
|   await promiseBrowserLoaded(gBrowser.selectedBrowser);
 | |
| 
 | |
|   let win = gBrowser.replaceTabWithWindow(tab);
 | |
|   await promiseDelayedStartupFinished(win);
 | |
|   await promiseBrowserHasURL(win.gBrowser.browsers[0], "about:mozilla");
 | |
| 
 | |
|   win.duplicateTabIn(win.gBrowser.selectedTab, "tab");
 | |
|   await promiseTabRestored(win.gBrowser.tabs[1]);
 | |
| 
 | |
|   let browser = win.gBrowser.browsers[1];
 | |
|   is(browser.currentURI.spec, "about:mozilla", "tab was duplicated");
 | |
| 
 | |
|   await BrowserTestUtils.closeWindow(win);
 | |
| });
 | |
| 
 | |
| function promiseDelayedStartupFinished(win) {
 | |
|   return new Promise(resolve => {
 | |
|     whenDelayedStartupFinished(win, resolve);
 | |
|   });
 | |
| }
 | |
| 
 | |
| function promiseBrowserHasURL(browser, url) {
 | |
|   let promise = Promise.resolve();
 | |
| 
 | |
|   if (
 | |
|     browser.contentDocument.readyState === "complete" &&
 | |
|     browser.currentURI.spec === url
 | |
|   ) {
 | |
|     return promise;
 | |
|   }
 | |
| 
 | |
|   return promise.then(() => promiseBrowserHasURL(browser, url));
 | |
| }
 | 
