Backed out changeset a7a3ec0f3d35 (bug 1908019) for causing multiple failures.
This commit is contained in:
@@ -1991,10 +1991,6 @@ pref("sidebar.animation.duration-ms", 200);
|
|||||||
pref("sidebar.main.tools", "aichat,syncedtabs,history");
|
pref("sidebar.main.tools", "aichat,syncedtabs,history");
|
||||||
pref("sidebar.verticalTabs", false);
|
pref("sidebar.verticalTabs", false);
|
||||||
pref("sidebar.visibility", "always-show");
|
pref("sidebar.visibility", "always-show");
|
||||||
// Sidebar UI state is stored per-window via session restore. Use this pref
|
|
||||||
// as a backup to restore the sidebar UI state when a user has PPB mode on
|
|
||||||
// or has history cleared on browser close.
|
|
||||||
pref("sidebar.backupState", "{}");
|
|
||||||
|
|
||||||
pref("browser.ml.chat.enabled", false);
|
pref("browser.ml.chat.enabled", false);
|
||||||
pref("browser.ml.chat.hideLocalhost", true);
|
pref("browser.ml.chat.hideLocalhost", true);
|
||||||
|
|||||||
@@ -4557,7 +4557,24 @@ var SessionStoreInternal = {
|
|||||||
delete winData.hidden;
|
delete winData.hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
winData.sidebar = aWindow.SidebarController.getUIState();
|
let sidebarBox = aWindow.document.getElementById("sidebar-box");
|
||||||
|
let command = sidebarBox.getAttribute("sidebarcommand");
|
||||||
|
winData.sidebar = {};
|
||||||
|
if (sidebarBox.style.width) {
|
||||||
|
winData.sidebar.width = sidebarBox.style.width;
|
||||||
|
}
|
||||||
|
if (command && sidebarBox.getAttribute("checked") == "true") {
|
||||||
|
winData.sidebar.command = command;
|
||||||
|
} else if (winData.sidebar?.command) {
|
||||||
|
delete winData.sidebar.command;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aWindow.SidebarController.revampComponentsLoaded) {
|
||||||
|
winData.sidebar = Object.assign(winData.sidebar || {}, {
|
||||||
|
expanded: aWindow.SidebarController.sidebarMain.expanded,
|
||||||
|
hidden: aWindow.SidebarController.sidebarContainer.hidden,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
let workspaceID = aWindow.getWorkspaceID();
|
let workspaceID = aWindow.getWorkspaceID();
|
||||||
if (workspaceID) {
|
if (workspaceID) {
|
||||||
@@ -5615,8 +5632,30 @@ var SessionStoreInternal = {
|
|||||||
* Object containing command (sidebarcommand/category) and styles
|
* Object containing command (sidebarcommand/category) and styles
|
||||||
*/
|
*/
|
||||||
restoreSidebar(aWindow, aSidebar, isPopup) {
|
restoreSidebar(aWindow, aSidebar, isPopup) {
|
||||||
|
if (!aSidebar) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!isPopup) {
|
if (!isPopup) {
|
||||||
aWindow.SidebarController.setUIState(aSidebar);
|
let sidebarBox = aWindow.document.getElementById("sidebar-box");
|
||||||
|
// Always restore sidebar width
|
||||||
|
if (aSidebar.width) {
|
||||||
|
sidebarBox.style.width = aSidebar.width;
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
aSidebar.command &&
|
||||||
|
(sidebarBox.getAttribute("sidebarcommand") != aSidebar.command ||
|
||||||
|
!sidebarBox.getAttribute("checked"))
|
||||||
|
) {
|
||||||
|
aWindow.SidebarController.showInitially(aSidebar.command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (aWindow.SidebarController.sidebarRevampEnabled) {
|
||||||
|
const { SidebarController } = aWindow;
|
||||||
|
SidebarController.promiseInitialized.then(() => {
|
||||||
|
SidebarController.toggleExpanded(aSidebar.expanded);
|
||||||
|
SidebarController.sidebarContainer.hidden = aSidebar.hidden;
|
||||||
|
SidebarController.updateToolbarButton();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -246,44 +246,3 @@ class TestSessionRestore(SessionStoreTestCase):
|
|||||||
),
|
),
|
||||||
"Sidebar visibility state has been restored.",
|
"Sidebar visibility state has been restored.",
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_restore_sidebar_open_from_backup_pref(self):
|
|
||||||
self.marionette.execute_script(
|
|
||||||
"""
|
|
||||||
Services.prefs.setBoolPref("sidebar.revamp", true);
|
|
||||||
Services.prefs.setBoolPref("browser.privatebrowsing.autostart", true);
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
self.marionette.restart()
|
|
||||||
self.marionette.set_context("chrome")
|
|
||||||
|
|
||||||
# Open the history panel.
|
|
||||||
self.marionette.execute_async_script(
|
|
||||||
"""
|
|
||||||
let resolve = arguments[0];
|
|
||||||
let window = BrowserWindowTracker.getTopWindow();
|
|
||||||
window.SidebarController.show("viewHistorySidebar").then(resolve);
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
|
|
||||||
# Restart the browser.
|
|
||||||
self.marionette.restart()
|
|
||||||
self.marionette.execute_async_script(
|
|
||||||
"""
|
|
||||||
let resolve = arguments[0];
|
|
||||||
let { BrowserInitState } = ChromeUtils.importESModule("resource:///modules/BrowserGlue.sys.mjs");
|
|
||||||
BrowserInitState.startupIdleTaskPromise.then(resolve);
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
|
|
||||||
# Check to see if the history panel was restored.
|
|
||||||
self.assertEqual(
|
|
||||||
self.marionette.execute_script(
|
|
||||||
"""
|
|
||||||
let window = BrowserWindowTracker.getTopWindow();
|
|
||||||
return window.SidebarController.currentID;
|
|
||||||
"""
|
|
||||||
),
|
|
||||||
"viewHistorySidebar",
|
|
||||||
"Correct sidebar category has been restored.",
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -5,8 +5,6 @@
|
|||||||
import { AppConstants } from "resource://gre/modules/AppConstants.sys.mjs";
|
import { AppConstants } from "resource://gre/modules/AppConstants.sys.mjs";
|
||||||
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
|
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
|
||||||
|
|
||||||
const BACKUP_STATE_PREF = "sidebar.backupState";
|
|
||||||
|
|
||||||
const lazy = {};
|
const lazy = {};
|
||||||
ChromeUtils.defineESModuleGetters(lazy, {
|
ChromeUtils.defineESModuleGetters(lazy, {
|
||||||
ExperimentAPI: "resource://nimbus/ExperimentAPI.sys.mjs",
|
ExperimentAPI: "resource://nimbus/ExperimentAPI.sys.mjs",
|
||||||
@@ -14,11 +12,6 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
|||||||
PrefUtils: "resource://normandy/lib/PrefUtils.sys.mjs",
|
PrefUtils: "resource://normandy/lib/PrefUtils.sys.mjs",
|
||||||
});
|
});
|
||||||
XPCOMUtils.defineLazyPreferenceGetter(lazy, "sidebarNimbus", "sidebar.nimbus");
|
XPCOMUtils.defineLazyPreferenceGetter(lazy, "sidebarNimbus", "sidebar.nimbus");
|
||||||
XPCOMUtils.defineLazyPreferenceGetter(
|
|
||||||
lazy,
|
|
||||||
"sidebarBackupState",
|
|
||||||
BACKUP_STATE_PREF
|
|
||||||
);
|
|
||||||
|
|
||||||
export const SidebarManager = {
|
export const SidebarManager = {
|
||||||
/**
|
/**
|
||||||
@@ -67,35 +60,6 @@ export const SidebarManager = {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* Provide a system-level "backup" state to be stored for those using "Never
|
|
||||||
* remember history" or "Clear history when browser closes".
|
|
||||||
*
|
|
||||||
* If it doesn't exist or isn't parsable, return `null`.
|
|
||||||
*
|
|
||||||
* @returns {object}
|
|
||||||
*/
|
|
||||||
getBackupState() {
|
|
||||||
try {
|
|
||||||
return JSON.parse(lazy.sidebarBackupState);
|
|
||||||
} catch (e) {
|
|
||||||
Services.prefs.clearUserPref(BACKUP_STATE_PREF);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the backup state.
|
|
||||||
*
|
|
||||||
* @param {object} state
|
|
||||||
*/
|
|
||||||
setBackupState(state) {
|
|
||||||
if (!state) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Services.prefs.setStringPref(BACKUP_STATE_PREF, JSON.stringify(state));
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Initialize on first import
|
// Initialize on first import
|
||||||
|
|||||||
@@ -408,14 +408,6 @@ var SidebarController = {
|
|||||||
this._tabstripOrientationObserverAdded = true;
|
this._tabstripOrientationObserverAdded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
requestIdleCallback(() => {
|
|
||||||
if (!this._uiState) {
|
|
||||||
// UI state has not been set by SessionStore. Use backup state for now.
|
|
||||||
const backupState = this.SidebarManager.getBackupState();
|
|
||||||
this.setUIState(backupState);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this._initDeferred.resolve();
|
this._initDeferred.resolve();
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -428,10 +420,8 @@ var SidebarController = {
|
|||||||
let enumerator = Services.wm.getEnumerator("navigator:browser");
|
let enumerator = Services.wm.getEnumerator("navigator:browser");
|
||||||
if (!enumerator.hasMoreElements()) {
|
if (!enumerator.hasMoreElements()) {
|
||||||
let xulStore = Services.xulStore;
|
let xulStore = Services.xulStore;
|
||||||
xulStore.persist(this._title, "value");
|
|
||||||
|
|
||||||
const currentState = this.getUIState();
|
xulStore.persist(this._title, "value");
|
||||||
this.SidebarManager.setBackupState(currentState);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Services.obs.removeObserver(this, "intl:app-locales-changed");
|
Services.obs.removeObserver(this, "intl:app-locales-changed");
|
||||||
@@ -456,50 +446,6 @@ var SidebarController = {
|
|||||||
this.browser.removeEventListener("resize", this._browserResizeObserver);
|
this.browser.removeEventListener("resize", this._browserResizeObserver);
|
||||||
},
|
},
|
||||||
|
|
||||||
getUIState() {
|
|
||||||
const state = { width: this._box.style.width, command: this.currentID };
|
|
||||||
if (this.sidebarRevampEnabled) {
|
|
||||||
state.expanded = this.sidebarMain.expanded;
|
|
||||||
state.hidden = this.sidebarContainer.hidden;
|
|
||||||
}
|
|
||||||
return state;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update and store the UI state of the sidebar for this window.
|
|
||||||
*
|
|
||||||
* @param {object} state
|
|
||||||
* @param {string} state.width
|
|
||||||
* Panel width of the sidebar.
|
|
||||||
* @param {string} state.command
|
|
||||||
* Panel ID that is currently open.
|
|
||||||
* @param {boolean} state.expanded
|
|
||||||
* Whether the sidebar launcher is expanded. (Revamp only)
|
|
||||||
* @param {boolean} state.hidden
|
|
||||||
* Whether the sidebar is hidden. (Revamp only)
|
|
||||||
*/
|
|
||||||
async setUIState(state) {
|
|
||||||
if (!state) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this._uiState = state;
|
|
||||||
if (state.width) {
|
|
||||||
this._box.style.width = state.width;
|
|
||||||
}
|
|
||||||
if (state.command && this.currentID != state.command && !this.isOpen) {
|
|
||||||
await this.showInitially(state.command);
|
|
||||||
}
|
|
||||||
if (this.sidebarRevampEnabled) {
|
|
||||||
// The `sidebar-main` component is lazy-loaded in the `init()` method.
|
|
||||||
// Wait this out to ensure that it is connected to the DOM before making
|
|
||||||
// any changes.
|
|
||||||
await this.promiseInitialized;
|
|
||||||
this.toggleExpanded(state.expanded);
|
|
||||||
this.sidebarContainer.hidden = state.hidden;
|
|
||||||
this.updateToolbarButton();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The handler for Services.obs.addObserver.
|
* The handler for Services.obs.addObserver.
|
||||||
*/
|
*/
|
||||||
@@ -746,8 +692,29 @@ var SidebarController = {
|
|||||||
this._box.setAttribute("sidebarcommand", commandID);
|
this._box.setAttribute("sidebarcommand", commandID);
|
||||||
}
|
}
|
||||||
|
|
||||||
const sourceControllerState = sourceController.getUIState();
|
// Adopt `expanded` and `hidden` states only if the opener was also using
|
||||||
this.setUIState(sourceControllerState);
|
// revamped sidebar.
|
||||||
|
if (this.sidebarRevampEnabled && sourceController.revampComponentsLoaded) {
|
||||||
|
this.promiseInitialized.then(() => {
|
||||||
|
this.sidebarContainer.hidden = sourceController.sidebarContainer.hidden;
|
||||||
|
this.toggleExpanded(sourceController.sidebarMain.expanded);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sourceController._box.hidden) {
|
||||||
|
// just hidden means we have adopted the hidden state.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// dynamically generated sidebars will fail this check, but we still
|
||||||
|
// consider it adopted.
|
||||||
|
if (!this.sidebars.has(commandID)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._box.style.width = sourceController._box.style.width;
|
||||||
|
this.showInitially(commandID);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user