Index: ash/common/wm_shell.cc |
diff --git a/ash/common/wm_shell.cc b/ash/common/wm_shell.cc |
index f86da79a99ec144c7bcf2f7312743accfaf33c36..5635d7598883c1efdbb99d0a8872923085f06817 100644 |
--- a/ash/common/wm_shell.cc |
+++ b/ash/common/wm_shell.cc |
@@ -153,11 +153,6 @@ void WmShell::CreateShelf() { |
root_window->GetRootWindowController()->CreateShelf(); |
} |
-void WmShell::ShowShelf() { |
- for (WmWindow* root_window : GetAllRootWindows()) |
- root_window->GetRootWindowController()->ShowShelf(); |
-} |
- |
void WmShell::CreateShelfDelegate() { |
// May be called multiple times as shelves are created and destroyed. |
if (shelf_delegate_) |
@@ -274,6 +269,7 @@ WmShell::WmShell(std::unique_ptr<ShellDelegate> shell_delegate) |
window_cycle_controller_(base::MakeUnique<WindowCycleController>()), |
window_selector_controller_( |
base::MakeUnique<WindowSelectorController>()) { |
+ session_controller_->AddSessionStateObserver(this); |
prefs::mojom::PreferencesManagerPtr pref_manager_ptr; |
// Can be null in tests. |
@@ -284,7 +280,9 @@ WmShell::WmShell(std::unique_ptr<ShellDelegate> shell_delegate) |
pref_store_ = new preferences::PrefObserverStore(std::move(pref_manager_ptr)); |
} |
-WmShell::~WmShell() {} |
+WmShell::~WmShell() { |
+ session_controller_->RemoveSessionStateObserver(this); |
+} |
WmRootWindowController* WmShell::GetPrimaryRootWindowController() { |
return GetPrimaryRootWindow()->GetRootWindowController(); |
@@ -418,4 +416,11 @@ void WmShell::SetAcceleratorController( |
accelerator_controller_ = std::move(accelerator_controller); |
} |
+void WmShell::SessionStateChanged(session_manager::SessionState state) { |
+ // Create the shelf when a session becomes active. It's safe to do this |
+ // multiple times (e.g. initial login vs. multiprofile add session). |
+ if (state == session_manager::SessionState::ACTIVE) |
+ CreateShelf(); |
+} |
+ |
} // namespace ash |