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..e8e397d56a18cebc5fbb6494e8bebb638bf173bb 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,10 @@ void ChromeBrowserMainPartsChromeos::PostProfileInit() { |
manager->SetState(session_manager->GetDefaultIMEState(profile())); |
+ // Creates PasswordEchoController before SessionManager starts so that |
+ // the login screen is covered as well. |
+ 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 +847,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(); |