diff options
Diffstat (limited to 'browser/components/sessionstore/test/browser_477657.js')
-rw-r--r-- | browser/components/sessionstore/test/browser_477657.js | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/browser/components/sessionstore/test/browser_477657.js b/browser/components/sessionstore/test/browser_477657.js new file mode 100644 index 0000000000..10f8fa761c --- /dev/null +++ b/browser/components/sessionstore/test/browser_477657.js @@ -0,0 +1,80 @@ +/* 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/. */ + +add_task(async function test_sizemodeDefaults() { + /** Test for Bug 477657 **/ + let newWin = openDialog(location, "_blank", "chrome,all,dialog=no"); + await promiseWindowLoaded(newWin); + let newState = { + windows: [ + { + tabs: [{ entries: [] }], + _closedTabs: [ + { + state: { entries: [{ url: "about:" }] }, + title: "About:", + }, + ], + sizemode: "maximized", + }, + ], + }; + + let uniqueKey = "bug 477657"; + let uniqueValue = "unik" + Date.now(); + + ss.setCustomWindowValue(newWin, uniqueKey, uniqueValue); + is( + ss.getCustomWindowValue(newWin, uniqueKey), + uniqueValue, + "window value was set before the window was overwritten" + ); + + await setWindowState(newWin, newState, true); + // use newWin.setTimeout(..., 0) to mirror sss_restoreWindowFeatures + await new Promise(resolve => newWin.setTimeout(resolve, 0)); + + is( + ss.getCustomWindowValue(newWin, uniqueKey), + "", + "window value was implicitly cleared" + ); + + is(newWin.windowState, newWin.STATE_MAXIMIZED, "the window was maximized"); + + is( + ss.getClosedTabData(newWin).length, + 1, + "the closed tab was added before the window was overwritten" + ); + delete newState.windows[0]._closedTabs; + delete newState.windows[0].sizemode; + + await setWindowState(newWin, newState, true); + await new Promise(resolve => newWin.setTimeout(resolve, 0)); + + is( + ss.getClosedTabData(newWin).length, + 0, + "closed tabs were implicitly cleared" + ); + + is( + newWin.windowState, + newWin.STATE_MAXIMIZED, + "the window remains maximized" + ); + newState.windows[0].sizemode = "normal"; + + await setWindowState(newWin, newState, true); + await new Promise(resolve => newWin.setTimeout(resolve, 0)); + + isnot( + newWin.windowState, + newWin.STATE_MAXIMIZED, + "the window was explicitly unmaximized" + ); + + await BrowserTestUtils.closeWindow(newWin); +}); |