author | Paolo Amadini <paolo.mozmail@amadzone.org> |
Thu, 23 Feb 2012 11:30:23 +0100 | |
changeset 87716 | efa3c85f1f372755b7b1e71c1603c40a496ae708 |
parent 87715 | a6589012675086b98bf5591bfef5c62590b6064f |
child 87717 | 911c4d5ae460b4f0a0f64ccba133a6e65c547991 |
push id | 22143 |
push user | philringnalda@gmail.com |
push date | Sun, 26 Feb 2012 23:12:35 +0000 |
treeherder | mozilla-central@b98fc24ac54b [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | zpao |
bugs | 711193 |
milestone | 13.0a1 |
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/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -794,17 +794,17 @@ pref("browser.sessionstore.max_windows_u // number of crashes that can occur before the about:sessionrestore page is displayed // (this pref has no effect if more than 6 hours have passed since the last crash) pref("browser.sessionstore.max_resumed_crashes", 1); // restore_on_demand overrides MAX_CONCURRENT_TAB_RESTORES (sessionstore constant) // and restore_hidden_tabs. When true, tabs will not be restored until they are // focused (also applies to tabs that aren't visible). When false, the values // for MAX_CONCURRENT_TAB_RESTORES and restore_hidden_tabs are respected. // Selected tabs are always restored regardless of this pref. -pref("browser.sessionstore.restore_on_demand", false); +pref("browser.sessionstore.restore_on_demand", true); // Whether to automatically restore hidden tabs (i.e., tabs in other tab groups) or not pref("browser.sessionstore.restore_hidden_tabs", false); // If restore_on_demand is set, pinned tabs are restored on startup by default. // When set to true, this pref overrides that behavior, and pinned tabs will only // be restored when they are focused. pref("browser.sessionstore.restore_pinned_tabs_on_demand", false); // allow META refresh by default
--- a/browser/base/content/test/browser_tabMatchesInAwesomebar.js +++ b/browser/base/content/test/browser_tabMatchesInAwesomebar.js @@ -72,34 +72,35 @@ var gTestSteps = [ loadTab(gBrowser.tabs[i], TEST_URL_BASES[0] + gTabCounter); }, function() { info("Running step 4"); let ps = Services.prefs; ps.setBoolPref("browser.privatebrowsing.keep_current_session", true); ps.setBoolPref("browser.tabs.warnOnClose", false); + // Make sure that all restored tabs are loaded without waiting for the user + // to bring them to the foreground. We ensure this by resetting the + // related preference (see the "firefox.js" defaults file for details). + ps.setBoolPref("browser.sessionstore.restore_on_demand", false); + gPrivateBrowsing.privateBrowsingEnabled = true; executeSoon(function() { ensure_opentabs_match_db(nextStep); }); }, function() { info("Running step 5"); gPrivateBrowsing.privateBrowsingEnabled = false; executeSoon(function() { let ps = Services.prefs; - try { - ps.clearUserPref("browser.privatebrowsing.keep_current_session"); - } catch (ex) {} - try { - ps.clearUserPref("browser.tabs.warnOnClose"); - } catch (ex) {} + ps.clearUserPref("browser.privatebrowsing.keep_current_session"); + ps.clearUserPref("browser.tabs.warnOnClose"); ensure_opentabs_match_db(nextStep); }); }, function() { info("Running step 6 - ensure we don't register subframes as open pages"); let tab = gBrowser.addTab(); tab.linkedBrowser.addEventListener("load", function () { @@ -164,32 +165,31 @@ var gTestSteps = [ }, function() { info("Running step 12 - leave private browsing mode"); Services.obs.addObserver(function(aSubject, aTopic, aData) { Services.obs.removeObserver(arguments.callee, "private-browsing-transition-complete"); let ps = Services.prefs; - try { - ps.clearUserPref("browser.privatebrowsing.keep_current_session"); - } catch (ex) {} - try { - ps.clearUserPref("browser.tabs.warnOnClose"); - } catch (ex) {} + ps.clearUserPref("browser.privatebrowsing.keep_current_session"); + ps.clearUserPref("browser.tabs.warnOnClose"); for (let i = 1; i < gBrowser.tabs.length; i++) waitForRestoredTab(gBrowser.tabs[i]); }, "private-browsing-transition-complete", false); gPrivateBrowsing.privateBrowsingEnabled = false; }, function() { info("Running step 13 - close all tabs"); + + Services.prefs.clearUserPref("browser.sessionstore.restore_on_demand"); + gBrowser.addTab("about:blank", {skipAnimation: true}); while (gBrowser.tabs.length > 1) { info("Removing tab: " + gBrowser.tabs[0].linkedBrowser.currentURI.spec); gBrowser.selectTabAtIndex(0); gBrowser.removeCurrentTab(); } ensure_opentabs_match_db(nextStep); }
--- a/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_beforeunload.js +++ b/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_beforeunload.js @@ -55,36 +55,36 @@ function test() { dialogWin.document.documentElement.getButton("accept").click(); else if (rejectDialog-- > 0) dialogWin.document.documentElement.getButton("cancel").click(); } Services.obs.addObserver(promptObserver, "common-dialog-loaded", false); waitForExplicitFinish(); - let browser1 = gBrowser.getBrowserForTab(gBrowser.addTab()); + let browser1 = gBrowser.addTab().linkedBrowser; browser1.addEventListener("load", function() { browser1.removeEventListener("load", arguments.callee, true); - let browser2 = gBrowser.getBrowserForTab(gBrowser.addTab()); + let browser2 = gBrowser.addTab().linkedBrowser; browser2.addEventListener("load", function() { browser2.removeEventListener("load", arguments.callee, true); rejectDialog = 1; pb.privateBrowsingEnabled = true; ok(!pb.privateBrowsingEnabled, "Private browsing mode should not have been activated"); is(confirmCalls, 1, "Only one confirm box should be shown"); is(gBrowser.tabs.length, 3, "No tabs should be closed because private browsing mode transition was canceled"); - is(gBrowser.getBrowserForTab(gBrowser.tabContainer.firstChild).currentURI.spec, "about:blank", + is(gBrowser.tabContainer.firstChild.linkedBrowser.currentURI.spec, "about:blank", "The first tab should be a blank tab"); - is(gBrowser.getBrowserForTab(gBrowser.tabContainer.firstChild.nextSibling).currentURI.spec, TEST_PAGE_1, + is(gBrowser.tabContainer.firstChild.nextSibling.linkedBrowser.currentURI.spec, TEST_PAGE_1, "The middle tab should be the same one we opened"); - is(gBrowser.getBrowserForTab(gBrowser.tabContainer.lastChild).currentURI.spec, TEST_PAGE_2, + is(gBrowser.tabContainer.lastChild.linkedBrowser.currentURI.spec, TEST_PAGE_2, "The last tab should be the same one we opened"); is(rejectDialog, 0, "Only one confirm dialog should have been rejected"); confirmCalls = 0; acceptDialog = 2; pb.privateBrowsingEnabled = true; ok(pb.privateBrowsingEnabled, "Private browsing mode should have been activated"); @@ -108,53 +108,59 @@ function test() { confirmCalls = 0; rejectDialog = 1; pb.privateBrowsingEnabled = false; ok(pb.privateBrowsingEnabled, "Private browsing mode should not have been deactivated"); is(confirmCalls, 1, "Only one confirm box should be shown"); is(gBrowser.tabs.length, 2, "No tabs should be closed because private browsing mode transition was canceled"); - is(gBrowser.getBrowserForTab(gBrowser.tabContainer.firstChild).currentURI.spec, TEST_PAGE_1, + is(gBrowser.tabContainer.firstChild.linkedBrowser.currentURI.spec, TEST_PAGE_1, "The first tab should be the same one we opened"); - is(gBrowser.getBrowserForTab(gBrowser.tabContainer.lastChild).currentURI.spec, TEST_PAGE_2, + is(gBrowser.tabContainer.lastChild.linkedBrowser.currentURI.spec, TEST_PAGE_2, "The last tab should be the same one we opened"); is(rejectDialog, 0, "Only one confirm dialog should have been rejected"); + // Ensure that all restored tabs are loaded without waiting for the + // user to bring them to the foreground, by resetting the related + // preference (see the "firefox.js" defaults file for details). + Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", false); + confirmCalls = 0; acceptDialog = 2; pb.privateBrowsingEnabled = false; ok(!pb.privateBrowsingEnabled, "Private browsing mode should have been deactivated"); is(confirmCalls, 2, "Only two confirm boxes should be shown"); is(gBrowser.tabs.length, 3, "Incorrect number of tabs after transition into private browsing"); let loads = 0; function waitForLoad(event) { gBrowser.removeEventListener("load", arguments.callee, true); if (++loads != 3) return; - is(gBrowser.getBrowserForTab(gBrowser.tabContainer.firstChild).currentURI.spec, "about:blank", + is(gBrowser.tabContainer.firstChild.linkedBrowser.currentURI.spec, "about:blank", "The first tab should be a blank tab"); - is(gBrowser.getBrowserForTab(gBrowser.tabContainer.firstChild.nextSibling).currentURI.spec, TEST_PAGE_1, + is(gBrowser.tabContainer.firstChild.nextSibling.linkedBrowser.currentURI.spec, TEST_PAGE_1, "The middle tab should be the same one we opened"); - is(gBrowser.getBrowserForTab(gBrowser.tabContainer.lastChild).currentURI.spec, TEST_PAGE_2, + is(gBrowser.tabContainer.lastChild.linkedBrowser.currentURI.spec, TEST_PAGE_2, "The last tab should be the same one we opened"); is(acceptDialog, 0, "Two confirm dialogs should have been accepted"); is(acceptDialog, 0, "Two prompts should have been raised"); acceptDialog = 2; gBrowser.removeTab(gBrowser.tabContainer.lastChild); gBrowser.removeTab(gBrowser.tabContainer.lastChild); gBrowser.getBrowserAtIndex(gBrowser.tabContainer.selectedIndex).contentWindow.focus(); Services.obs.removeObserver(promptObserver, "common-dialog-loaded", false); + Services.prefs.clearUserPref("browser.sessionstore.restore_on_demand"); finish(); } for (let i = 0; i < gBrowser.browsers.length; ++i) gBrowser.browsers[i].addEventListener("load", waitForLoad, true); }, true); gBrowser.selectedBrowser.loadURI(TEST_PAGE_2); }, true); gBrowser.selectedBrowser.loadURI(TEST_PAGE_1);
--- a/browser/components/sessionstore/test/browser_586068-cascaded_restore.js +++ b/browser/components/sessionstore/test/browser_586068-cascaded_restore.js @@ -85,16 +85,18 @@ function runNextTest() { else { ss.setBrowserState(stateBackup); executeSoon(finish); } } function test_cascade() { + Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", false); + // We have our own progress listener for this test, which we'll attach before our state is set let progressListener = { onStateChange: function (aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) { dump("\n\nload: " + aBrowser.currentURI.spec + "\n" + JSON.stringify(countTabs()) + "\n\n"); if (aBrowser.__SS_restoreState == TAB_STATE_RESTORING && aStateFlags & Ci.nsIWebProgressListener.STATE_STOP && aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK && aStateFlags & Ci.nsIWebProgressListener.STATE_IS_WINDOW) @@ -215,16 +217,18 @@ function test_select() { } window.gBrowser.addTabsProgressListener(progressListener); ss.setBrowserState(JSON.stringify(state)); } function test_multiWindowState() { + Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", false); + // We have our own progress listener for this test, which we'll attach before our state is set let progressListener = { onStateChange: function (aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) { // We only care about load events when the tab still has // __SS_restoreState == TAB_STATE_RESTORING on it. // Since our listener is attached before the sessionstore one, this works out. if (aBrowser.__SS_restoreState == TAB_STATE_RESTORING && aStateFlags & Ci.nsIWebProgressListener.STATE_STOP && @@ -292,16 +296,18 @@ function test_multiWindowState() { Services.ww.registerNotification(windowObserver); window.gBrowser.addTabsProgressListener(progressListener); ss.setBrowserState(JSON.stringify(state)); } function test_setWindowStateNoOverwrite() { + Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", false); + // We have our own progress listener for this test, which we'll attach before our state is set let progressListener = { onStateChange: function (aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) { // We only care about load events when the tab still has // __SS_restoreState == TAB_STATE_RESTORING on it. // Since our listener is attached before the sessionstore one, this works out. if (aBrowser.__SS_restoreState == TAB_STATE_RESTORING && aStateFlags & Ci.nsIWebProgressListener.STATE_STOP && @@ -361,16 +367,18 @@ function test_setWindowStateNoOverwrite( } window.gBrowser.addTabsProgressListener(progressListener); ss.setWindowState(window, JSON.stringify(state1), true); } function test_setWindowStateOverwrite() { + Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", false); + // We have our own progress listener for this test, which we'll attach before our state is set let progressListener = { onStateChange: function (aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) { // We only care about load events when the tab still has // __SS_restoreState == TAB_STATE_RESTORING on it. // Since our listener is attached before the sessionstore one, this works out. if (aBrowser.__SS_restoreState == TAB_STATE_RESTORING && aStateFlags & Ci.nsIWebProgressListener.STATE_STOP && @@ -430,16 +438,18 @@ function test_setWindowStateOverwrite() } window.gBrowser.addTabsProgressListener(progressListener); ss.setWindowState(window, JSON.stringify(state1), true); } function test_setBrowserStateInterrupted() { + Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", false); + // We have our own progress listener for this test, which we'll attach before our state is set let progressListener = { onStateChange: function (aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) { // We only care about load events when the tab still has // __SS_restoreState == TAB_STATE_RESTORING on it. // Since our listener is attached before the sessionstore one, this works out. if (aBrowser.__SS_restoreState == TAB_STATE_RESTORING && aStateFlags & Ci.nsIWebProgressListener.STATE_STOP && @@ -622,16 +632,18 @@ function test_reload() { window.gBrowser.addTabsProgressListener(progressListener); ss.setBrowserState(JSON.stringify(state)); } // This doesn't actually test anything, just does a cascaded restore with default // settings. This really just sets up to test that reloads work. function test_reloadCascadeSetup() { + Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", false); + // We have our own progress listener for this test, which we'll attach before our state is set let progressListener = { onStateChange: function (aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) { if (aBrowser.__SS_restoreState == TAB_STATE_RESTORING && aStateFlags & Ci.nsIWebProgressListener.STATE_STOP && aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK && aStateFlags & Ci.nsIWebProgressListener.STATE_IS_WINDOW) test_cascadeReloadSetup_progressCallback();
--- a/browser/components/sessionstore/test/head.js +++ b/browser/components/sessionstore/test/head.js @@ -32,16 +32,24 @@ * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ let ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore); +// Some tests here assume that all restored tabs are loaded without waiting for +// the user to bring them to the foreground. We ensure this by resetting the +// related preference (see the "firefox.js" defaults file for details). +Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", false); +registerCleanupFunction(function () { + Services.prefs.clearUserPref("browser.sessionstore.restore_on_demand"); +}); + // This assumes that tests will at least have some state/entries function waitForBrowserState(aState, aSetStateCallback) { let windows = [window]; let tabsRestored = 0; let expectedTabsRestored = 0; let expectedWindows = aState.windows.length; let windowsOpen = 1; let listening = false;
--- a/browser/components/tabview/test/head.js +++ b/browser/components/tabview/test/head.js @@ -1,11 +1,20 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ +// Some tests here assume that all restored tabs are loaded without waiting for +// the user to bring them to the foreground. We ensure this by resetting the +// related preference (see the "firefox.js" defaults file for details). +Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", false); +registerCleanupFunction(function () { + Services.prefs.clearUserPref("browser.sessionstore.restore_on_demand"); +}); + +// ---------- function createEmptyGroupItem(contentWindow, width, height, padding, animate) { let pageBounds = contentWindow.Items.getPageBounds(); pageBounds.inset(padding, padding); let box = new contentWindow.Rect(pageBounds); box.width = width; box.height = height;