forked from mirrors/gecko-dev
		
	MozReview-Commit-ID: 5d1E5TjKnIR --HG-- extra : rebase_source : be521af44edeae3f218602b4e279cfeb17ae866f
		
			
				
	
	
		
			65 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
	
		
			2 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");
 | 
						|
  }
 | 
						|
});
 |