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..2025fee2d73637310eee322c3551056f9cba175e 100644 |
--- a/chrome/browser/ui/ash/system_tray_client.cc |
+++ b/chrome/browser/ui/ash/system_tray_client.cc |
@@ -104,6 +104,12 @@ 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; |
+ } |
+ |
// TODO(mash): Need replacement for SessionStateDelegate. crbug.com/648964 |
if (chrome::IsRunningInMash()) |
return ash::kShellWindowId_SystemModalContainer; |
@@ -111,12 +117,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 +202,16 @@ 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()); |
- chromeos::NetworkConfigView::ShowByNetworkId(network_id, |
- nullptr /* parent */); |
+ // 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; |
+ } |
+ |
+ // Dialog will default to the primary display. |
+ chromeos::NetworkConfigView::ShowInContainer(network_id, |
+ GetDialogParentContainerId()); |
} |
void SystemTrayClient::ShowNetworkSettings(const std::string& network_id) { |