forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| const URL = "http://example.com/browser_switch_remoteness_";
 | |
| 
 | |
| function countHistoryEntries(browser, expected) {
 | |
|   return ContentTask.spawn(browser, { expected }, async function(args) {
 | |
|     let Ci = Components.interfaces;
 | |
|     let webNavigation = docShell.QueryInterface(Ci.nsIWebNavigation);
 | |
|     let history = webNavigation.sessionHistory.QueryInterface(Ci.nsISHistoryInternal);
 | |
|     Assert.equal(history && history.count, args.expected,
 | |
|       "correct number of shistory entries");
 | |
|   });
 | |
| }
 | |
| 
 | |
| add_task(async function() {
 | |
|   // Open a new window.
 | |
|   let win = await promiseNewWindowLoaded();
 | |
| 
 | |
|   // Add a new tab.
 | |
|   let tab = win.gBrowser.addTab("about:blank");
 | |
|   let browser = tab.linkedBrowser;
 | |
|   await promiseBrowserLoaded(browser);
 | |
|   ok(browser.isRemoteBrowser, "browser is remote");
 | |
| 
 | |
|   // Get the maximum number of preceding entries to save.
 | |
|   const MAX_BACK = Services.prefs.getIntPref("browser.sessionstore.max_serialize_back");
 | |
|   ok(MAX_BACK > -1, "check that the default has a value that caps data");
 | |
| 
 | |
|   // Load more pages than we would save to disk on a clean shutdown.
 | |
|   for (let i = 0; i < MAX_BACK + 2; i++) {
 | |
|     browser.loadURI(URL + i);
 | |
|     await promiseBrowserLoaded(browser);
 | |
|     ok(browser.isRemoteBrowser, "browser is still remote");
 | |
|   }
 | |
| 
 | |
|   // Check we have the right number of shistory entries.
 | |
|   await countHistoryEntries(browser, MAX_BACK + 2);
 | |
| 
 | |
|   // Load a non-remote page.
 | |
|   browser.loadURI("about:robots");
 | |
|   await promiseTabRestored(tab);
 | |
|   ok(!browser.isRemoteBrowser, "browser is not remote anymore");
 | |
| 
 | |
|   // Check that we didn't lose any shistory entries.
 | |
|   await countHistoryEntries(browser, MAX_BACK + 3);
 | |
| 
 | |
|   // Cleanup.
 | |
|   await BrowserTestUtils.closeWindow(win);
 | |
| });
 | 
