[go: up one dir, main page]

Move password reset on login screen from after wake up to before suspend

This patch moves password reset on login screen to before suspend time.
Also forced focusing user pod will not reset password as it was before.

BUG=450465
TEST=manual

Review URL: https://codereview.chromium.org/908033005

Cr-Commit-Position: refs/heads/master@{#315553}
(cherry picked from commit 011b6d7dc582002027dad48b1a8dcf3c9f9de4d6)

Review URL: https://codereview.chromium.org/927443003

Cr-Commit-Position: refs/branch-heads/2272@{#287}
Cr-Branched-From: 827a380cfdb31aa54c8d56e63ce2c3fd8c3ba4d4-refs/heads/master@{#310958}
diff --git a/chrome/browser/chromeos/login/lock/webui_screen_locker.cc b/chrome/browser/chromeos/login/lock/webui_screen_locker.cc
index f5fcf37..d7cde7b 100644
--- a/chrome/browser/chromeos/login/lock/webui_screen_locker.cc
+++ b/chrome/browser/chromeos/login/lock/webui_screen_locker.cc
@@ -158,6 +158,13 @@
   GetWebUI()->CallJavascriptFunction("cr.ui.Oobe.forceLockedUserPodFocus");
 }
 
+void WebUIScreenLocker::ResetAndFocusUserPod() {
+  if (!webui_ready_)
+    return;
+  GetWebUI()->CallJavascriptFunction("cr.ui.Oobe.clearUserPodPassword");
+  FocusUserPod();
+}
+
 WebUIScreenLocker::~WebUIScreenLocker() {
   DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this);
 #if !defined(USE_ATHENA)
@@ -315,10 +322,19 @@
 
 void WebUIScreenLocker::LidEventReceived(bool open,
                                          const base::TimeTicks& time) {
+  if (open) {
+    content::BrowserThread::PostTask(
+        content::BrowserThread::UI, FROM_HERE,
+        base::Bind(&WebUIScreenLocker::FocusUserPod,
+                   weak_factory_.GetWeakPtr()));
+  }
+}
+
+void WebUIScreenLocker::SuspendImminent() {
   content::BrowserThread::PostTask(
-      content::BrowserThread::UI,
-      FROM_HERE,
-      base::Bind(&WebUIScreenLocker::FocusUserPod, weak_factory_.GetWeakPtr()));
+      content::BrowserThread::UI, FROM_HERE,
+      base::Bind(&WebUIScreenLocker::ResetAndFocusUserPod,
+                 weak_factory_.GetWeakPtr()));
 }
 
 void WebUIScreenLocker::SuspendDone(const base::TimeDelta& sleep_duration) {
diff --git a/chrome/browser/chromeos/login/lock/webui_screen_locker.h b/chrome/browser/chromeos/login/lock/webui_screen_locker.h
index 91c6c085..ac17834 100644
--- a/chrome/browser/chromeos/login/lock/webui_screen_locker.h
+++ b/chrome/browser/chromeos/login/lock/webui_screen_locker.h
@@ -108,6 +108,7 @@
   virtual void OnWidgetDestroying(views::Widget* widget) override;
 
   // PowerManagerClient::Observer overrides:
+  virtual void SuspendImminent() override;
   virtual void SuspendDone(const base::TimeDelta& sleep_duration) override;
   virtual void LidEventReceived(bool open,
                                 const base::TimeTicks& time) override;
@@ -134,6 +135,9 @@
   // Ensures that user pod is focused.
   void FocusUserPod();
 
+  // Reset user pod and ensures that user pod is focused.
+  void ResetAndFocusUserPod();
+
   // The screen locker window.
   views::Widget* lock_window_;
 
diff --git a/ui/login/account_picker/user_pod_row.js b/ui/login/account_picker/user_pod_row.js
index 2ad71bd..642112fc 100644
--- a/ui/login/account_picker/user_pod_row.js
+++ b/ui/login/account_picker/user_pod_row.js
@@ -2755,12 +2755,9 @@
       if (podToFocus) {
         podToFocus.classList.remove('faded');
         podToFocus.classList.add('focused');
-        if (!podToFocus.multiProfilesPolicyApplied)
-          podToFocus.reset(true);  // Reset and give focus.
-        else {
+        if (podToFocus.multiProfilesPolicyApplied)
           podToFocus.userTypeBubbleElement.classList.add('bubble-shown');
-          podToFocus.focus();
-        }
+        podToFocus.focus();
 
         // focusPod() automatically loads wallpaper
         if (!podToFocus.user.isApp)