browser_swapDocShells.js (1050B)
1 "use strict"; 2 3 add_task(async function () { 4 let tab = (gBrowser.selectedTab = BrowserTestUtils.addTab( 5 gBrowser, 6 "about:mozilla" 7 )); 8 await promiseBrowserLoaded(gBrowser.selectedBrowser); 9 10 let win = gBrowser.replaceTabWithWindow(tab); 11 await promiseDelayedStartupFinished(win); 12 await promiseBrowserHasURL(win.gBrowser.browsers[0], "about:mozilla"); 13 14 win.duplicateTabIn(win.gBrowser.selectedTab, "tab"); 15 await promiseTabRestored(win.gBrowser.tabs[1]); 16 17 let browser = win.gBrowser.browsers[1]; 18 is(browser.currentURI.spec, "about:mozilla", "tab was duplicated"); 19 20 await BrowserTestUtils.closeWindow(win); 21 }); 22 23 function promiseDelayedStartupFinished(win) { 24 return new Promise(resolve => { 25 whenDelayedStartupFinished(win, resolve); 26 }); 27 } 28 29 function promiseBrowserHasURL(browser, url) { 30 let promise = Promise.resolve(); 31 32 if ( 33 browser.contentDocument.readyState === "complete" && 34 browser.currentURI.spec === url 35 ) { 36 return promise; 37 } 38 39 return promise.then(() => promiseBrowserHasURL(browser, url)); 40 }