Index: chrome/browser/chromeos/chrome_browser_main_chromeos.cc |
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc |
index cf51aaf94624add6a7e3ec88f26fea70264e56e4..ebbe8e6822fc40417f1f9bde529bbd7ddc5e76e2 100644 |
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc |
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc |
@@ -78,6 +78,7 @@ |
#include "chrome/browser/chromeos/status/data_promo_notification.h" |
#include "chrome/browser/chromeos/system/input_device_settings.h" |
#include "chrome/browser/chromeos/ui/low_disk_notification.h" |
+#include "chrome/browser/chromeos/ui/password_echo_controller.h" |
#include "chrome/browser/chromeos/upgrade_detector_chromeos.h" |
#include "chrome/browser/defaults.h" |
#include "chrome/browser/lifetime/application_lifetime.h" |
@@ -653,6 +654,13 @@ void ChromeBrowserMainPartsChromeos::PostProfileInit() { |
manager->SetState(session_manager->GetDefaultIMEState(profile())); |
+ if (!chrome::IsRunningInMash()) { |
+ // Creates PasswordEchoController before SessionManager starts so that |
+ // the login screen is covered as well. |
+ // TODO(xiyuan): Revisit for mash. |
+ password_echo_controller_.reset(new PasswordEchoController); |
+ } |
+ |
bool is_running_test = parameters().ui_task != nullptr; |
g_browser_process->platform_part()->InitializeSessionManager( |
parsed_command_line(), profile(), is_running_test); |
@@ -842,6 +850,9 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopRun() { |
g_browser_process->platform_part()->browser_policy_connector_chromeos()-> |
PreShutdown(); |
+ // Resets PasswordEchoController before ash shuts down. |
+ password_echo_controller_.reset(); |
+ |
// We first call PostMainMessageLoopRun and then destroy UserManager, because |
// Ash needs to be closed before UserManager is destroyed. |
ChromeBrowserMainPartsLinux::PostMainMessageLoopRun(); |