Index: ash/system/overview/overview_button_tray.cc |
diff --git a/ash/system/overview/overview_button_tray.cc b/ash/system/overview/overview_button_tray.cc |
index edd5d67dd0697dd2598133cc5289d83e7511831f..3385dc8884f932a1d2e8db588a6fd5dc6f829fba 100644 |
--- a/ash/system/overview/overview_button_tray.cc |
+++ b/ash/system/overview/overview_button_tray.cc |
@@ -4,6 +4,7 @@ |
#include "ash/system/overview/overview_button_tray.h" |
+#include "ash/session/session_state_delegate.h" |
#include "ash/shelf/shelf_types.h" |
#include "ash/shell.h" |
#include "ash/system/tray/system_tray_delegate.h" |
@@ -42,14 +43,21 @@ OverviewButtonTray::OverviewButtonTray(StatusAreaWidget* status_area_widget) |
tray_container()->AddChildView(icon_); |
Shell::GetInstance()->AddShellObserver(this); |
+ Shell::GetInstance()->session_state_delegate()->AddSessionStateObserver(this); |
} |
OverviewButtonTray::~OverviewButtonTray() { |
Shell::GetInstance()->RemoveShellObserver(this); |
+ Shell::GetInstance()->session_state_delegate()->RemoveSessionStateObserver( |
+ this); |
} |
void OverviewButtonTray::UpdateAfterLoginStatusChange( |
user::LoginStatus status) { |
+ if (status == user::LOGGED_IN_KIOSK_APP) { |
+ SetVisible(false); |
flackr
2015/06/01 17:05:32
What guarantee is there that the visibility won't
jonross
2015/06/01 17:20:37
Good point.
Done.
|
+ return; |
+ } |
UpdateIconVisibility(); |
} |
@@ -62,6 +70,11 @@ bool OverviewButtonTray::PerformAction(const ui::Event& event) { |
return true; |
} |
+void OverviewButtonTray::SessionStateChanged( |
+ SessionStateDelegate::SessionState state) { |
+ UpdateIconVisibility(); |
+} |
+ |
void OverviewButtonTray::OnMaximizeModeStarted() { |
UpdateIconVisibility(); |
} |
@@ -115,9 +128,16 @@ void OverviewButtonTray::SetIconBorderForShelfAlignment() { |
} |
void OverviewButtonTray::UpdateIconVisibility() { |
- SetVisible(Shell::GetInstance()->maximize_mode_controller()-> |
- IsMaximizeModeWindowManagerEnabled() && |
- Shell::GetInstance()->window_selector_controller()->CanSelect()); |
+ SetVisible( |
+ Shell::GetInstance() |
+ ->maximize_mode_controller() |
+ ->IsMaximizeModeWindowManagerEnabled() && |
+ Shell::GetInstance() |
+ ->session_state_delegate() |
+ ->IsActiveUserSessionStarted() && |
+ !Shell::GetInstance()->session_state_delegate()->IsScreenLocked() && |
+ Shell::GetInstance()->session_state_delegate()->GetSessionState() == |
+ SessionStateDelegate::SESSION_STATE_ACTIVE); |
} |
} // namespace ash |