Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: chrome/browser/chromeos/login/lock/webui_screen_locker.h

Issue 2429033003: cros: Cleanup lock screen and OOBE C++ backing code. (Closed)
Patch Set: Initial patch Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_LOCK_WEBUI_SCREEN_LOCKER_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_LOCK_WEBUI_SCREEN_LOCKER_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_LOCK_WEBUI_SCREEN_LOCKER_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_LOCK_WEBUI_SCREEN_LOCKER_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
11 #include <string> 11 #include <string>
12 12
13 #include "ash/common/shell_observer.h" 13 #include "ash/common/shell_observer.h"
14 #include "ash/common/wm/lock_state_observer.h" 14 #include "ash/common/wm/lock_state_observer.h"
15 #include "base/macros.h" 15 #include "base/macros.h"
16 #include "base/memory/weak_ptr.h" 16 #include "base/memory/weak_ptr.h"
17 #include "base/time/time.h" 17 #include "base/time/time.h"
18 #include "chrome/browser/chromeos/login/lock/screen_locker_delegate.h"
19 #include "chrome/browser/chromeos/login/signin_screen_controller.h" 18 #include "chrome/browser/chromeos/login/signin_screen_controller.h"
20 #include "chrome/browser/chromeos/login/signin_specifics.h" 19 #include "chrome/browser/chromeos/login/signin_specifics.h"
21 #include "chrome/browser/chromeos/login/ui/lock_window.h" 20 #include "chrome/browser/chromeos/login/ui/lock_window.h"
22 #include "chrome/browser/chromeos/login/ui/login_display.h" 21 #include "chrome/browser/chromeos/login/ui/login_display.h"
23 #include "chrome/browser/chromeos/login/ui/webui_login_view.h" 22 #include "chrome/browser/chromeos/login/ui/webui_login_view.h"
24 #include "chromeos/dbus/power_manager_client.h" 23 #include "chromeos/dbus/power_manager_client.h"
25 #include "content/public/browser/web_contents_observer.h" 24 #include "content/public/browser/web_contents_observer.h"
26 #include "ui/display/display_observer.h" 25 #include "ui/display/display_observer.h"
27 #include "ui/keyboard/keyboard_controller_observer.h" 26 #include "ui/keyboard/keyboard_controller_observer.h"
28 #include "ui/views/widget/widget.h" 27 #include "ui/views/widget/widget.h"
(...skipping 10 matching lines...) Expand all
39 class WebUILoginDisplay; 38 class WebUILoginDisplay;
40 39
41 namespace login { 40 namespace login {
42 class NetworkStateHelper; 41 class NetworkStateHelper;
43 } 42 }
44 43
45 namespace test { 44 namespace test {
46 class WebUIScreenLockerTester; 45 class WebUIScreenLockerTester;
47 } 46 }
48 47
49 // This version of ScreenLockerDelegate displays a WebUI lock screen based on 48 // Displays a WebUI lock screen based on the Oobe account picker screen.
50 // the Oobe account picker screen.
51 class WebUIScreenLocker : public WebUILoginView, 49 class WebUIScreenLocker : public WebUILoginView,
52 public LoginDisplay::Delegate, 50 public LoginDisplay::Delegate,
53 public ScreenLockerDelegate,
54 public LockWindow::Observer,
55 public ash::LockStateObserver, 51 public ash::LockStateObserver,
56 public views::WidgetObserver, 52 public views::WidgetObserver,
57 public PowerManagerClient::Observer, 53 public PowerManagerClient::Observer,
58 public ash::ShellObserver, 54 public ash::ShellObserver,
59 public keyboard::KeyboardControllerObserver, 55 public keyboard::KeyboardControllerObserver,
60 public display::DisplayObserver, 56 public display::DisplayObserver,
61 public content::WebContentsObserver { 57 public content::WebContentsObserver {
62 public: 58 public:
63 explicit WebUIScreenLocker(ScreenLocker* screen_locker); 59 explicit WebUIScreenLocker(ScreenLocker* screen_locker);
60 ~WebUIScreenLocker() override;
64 61
65 // ScreenLockerDelegate: 62 // Initialize the screen locker delegate. This will call ScreenLockReady when
achuithb 2016/10/20 17:38:33 What screen locker delegate?
jdufault 2016/10/20 19:35:19 These comments were copied from screen_locker_dele
66 void LockScreen() override; 63 // done to notify ScreenLocker.
67 void ScreenLockReady() override; 64 void LockScreen();
68 void OnAuthenticate() override; 65
69 void SetInputEnabled(bool enabled) override; 66 // Enable/disable password input.
67 void SetInputEnabled(bool enabled);
68
69 // Disables all UI needed and shows error bubble with |message|.
70 // If |sign_out_only| is true then all other input except "Sign Out"
71 // button is blocked.
70 void ShowErrorMessage(int error_msg_id, 72 void ShowErrorMessage(int error_msg_id,
71 HelpAppLauncher::HelpTopic help_topic_id) override; 73 HelpAppLauncher::HelpTopic help_topic_id);
72 void ClearErrors() override; 74
73 void AnimateAuthenticationSuccess() override; 75 // Close message bubble to clear error messages.
74 gfx::NativeWindow GetNativeWindow() const override; 76 void ClearErrors();
75 content::WebUI* GetAssociatedWebUI() override; 77
76 void OnLockWebUIReady() override; 78 // Allows to have visual effects once unlock authentication is successful,
77 void OnLockBackgroundDisplayed() override; 79 // Must call ScreenLocker::UnlockOnLoginSuccess() once all effects are done.
78 void OnHeaderBarVisible() override; 80 void AnimateAuthenticationSuccess();
81
82 // Called when webui lock screen is ready.
83 void OnLockWebUIReady();
84
85 // Called when webui lock screen wallpaper is loaded and displayed.
86 void OnLockBackgroundDisplayed();
87
88 // Called when the webui header bar becomes visible.
89 void OnHeaderBarVisible();
90
91 // Returns instance of the OOBE WebUI.
92 OobeUI* GetOobeUI();
93
94 private:
95 friend class test::WebUIScreenLockerTester;
79 96
80 // LoginDisplay::Delegate: 97 // LoginDisplay::Delegate:
81 void CancelPasswordChangedFlow() override; 98 void CancelPasswordChangedFlow() override;
82 void CompleteLogin(const UserContext& user_context) override; 99 void CompleteLogin(const UserContext& user_context) override;
83 base::string16 GetConnectedNetworkName() override; 100 base::string16 GetConnectedNetworkName() override;
84 bool IsSigninInProgress() const override; 101 bool IsSigninInProgress() const override;
85 void Login(const UserContext& user_context, 102 void Login(const UserContext& user_context,
86 const SigninSpecifics& specifics) override; 103 const SigninSpecifics& specifics) override;
87 void MigrateUserData(const std::string& old_password) override; 104 void MigrateUserData(const std::string& old_password) override;
88 void OnSigninScreenReady() override; 105 void OnSigninScreenReady() override;
89 void OnStartEnterpriseEnrollment() override; 106 void OnStartEnterpriseEnrollment() override;
90 void OnStartEnableDebuggingScreen() override; 107 void OnStartEnableDebuggingScreen() override;
91 void OnStartKioskEnableScreen() override; 108 void OnStartKioskEnableScreen() override;
92 void OnStartKioskAutolaunchScreen() override; 109 void OnStartKioskAutolaunchScreen() override;
93 void ShowWrongHWIDScreen() override; 110 void ShowWrongHWIDScreen() override;
94 void ResetPublicSessionAutoLoginTimer() override; 111 void ResetPublicSessionAutoLoginTimer() override;
95 void ResyncUserData() override; 112 void ResyncUserData() override;
96 void SetDisplayEmail(const std::string& email) override; 113 void SetDisplayEmail(const std::string& email) override;
97 void Signout() override; 114 void Signout() override;
98 bool IsUserWhitelisted(const AccountId& account_id) override; 115 bool IsUserWhitelisted(const AccountId& account_id) override;
99 116
100 // LockWindow::Observer:
101 void OnLockWindowReady() override;
102
103 // LockStateObserver: 117 // LockStateObserver:
104 void OnLockStateEvent(ash::LockStateObserver::EventType event) override; 118 void OnLockStateEvent(ash::LockStateObserver::EventType event) override;
105 119
106 // WidgetObserver: 120 // WidgetObserver:
107 void OnWidgetDestroying(views::Widget* widget) override; 121 void OnWidgetDestroying(views::Widget* widget) override;
108 122
109 // PowerManagerClient::Observer: 123 // PowerManagerClient::Observer:
110 void SuspendImminent() override; 124 void SuspendImminent() override;
111 void SuspendDone(const base::TimeDelta& sleep_duration) override; 125 void SuspendDone(const base::TimeDelta& sleep_duration) override;
112 void LidEventReceived(bool open, const base::TimeTicks& time) override; 126 void LidEventReceived(bool open, const base::TimeTicks& time) override;
113 127
114 // content::WebContentsObserver: 128 // content::WebContentsObserver:
115 void RenderProcessGone(base::TerminationStatus status) override; 129 void RenderProcessGone(base::TerminationStatus status) override;
116 130
117 // ash::ShellObserver: 131 // ash::ShellObserver:
118 void OnVirtualKeyboardStateChanged(bool activated) override; 132 void OnVirtualKeyboardStateChanged(bool activated) override;
119 133
120 // keyboard::KeyboardControllerObserver: 134 // keyboard::KeyboardControllerObserver:
121 void OnKeyboardBoundsChanging(const gfx::Rect& new_bounds) override; 135 void OnKeyboardBoundsChanging(const gfx::Rect& new_bounds) override;
122 void OnKeyboardClosed() override; 136 void OnKeyboardClosed() override;
123 137
124 // display::DisplayObserver: 138 // display::DisplayObserver:
125 void OnDisplayAdded(const display::Display& new_display) override; 139 void OnDisplayAdded(const display::Display& new_display) override;
126 void OnDisplayRemoved(const display::Display& old_display) override; 140 void OnDisplayRemoved(const display::Display& old_display) override;
127 void OnDisplayMetricsChanged(const display::Display& display, 141 void OnDisplayMetricsChanged(const display::Display& display,
128 uint32_t changed_metrics) override; 142 uint32_t changed_metrics) override;
129 143
130 // Returns instance of the OOBE WebUI. 144 // Inform the screen locker that the screen has been locked
131 OobeUI* GetOobeUI(); 145 void ScreenLockReady();
132 146
133 private: 147 // Called when the lock window is ready.
134 friend class test::WebUIScreenLockerTester; 148 void OnLockWindowReady();
135 149
136 ~WebUIScreenLocker() override; 150 // Returns the native window displaying the lock screen.
151 gfx::NativeWindow GetNativeWindow() const;
137 152
138 // Ensures that user pod is focused. 153 // Ensures that user pod is focused.
139 void FocusUserPod(); 154 void FocusUserPod();
140 155
141 // Reset user pod and ensures that user pod is focused. 156 // Reset user pod and ensures that user pod is focused.
142 void ResetAndFocusUserPod(); 157 void ResetAndFocusUserPod();
143 158
159 // ScreenLocker that owns this delegate.
achuithb 2016/10/20 17:38:33 let's not use the word delegate here.
jdufault 2016/10/20 19:35:19 Done.
160 ScreenLocker* screen_locker_;
achuithb 2016/10/20 17:38:33 let's do = nullptr for consistency.
jdufault 2016/10/20 19:35:19 Done.
161
144 // The screen locker window. 162 // The screen locker window.
145 views::Widget* lock_window_ = nullptr; 163 LockWindow* lock_window_ = nullptr;
146 164
147 // Sign-in Screen controller instance (owns login screens). 165 // Sign-in Screen controller instance (owns login screens).
148 std::unique_ptr<SignInScreenController> signin_screen_controller_; 166 std::unique_ptr<SignInScreenController> signin_screen_controller_;
149 167
150 // Login UI implementation instance. 168 // Login UI implementation instance.
151 std::unique_ptr<WebUILoginDisplay> login_display_; 169 std::unique_ptr<WebUILoginDisplay> login_display_;
152 170
153 // Tracks when the lock window is displayed and ready. 171 // Tracks when the lock window is displayed and ready.
154 bool lock_ready_ = false; 172 bool lock_ready_ = false;
155 173
156 // Tracks when the WebUI finishes loading. 174 // Tracks when the WebUI finishes loading.
157 bool webui_ready_ = false; 175 bool webui_ready_ = false;
158 176
159 // Time when lock was initiated, required for metrics. 177 // Time when lock was initiated, required for metrics.
160 base::TimeTicks lock_time_; 178 base::TimeTicks lock_time_;
161 179
162 std::unique_ptr<login::NetworkStateHelper> network_state_helper_; 180 std::unique_ptr<login::NetworkStateHelper> network_state_helper_;
163 181
164 // True iff this object is observing a keyboard controller. 182 // True iff this object is observing a keyboard controller.
165 bool is_observing_keyboard_ = false; 183 bool is_observing_keyboard_ = false;
166 184
167 base::WeakPtrFactory<WebUIScreenLocker> weak_factory_; 185 base::WeakPtrFactory<WebUIScreenLocker> weak_factory_;
168 186
169 DISALLOW_COPY_AND_ASSIGN(WebUIScreenLocker); 187 DISALLOW_COPY_AND_ASSIGN(WebUIScreenLocker);
170 }; 188 };
171 189
172 } // namespace chromeos 190 } // namespace chromeos
173 191
174 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_LOCK_WEBUI_SCREEN_LOCKER_H_ 192 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_LOCK_WEBUI_SCREEN_LOCKER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698