Index: ash/common/wm_shell.cc |
diff --git a/ash/common/wm_shell.cc b/ash/common/wm_shell.cc |
index 7f4f6838c81b86ac8ba0a2454a7f6970164a5456..0bd31c79726c93aee3144a0d5907229ba092c74d 100644 |
--- a/ash/common/wm_shell.cc |
+++ b/ash/common/wm_shell.cc |
@@ -151,11 +151,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_) |
@@ -272,9 +267,12 @@ WmShell::WmShell(std::unique_ptr<ShellDelegate> shell_delegate) |
keyboard_brightness_control_delegate_.reset(new KeyboardBrightnessController); |
vpn_list_ = base::MakeUnique<VpnList>(); |
#endif |
+ session_controller_->AddSessionStateObserver(this); |
} |
-WmShell::~WmShell() {} |
+WmShell::~WmShell() { |
+ session_controller_->RemoveSessionStateObserver(this); |
+} |
WmRootWindowController* WmShell::GetPrimaryRootWindowController() { |
return GetPrimaryRootWindow()->GetRootWindowController(); |
@@ -415,4 +413,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 |