forked from mirrors/gecko-dev
		
	# 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"
 | 
						|
    );
 | 
						|
  }
 | 
						|
});
 |