forked from mirrors/gecko-dev
		
	 74e263bd4c
			
		
	
	
		74e263bd4c
		
	
	
	
	
		
			
			MozReview-Commit-ID: 6Q0EvtJGEIg --HG-- extra : rebase_source : a7f5653fb025ff845dc232da5ab3d41e858f7b79
		
			
				
	
	
		
			99 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const TEST_URLS = [
 | |
|   "about:buildconfig",
 | |
|   "http://mochi.test:8888/browser/browser/components/sessionstore/test/browser_speculative_connect.html",
 | |
|   ""
 | |
| ];
 | |
| 
 | |
| /**
 | |
|  * This will open tabs in browser. This will also make the last tab
 | |
|  * inserted to be the selected tab.
 | |
|  */
 | |
| async function openTabs(win) {
 | |
|   for (let i = 0; i < TEST_URLS.length; ++i) {
 | |
|     await BrowserTestUtils.openNewForegroundTab(win.gBrowser, TEST_URLS[i]);
 | |
|   }
 | |
| }
 | |
| 
 | |
| add_task(async function speculative_connect_restore_on_demand() {
 | |
|   Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", true);
 | |
|   is(Services.prefs.getBoolPref("browser.sessionstore.restore_on_demand"), true, "We're restoring on demand");
 | |
|   forgetClosedWindows();
 | |
| 
 | |
|   // Open a new window and populate with tabs.
 | |
|   let win = await promiseNewWindowLoaded();
 | |
|   await openTabs(win);
 | |
| 
 | |
|   // Close the window.
 | |
|   await BrowserTestUtils.closeWindow(win);
 | |
| 
 | |
|   // Reopen a window.
 | |
|   let newWin = undoCloseWindow(0);
 | |
|   // Make sure we wait until this window is restored.
 | |
|   await BrowserTestUtils.waitForEvent(newWin, "load");
 | |
|   await BrowserTestUtils.waitForEvent(newWin.gBrowser.tabContainer, "SSTabRestored");
 | |
| 
 | |
|   let tabs = newWin.gBrowser.tabs;
 | |
|   is(tabs.length, TEST_URLS.length + 1, "Restored right number of tabs");
 | |
| 
 | |
|   let e = new MouseEvent("mouseover");
 | |
| 
 | |
|   // First tab should be ignored, since it's the default blank tab when we open a new window.
 | |
| 
 | |
|   // Trigger a mouse enter on second tab.
 | |
|   tabs[1].dispatchEvent(e);
 | |
|   is(tabs[1].__test_connection_prepared, false, "Second tab doesn't have a connection prepared");
 | |
|   is(tabs[1].__test_connection_url, TEST_URLS[0], "Second tab has correct url");
 | |
|   is(tabs[1].__SS_connectionPrepared, true, "Second tab should have __SS_connectionPrepared flag after hovered");
 | |
| 
 | |
|   // Trigger a mouse enter on third tab.
 | |
|   tabs[2].dispatchEvent(e);
 | |
|   is(tabs[2].__test_connection_prepared, true, "Third tab has a connection prepared");
 | |
|   is(tabs[2].__test_connection_url, TEST_URLS[1], "Third tab has correct url");
 | |
|   is(tabs[2].__SS_connectionPrepared, true, "Third tab should have __SS_connectionPrepared flag after hovered");
 | |
| 
 | |
|   // Last tab is the previously selected tab.
 | |
|   tabs[3].dispatchEvent(e);
 | |
|   is(tabs[3].__SS_connectionPrepared, undefined, "Previous selected tab shouldn't have __SS_connectionPrepared flag");
 | |
|   is(tabs[3].__test_connection_prepared, undefined, "Previous selected tab should not have a connection prepared");
 | |
|   is(tabs[3].__test_connection_url, undefined, "Previous selected tab should not have a connection prepared");
 | |
| 
 | |
|   await BrowserTestUtils.closeWindow(newWin);
 | |
| });
 | |
| 
 | |
| add_task(async function speculative_connect_restore_automatically() {
 | |
|   Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", false);
 | |
|   is(Services.prefs.getBoolPref("browser.sessionstore.restore_on_demand"), false, "We're restoring automatically");
 | |
|   forgetClosedWindows();
 | |
| 
 | |
|   // Open a new window and populate with tabs.
 | |
|   let win = await promiseNewWindowLoaded();
 | |
|   await openTabs(win);
 | |
| 
 | |
|   // Close the window.
 | |
|   await BrowserTestUtils.closeWindow(win);
 | |
| 
 | |
|   // Reopen a window.
 | |
|   let newWin = undoCloseWindow(0);
 | |
|   // Make sure we wait until this window is restored.
 | |
|   await BrowserTestUtils.waitForEvent(newWin, "load");
 | |
|   await BrowserTestUtils.waitForEvent(newWin.gBrowser.tabContainer, "SSTabRestored");
 | |
| 
 | |
|   let tabs = newWin.gBrowser.tabs;
 | |
|   is(tabs.length, TEST_URLS.length + 1, "Restored right number of tabs");
 | |
| 
 | |
|   // First tab is ignored, since it's the default tab open when we open new window
 | |
| 
 | |
|   // Second tab.
 | |
|   is(tabs[1].__test_connection_prepared, false, "Second tab doesn't have a connection prepared");
 | |
|   is(tabs[1].__test_connection_url, TEST_URLS[0], "Second tab has correct host url");
 | |
| 
 | |
|   // Third tab.
 | |
|   is(tabs[2].__test_connection_prepared, true, "Third tab has a connection prepared");
 | |
|   is(tabs[2].__test_connection_url, TEST_URLS[1], "Third tab has correct host url");
 | |
| 
 | |
|   // Last tab is the previously selected tab.
 | |
|   is(tabs[3].__test_connection_prepared, undefined, "Selected tab should not have a connection prepared");
 | |
|   is(tabs[3].__test_connection_url, undefined, "Selected tab should not have a connection prepared");
 | |
| 
 | |
|   await BrowserTestUtils.closeWindow(newWin);
 | |
| });
 |