forked from mirrors/gecko-dev
		
	 1f830c96da
			
		
	
	
		1f830c96da
		
	
	
	
	
		
			
			# ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D36042 --HG-- extra : source : d3afcafdce650a6f36cebbc126ee93b17f13cf52
		
			
				
	
	
		
			105 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| // Only windows with open tabs are restorable. Windows where a lone tab is
 | |
| // detached may have _closedTabs, but is left with just an empty tab.
 | |
| const STATES = [
 | |
|   {
 | |
|     shouldBeAdded: true,
 | |
|     windowState: {
 | |
|       windows: [
 | |
|         {
 | |
|           tabs: [
 | |
|             {
 | |
|               entries: [
 | |
|                 {
 | |
|                   url: "http://example.com",
 | |
|                   triggeringPrincipal_base64,
 | |
|                   title: "example.com",
 | |
|                 },
 | |
|               ],
 | |
|             },
 | |
|           ],
 | |
|           selected: 1,
 | |
|           _closedTabs: [],
 | |
|         },
 | |
|       ],
 | |
|     },
 | |
|   },
 | |
|   {
 | |
|     shouldBeAdded: false,
 | |
|     windowState: {
 | |
|       windows: [
 | |
|         {
 | |
|           tabs: [{ entries: [] }],
 | |
|           _closedTabs: [],
 | |
|         },
 | |
|       ],
 | |
|     },
 | |
|   },
 | |
|   {
 | |
|     shouldBeAdded: false,
 | |
|     windowState: {
 | |
|       windows: [
 | |
|         {
 | |
|           tabs: [{ entries: [] }],
 | |
|           _closedTabs: [
 | |
|             {
 | |
|               state: {
 | |
|                 entries: [
 | |
|                   {
 | |
|                     url: "http://example.com",
 | |
|                     triggeringPrincipal_base64,
 | |
|                     index: 1,
 | |
|                   },
 | |
|                 ],
 | |
|               },
 | |
|             },
 | |
|           ],
 | |
|         },
 | |
|       ],
 | |
|     },
 | |
|   },
 | |
|   {
 | |
|     shouldBeAdded: false,
 | |
|     windowState: {
 | |
|       windows: [
 | |
|         {
 | |
|           tabs: [{ entries: [] }],
 | |
|           _closedTabs: [],
 | |
|           extData: { keyname: "pi != " + Math.random() },
 | |
|         },
 | |
|       ],
 | |
|     },
 | |
|   },
 | |
| ];
 | |
| 
 | |
| add_task(async function test_bug_490040() {
 | |
|   for (let state of STATES) {
 | |
|     // Ensure we can store the window if needed.
 | |
|     let startingClosedWindowCount = ss.getClosedWindowCount();
 | |
|     await pushPrefs([
 | |
|       "browser.sessionstore.max_windows_undo",
 | |
|       startingClosedWindowCount + 1,
 | |
|     ]);
 | |
| 
 | |
|     let curClosedWindowCount = ss.getClosedWindowCount();
 | |
|     let win = await BrowserTestUtils.openNewBrowserWindow();
 | |
| 
 | |
|     await setWindowState(win, state.windowState, true);
 | |
|     if (state.windowState.windows[0].tabs.length) {
 | |
|       await BrowserTestUtils.browserLoaded(win.gBrowser.selectedBrowser);
 | |
|     }
 | |
| 
 | |
|     await BrowserTestUtils.closeWindow(win);
 | |
| 
 | |
|     is(
 | |
|       ss.getClosedWindowCount(),
 | |
|       curClosedWindowCount + (state.shouldBeAdded ? 1 : 0),
 | |
|       "That window should " +
 | |
|         (state.shouldBeAdded ? "" : "not ") +
 | |
|         "be restorable"
 | |
|     );
 | |
|   }
 | |
| });
 |