browser_switch_remoteness.js (1818B)
1 "use strict"; 2 3 const URL = "http://example.com/browser_switch_remoteness_"; 4 5 function countHistoryEntries(browser, expected) { 6 return SpecialPowers.spawn(browser, [{ expected }], async function (args) { 7 let webNavigation = docShell.QueryInterface(Ci.nsIWebNavigation); 8 let history = webNavigation.sessionHistory; 9 Assert.equal( 10 history && history.count, 11 args.expected, 12 "correct number of shistory entries" 13 ); 14 }); 15 } 16 17 add_task(async function () { 18 // Open a new window. 19 let win = await promiseNewWindowLoaded(); 20 21 // Add a new tab. 22 let tab = BrowserTestUtils.addTab(win.gBrowser, "about:blank"); 23 let browser = tab.linkedBrowser; 24 await BrowserTestUtils.browserLoaded(browser, { wantLoad: "about:blank" }); 25 ok(browser.isRemoteBrowser, "browser is remote"); 26 27 // Get the maximum number of preceding entries to save. 28 const MAX_BACK = Services.prefs.getIntPref( 29 "browser.sessionstore.max_serialize_back" 30 ); 31 Assert.greater( 32 MAX_BACK, 33 -1, 34 "check that the default has a value that caps data" 35 ); 36 37 // Load more pages than we would save to disk on a clean shutdown. 38 for (let i = 0; i < MAX_BACK + 2; i++) { 39 BrowserTestUtils.startLoadingURIString(browser, URL + i); 40 await promiseBrowserLoaded(browser); 41 ok(browser.isRemoteBrowser, "browser is still remote"); 42 } 43 44 // Check we have the right number of shistory entries. 45 await countHistoryEntries(browser, MAX_BACK + 2); 46 47 // Load a non-remote page. 48 BrowserTestUtils.startLoadingURIString(browser, "about:robots"); 49 await promiseBrowserLoaded(browser); 50 ok(!browser.isRemoteBrowser, "browser is not remote anymore"); 51 52 // Check that we didn't lose any shistory entries. 53 await countHistoryEntries(browser, MAX_BACK + 3); 54 55 // Cleanup. 56 await BrowserTestUtils.closeWindow(win); 57 });