diff -r 000000000000 -r 6474c204b198 browser/components/sessionstore/test/browser_618151.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/components/sessionstore/test/browser_618151.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,62 @@ +/* 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/. */ + +const stateBackup = ss.getBrowserState(); +const testState = { + windows: [{ + tabs: [ + { entries: [{ url: "about:blank" }] }, + { entries: [{ url: "about:mozilla" }] } + ] + }] +}; + + +function test() { + /** Test for Bug 618151 - Overwriting state can lead to unrestored tabs **/ + waitForExplicitFinish(); + runNextTest(); +} + +// Just a subset of tests from bug 615394 that causes a timeout. +let tests = [test_setup, test_hang]; +function runNextTest() { + // set an empty state & run the next test, or finish + if (tests.length) { + // Enumerate windows and close everything but our primary window. We can't + // use waitForFocus() because apparently it's buggy. See bug 599253. + var windowsEnum = Services.wm.getEnumerator("navigator:browser"); + while (windowsEnum.hasMoreElements()) { + var currentWindow = windowsEnum.getNext(); + if (currentWindow != window) { + currentWindow.close(); + } + } + + let currentTest = tests.shift(); + info("running " + currentTest.name); + waitForBrowserState(testState, currentTest); + } + else { + ss.setBrowserState(stateBackup); + executeSoon(finish); + } +} + +function test_setup() { + function onSSTabRestored(aEvent) { + gBrowser.tabContainer.removeEventListener("SSTabRestored", onSSTabRestored, false); + runNextTest(); + } + + gBrowser.tabContainer.addEventListener("SSTabRestored", onSSTabRestored, false); + ss.setTabState(gBrowser.tabs[1], JSON.stringify({ + entries: [{ url: "http://example.org" }], + extData: { foo: "bar" } })); +} + +function test_hang() { + ok(true, "test didn't time out"); + runNextTest(); +}