browser_bug623893.js (1543B)
1 add_task(async function test() { 2 await BrowserTestUtils.withNewTab( 3 "data:text/plain;charset=utf-8,1", 4 async function (browser) { 5 BrowserTestUtils.startLoadingURIString( 6 browser, 7 "data:text/plain;charset=utf-8,2" 8 ); 9 await BrowserTestUtils.browserLoaded(browser); 10 11 BrowserTestUtils.startLoadingURIString( 12 browser, 13 "data:text/plain;charset=utf-8,3" 14 ); 15 await BrowserTestUtils.browserLoaded(browser); 16 17 await duplicate(0, "maintained the original index"); 18 BrowserTestUtils.removeTab(gBrowser.selectedTab); 19 20 await duplicate(-1, "went back"); 21 await duplicate(1, "went forward"); 22 BrowserTestUtils.removeTab(gBrowser.selectedTab); 23 BrowserTestUtils.removeTab(gBrowser.selectedTab); 24 } 25 ); 26 }); 27 28 async function promiseGetIndex(browser) { 29 if (!SpecialPowers.Services.appinfo.sessionHistoryInParent) { 30 return SpecialPowers.spawn(browser, [], function () { 31 let shistory = 32 docShell.browsingContext.childSessionHistory.legacySHistory; 33 return shistory.index; 34 }); 35 } 36 37 let shistory = browser.browsingContext.sessionHistory; 38 return shistory.index; 39 } 40 41 let duplicate = async function (delta, msg) { 42 var startIndex = await promiseGetIndex(gBrowser.selectedBrowser); 43 44 duplicateTabIn(gBrowser.selectedTab, "tab", delta); 45 46 await BrowserTestUtils.waitForEvent(gBrowser.tabContainer, "SSTabRestored"); 47 48 let endIndex = await promiseGetIndex(gBrowser.selectedBrowser); 49 is(endIndex, startIndex + delta, msg); 50 };