author | Ed Morley <emorley@mozilla.com> |
Mon, 17 Dec 2012 12:43:55 +0000 | |
changeset 116271 | 10cb0e3aac02f306797a301da67fd421389ce655 |
parent 116270 | c56a4fcc3acc30dd959df131e03626ffd31ffccb |
child 116272 | 3ad6ca44ce5b739953a8fde90b60e34eb07f7e21 |
push id | 24045 |
push user | ryanvm@gmail.com |
push date | Tue, 18 Dec 2012 00:23:36 +0000 |
treeherder | mozilla-central@2e70b718903a [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
bugs | 819510, 822093 |
milestone | 20.0a1 |
backs out | e28f0f4b25a4e76ab368a88b12fd67a29c9faefd |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/browser/components/sessionstore/src/SessionStore.jsm +++ b/browser/components/sessionstore/src/SessionStore.jsm @@ -3706,19 +3706,16 @@ let SessionStoreInternal = { return; } #ifdef MOZ_PER_WINDOW_PRIVATE_BROWSING // Forget about private windows. for (let i = oState.windows.length - 1; i >= 0; i--) { if (oState.windows[i].isPrivate) { oState.windows.splice(i, 1); - if (oState.selectedWindow >= i) { - oState.selectedWindow--; - } } } for (let i = oState._closedWindows.length - 1; i >= 0; i--) { if (oState._closedWindows[i].isPrivate) { oState._closedWindows.splice(i, 1); } } #endif
--- a/browser/components/sessionstore/test/Makefile.in +++ b/browser/components/sessionstore/test/Makefile.in @@ -132,17 +132,16 @@ MOCHITEST_BROWSER_FILES = \ $(filter disabled-for-intermittent-failures--bug-766044, browser_459906_sample.html) \ $(filter disabled-for-intermittent-failures--bug-765389, browser_461743_sample.html) \ $(NULL) ifdef MOZ_PER_WINDOW_PRIVATE_BROWSING MOCHITEST_BROWSER_FILES += \ browser_354894_perwindowpb.js \ browser_394759_perwindowpb.js \ - browser_819510_perwindowpb.js \ $(NULL) else MOCHITEST_BROWSER_FILES += \ browser_248970_a.js \ browser_248970_b.js \ browser_354894.js \ browser_394759_privatebrowsing.js \ $(NULL)
deleted file mode 100644 --- a/browser/components/sessionstore/test/browser_819510_perwindowpb.js +++ /dev/null @@ -1,171 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -const originalState = ss.getBrowserState(); - -/** Private Browsing Test for Bug 819510 **/ -function test() { - waitForExplicitFinish(); - - registerCleanupFunction(function() { - Services.prefs.clearUserPref("browser.sessionstore.interval"); - ss.setBrowserState(originalState); - }); - - runNextTest(); -} - -let tests = [ - test_1, - test_2, - test_3, -]; - -const testState = { - windows: [{ - tabs: [ - { entries: [{ url: "about:blank" }] }, - ] - }] -}; - -function runNextTest() { - // Set an empty state - let windowsEnum = Services.wm.getEnumerator("navigator:browser"); - while (windowsEnum.hasMoreElements()) { - let currentWindow = windowsEnum.getNext(); - if (currentWindow != window) { - currentWindow.close(); - } - } - - // Run the next test, or finish - if (tests.length) { - let currentTest = tests.shift(); - waitForBrowserState(testState, currentTest); - } - else { - Services.prefs.clearUserPref("browser.sessionstore.interval"); - ss.setBrowserState(originalState); - finish(); - } -} - -// Test opening default mochitest-normal-private-normal-private windows -// (saving the state with last window being private) -function test_1() { - testOnWindow(false, function(aWindow) { - aWindow.gBrowser.addTab("http://www.example.com/1"); - testOnWindow(true, function(aWindow) { - aWindow.gBrowser.addTab("http://www.example.com/2"); - testOnWindow(false, function(aWindow) { - aWindow.gBrowser.addTab("http://www.example.com/3"); - testOnWindow(true, function(aWindow) { - aWindow.gBrowser.addTab("http://www.example.com/4"); - - let curState = JSON.parse(ss.getBrowserState()); - is (curState.windows.length, 5, "Browser has opened 5 windows"); - is (curState.windows[2].isPrivate, true, "Window is private"); - is (curState.windows[4].isPrivate, true, "Last window is private"); - is (curState.selectedWindow, 5, "Last window opened is the one selected"); - - Services.obs.addObserver(function observe(aSubject, aTopic, aData) { - Services.obs.removeObserver(observe, aTopic); - aSubject.QueryInterface(Ci.nsISupportsString); - let state = JSON.parse(aSubject.data); - is(state.windows.length, 3, - "sessionstore state: 3 windows in data being writted to disk"); - is (state.selectedWindow, 3, - "Selected window is updated to match one of the saved windows"); - state.windows.forEach(function(win) { - is(!win.isPrivate, true, "Saved window is not private"); - }); - is(state._closedWindows.length, 0, - "sessionstore state: no closed windows in data being writted to disk"); - runNextTest(); - }, "sessionstore-state-write", false); - - Services.prefs.setIntPref("browser.sessionstore.interval", 0); - }); - }); - }); - }); -} - -// Test opening default mochitest window + 2 private windows -function test_2() { -testOnWindow(true, function(aWindow) { - aWindow.gBrowser.addTab("http://www.example.com/1"); - testOnWindow(true, function(aWindow) { - aWindow.gBrowser.addTab("http://www.example.com/2"); - - let curState = JSON.parse(ss.getBrowserState()); - is (curState.windows.length, 3, "Browser has opened 3 windows"); - is (curState.windows[1].isPrivate, true, "Window 1 is private"); - is (curState.windows[2].isPrivate, true, "Window 2 is private"); - is (curState.selectedWindow, 3, "Last window opened is the one selected"); - - Services.obs.addObserver(function observe(aSubject, aTopic, aData) { - Services.obs.removeObserver(observe, aTopic); - aSubject.QueryInterface(Ci.nsISupportsString); - let state = JSON.parse(aSubject.data); - is(state.windows.length, 1, - "sessionstore state: 1 windows in data being writted to disk"); - is (state.selectedWindow, 1, - "Selected window is updated to match one of the saved windows"); - is(state._closedWindows.length, 0, - "sessionstore state: no closed windows in data being writted to disk"); - runNextTest(); - }, "sessionstore-state-write", false); - Services.prefs.setIntPref("browser.sessionstore.interval", 0); - }); -}); -} - -// Test opening default-normal-private-normal windows and closing a normal window -function test_3() { - testOnWindow(false, function(normalWindow) { - normalWindow.gBrowser.addTab("http://www.example.com/1"); - testOnWindow(true, function(aWindow) { - aWindow.gBrowser.addTab("http://www.example.com/2"); - testOnWindow(false, function(aWindow) { - aWindow.gBrowser.addTab("http://www.example.com/3"); - - let curState = JSON.parse(ss.getBrowserState()); - is (curState.windows.length, 4, "Browser has opened 4 windows"); - is (curState.windows[2].isPrivate, true, "Window 2 is private"); - is (curState.selectedWindow, 4, "Last window opened is the one selected"); - - normalWindow.close(); - Services.obs.addObserver(function observe(aSubject, aTopic, aData) { - Services.obs.removeObserver(observe, aTopic); - aSubject.QueryInterface(Ci.nsISupportsString); - let state = JSON.parse(aSubject.data); - is(state.windows.length, 2, - "sessionstore state: 2 windows in data being writted to disk"); - is (state.selectedWindow, 2, - "Selected window is updated to match one of the saved windows"); - state.windows.forEach(function(win) { - is(!win.isPrivate, true, "Saved window is not private"); - }); - is(state._closedWindows.length, 1, - "sessionstore state: 1 closed window in data being writted to disk"); - state._closedWindows.forEach(function(win) { - is(!win.isPrivate, true, "Closed window is not private"); - }); - runNextTest(); - }, "sessionstore-state-write", false); - - Services.prefs.setIntPref("browser.sessionstore.interval", 0); - }); - }); - }); -} - -function testOnWindow(aIsPrivate, aCallback) { - let win = OpenBrowserWindow({private: aIsPrivate}); - win.addEventListener("load", function onLoad() { - win.removeEventListener("load", onLoad, false); - executeSoon(function() { aCallback(win); }); - }, false); -}