Chromium Code Reviews| Index: chrome/browser/ui/ash/system_tray_client.cc |
| diff --git a/chrome/browser/ui/ash/system_tray_client.cc b/chrome/browser/ui/ash/system_tray_client.cc |
| index 063a93b645017487e88000c0e0096c7c57b9ec40..1fe73ac099ced8632b32541c3f5678e48057ddfc 100644 |
| --- a/chrome/browser/ui/ash/system_tray_client.cc |
| +++ b/chrome/browser/ui/ash/system_tray_client.cc |
| @@ -104,6 +104,11 @@ ash::LoginStatus SystemTrayClient::GetUserLoginStatus() { |
| // static |
| int SystemTrayClient::GetDialogParentContainerId() { |
| + const ash::LoginStatus login_status = GetUserLoginStatus(); |
| + if (login_status == ash::LoginStatus::NOT_LOGGED_IN || |
| + login_status == ash::LoginStatus::LOCKED) |
| + return ash::kShellWindowId_LockSystemModalContainer; |
|
stevenjb
2016/10/20 19:42:40
nit: {}
James Cook
2016/10/20 20:10:34
Done.
|
| + |
| // TODO(mash): Need replacement for SessionStateDelegate. crbug.com/648964 |
| if (chrome::IsRunningInMash()) |
| return ash::kShellWindowId_SystemModalContainer; |
| @@ -111,12 +116,10 @@ int SystemTrayClient::GetDialogParentContainerId() { |
| ash::WmShell* wm_shell = ash::WmShell::Get(); |
| const bool session_started = |
| wm_shell->GetSessionStateDelegate()->IsActiveUserSessionStarted(); |
| - const ash::LoginStatus login_status = GetUserLoginStatus(); |
| const bool is_in_secondary_login_screen = |
| wm_shell->GetSessionStateDelegate()->IsInSecondaryLoginScreen(); |
| - if (!session_started || login_status == ash::LoginStatus::NOT_LOGGED_IN || |
| - login_status == ash::LoginStatus::LOCKED || is_in_secondary_login_screen) |
| + if (!session_started || is_in_secondary_login_screen) |
| return ash::kShellWindowId_LockSystemModalContainer; |
| return ash::kShellWindowId_SystemModalContainer; |
| @@ -198,13 +201,15 @@ void SystemTrayClient::ShowPublicAccountInfo() { |
| } |
| void SystemTrayClient::ShowNetworkConfigure(const std::string& network_id) { |
| - // TODO(jamescook): Consolidate this with the classic ash version from |
| - // NetworkConnectDelegateChromeOS. This will require moving the window |
| - // container calculation to this class, then plumbing a container ID through |
| - // the dialog code. |
| - CHECK(chrome::IsRunningInMash()); |
| + // UI is not available at the lock screen. |
| + // TODO(mash): Need replacement for SessionStateDelegate. crbug.com/648964 |
| + if (!chrome::IsRunningInMash() && |
| + ash::WmShell::Get()->GetSessionStateDelegate()->IsScreenLocked()) |
| + return; |
|
stevenjb
2016/10/20 19:42:40
{}
James Cook
2016/10/20 20:10:34
Done.
|
| + |
| + // Dialog will default to the primary display. |
| chromeos::NetworkConfigView::ShowByNetworkId(network_id, |
| - nullptr /* parent */); |
| + GetDialogParentContainerId()); |
| } |
| void SystemTrayClient::ShowNetworkSettings(const std::string& network_id) { |