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

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

Issue 304153004: Center lock screen user pod when virtual keyboard is shown. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 6 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 | Annotate | Revision Log
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 <string> 8 #include <string>
9 9
10 #include "ash/shell_delegate.h"
10 #include "ash/wm/lock_state_observer.h" 11 #include "ash/wm/lock_state_observer.h"
11 #include "base/compiler_specific.h" 12 #include "base/compiler_specific.h"
12 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
13 #include "base/memory/weak_ptr.h" 14 #include "base/memory/weak_ptr.h"
14 #include "base/time/time.h" 15 #include "base/time/time.h"
15 #include "chrome/browser/chromeos/login/lock/screen_locker_delegate.h" 16 #include "chrome/browser/chromeos/login/lock/screen_locker_delegate.h"
16 #include "chrome/browser/chromeos/login/ui/lock_window.h" 17 #include "chrome/browser/chromeos/login/ui/lock_window.h"
17 #include "chrome/browser/chromeos/login/ui/login_display.h" 18 #include "chrome/browser/chromeos/login/ui/login_display.h"
18 #include "chrome/browser/chromeos/login/ui/webui_login_view.h" 19 #include "chrome/browser/chromeos/login/ui/webui_login_view.h"
19 #include "chromeos/dbus/power_manager_client.h" 20 #include "chromeos/dbus/power_manager_client.h"
20 #include "content/public/browser/notification_observer.h" 21 #include "content/public/browser/notification_observer.h"
21 #include "content/public/browser/notification_registrar.h" 22 #include "content/public/browser/notification_registrar.h"
23 #include "ui/keyboard/keyboard_controller_observer.h"
22 #include "ui/views/widget/widget.h" 24 #include "ui/views/widget/widget.h"
23 #include "ui/views/widget/widget_observer.h" 25 #include "ui/views/widget/widget_observer.h"
24 26
25 namespace content { 27 namespace content {
26 class WebUI; 28 class WebUI;
27 } 29 }
28 30
29 namespace chromeos { 31 namespace chromeos {
30 32
33 class OobeUI;
31 class ScreenLocker; 34 class ScreenLocker;
32 class WebUILoginDisplay; 35 class WebUILoginDisplay;
33 36
34 namespace login { 37 namespace login {
35 class NetworkStateHelper; 38 class NetworkStateHelper;
36 } 39 }
37 40
38 namespace test { 41 namespace test {
39 class WebUIScreenLockerTester; 42 class WebUIScreenLockerTester;
40 } 43 }
41 44
42 // This version of ScreenLockerDelegate displays a WebUI lock screen based on 45 // This version of ScreenLockerDelegate displays a WebUI lock screen based on
43 // the Oobe account picker screen. 46 // the Oobe account picker screen.
44 class WebUIScreenLocker : public WebUILoginView, 47 class WebUIScreenLocker : public WebUILoginView,
45 public LoginDisplay::Delegate, 48 public LoginDisplay::Delegate,
46 public ScreenLockerDelegate, 49 public ScreenLockerDelegate,
47 public LockWindow::Observer, 50 public LockWindow::Observer,
48 public ash::LockStateObserver, 51 public ash::LockStateObserver,
49 public views::WidgetObserver, 52 public views::WidgetObserver,
50 public PowerManagerClient::Observer { 53 public PowerManagerClient::Observer,
54 public ash::VirtualKeyboardStateObserver,
55 public keyboard::KeyboardControllerObserver {
51 public: 56 public:
52 explicit WebUIScreenLocker(ScreenLocker* screen_locker); 57 explicit WebUIScreenLocker(ScreenLocker* screen_locker);
53 58
54 // ScreenLockerDelegate implementation. 59 // ScreenLockerDelegate implementation.
55 virtual void LockScreen() OVERRIDE; 60 virtual void LockScreen() OVERRIDE;
56 virtual void ScreenLockReady() OVERRIDE; 61 virtual void ScreenLockReady() OVERRIDE;
57 virtual void OnAuthenticate() OVERRIDE; 62 virtual void OnAuthenticate() OVERRIDE;
58 virtual void SetInputEnabled(bool enabled) OVERRIDE; 63 virtual void SetInputEnabled(bool enabled) OVERRIDE;
59 virtual void ShowErrorMessage( 64 virtual void ShowErrorMessage(
60 int error_msg_id, 65 int error_msg_id,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE; 111 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE;
107 112
108 // PowerManagerClient::Observer overrides: 113 // PowerManagerClient::Observer overrides:
109 virtual void SuspendDone(const base::TimeDelta& sleep_duration) OVERRIDE; 114 virtual void SuspendDone(const base::TimeDelta& sleep_duration) OVERRIDE;
110 virtual void LidEventReceived(bool open, 115 virtual void LidEventReceived(bool open,
111 const base::TimeTicks& time) OVERRIDE; 116 const base::TimeTicks& time) OVERRIDE;
112 117
113 // Overridden from content::WebContentsObserver: 118 // Overridden from content::WebContentsObserver:
114 virtual void RenderProcessGone(base::TerminationStatus status) OVERRIDE; 119 virtual void RenderProcessGone(base::TerminationStatus status) OVERRIDE;
115 120
121 // Overridden from ash::KeyboardStateObserver:
122 virtual void OnVirtualKeyboardStateChanged(bool activated) OVERRIDE;
123
124 // Overridden from keyboard::KeyboardControllerObserver:
125 virtual void OnKeyboardBoundsChanging(const gfx::Rect& new_bounds) OVERRIDE;
126
127 // Returns instance of the OOBE WebUI.
128 OobeUI* GetOobeUI();
129
116 private: 130 private:
117 friend class test::WebUIScreenLockerTester; 131 friend class test::WebUIScreenLockerTester;
118 132
119 virtual ~WebUIScreenLocker(); 133 virtual ~WebUIScreenLocker();
120 134
121 // Ensures that user pod is focused. 135 // Ensures that user pod is focused.
122 void FocusUserPod(); 136 void FocusUserPod();
123 137
124 // The screen locker window. 138 // The screen locker window.
125 views::Widget* lock_window_; 139 views::Widget* lock_window_;
126 140
127 // Login UI implementation instance. 141 // Login UI implementation instance.
128 scoped_ptr<WebUILoginDisplay> login_display_; 142 scoped_ptr<WebUILoginDisplay> login_display_;
129 143
130 // Used for user image changed notifications. 144 // Used for user image changed notifications.
131 content::NotificationRegistrar registrar_; 145 content::NotificationRegistrar registrar_;
132 146
133 // Tracks when the lock window is displayed and ready. 147 // Tracks when the lock window is displayed and ready.
134 bool lock_ready_; 148 bool lock_ready_;
135 149
136 // Tracks when the WebUI finishes loading. 150 // Tracks when the WebUI finishes loading.
137 bool webui_ready_; 151 bool webui_ready_;
138 152
139 // Time when lock was initiated, required for metrics. 153 // Time when lock was initiated, required for metrics.
140 base::TimeTicks lock_time_; 154 base::TimeTicks lock_time_;
141 155
142 scoped_ptr<login::NetworkStateHelper> network_state_helper_; 156 scoped_ptr<login::NetworkStateHelper> network_state_helper_;
143 157
158 // True is subscribed as keyboard controller observer.
159 bool is_observing_keyboard_;
160
161 // The bounds of the virtual keyboard.
162 gfx::Rect keyboard_bounds_;
163
144 base::WeakPtrFactory<WebUIScreenLocker> weak_factory_; 164 base::WeakPtrFactory<WebUIScreenLocker> weak_factory_;
145 165
146 DISALLOW_COPY_AND_ASSIGN(WebUIScreenLocker); 166 DISALLOW_COPY_AND_ASSIGN(WebUIScreenLocker);
147 }; 167 };
148 168
149 } // namespace chromeos 169 } // namespace chromeos
150 170
151 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_LOCK_WEBUI_SCREEN_LOCKER_H_ 171 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_LOCK_WEBUI_SCREEN_LOCKER_H_
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/helper.cc ('k') | chrome/browser/chromeos/login/lock/webui_screen_locker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698