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

Unified Diff: chrome/browser/chromeos/login/lock/webui_screen_locker.cc

Issue 2429033003: cros: Cleanup lock screen and OOBE C++ backing code. (Closed)
Patch Set: Address comments 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/lock/webui_screen_locker.cc
diff --git a/chrome/browser/chromeos/login/lock/webui_screen_locker.cc b/chrome/browser/chromeos/login/lock/webui_screen_locker.cc
index 5b64189ff8138372ac88cddd55507a1379a155d0..e3ef67ec7b96463bf30157c1556e48deaf4a2742 100644
--- a/chrome/browser/chromeos/login/lock/webui_screen_locker.cc
+++ b/chrome/browser/chromeos/login/lock/webui_screen_locker.cc
@@ -61,7 +61,7 @@ namespace chromeos {
// WebUIScreenLocker implementation.
WebUIScreenLocker::WebUIScreenLocker(ScreenLocker* screen_locker)
- : ScreenLockerDelegate(screen_locker),
+ : screen_locker_(screen_locker),
network_state_helper_(new login::NetworkStateHelper),
weak_factory_(this) {
set_should_emit_login_prompt_visible(false);
@@ -76,22 +76,45 @@ WebUIScreenLocker::WebUIScreenLocker(ScreenLocker* screen_locker)
}
}
+WebUIScreenLocker::~WebUIScreenLocker() {
+ DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this);
+ display::Screen::GetScreen()->RemoveObserver(this);
+ ash::WmShell::Get()->RemoveLockStateObserver(this);
+ ash::WmShell::Get()->RemoveShellObserver(this);
+ // In case of shutdown, lock_window_ may be deleted before WebUIScreenLocker.
+ if (lock_window_) {
+ lock_window_->RemoveObserver(this);
+ lock_window_->Close();
+ }
+ // If LockScreen() was called, we need to clear the signin screen handler
+ // delegate set in ShowSigninScreen so that it no longer points to us.
+ if (login_display_.get())
+ GetOobeUI()->ResetSigninScreenHandlerDelegate();
+
+ if (keyboard::KeyboardController::GetInstance() && is_observing_keyboard_) {
+ keyboard::KeyboardController::GetInstance()->RemoveObserver(this);
+ is_observing_keyboard_ = false;
+ }
+
+ ResetKeyboardOverscrollOverride();
+}
+
void WebUIScreenLocker::LockScreen() {
gfx::Rect bounds = display::Screen::GetScreen()->GetPrimaryDisplay().bounds();
lock_time_ = base::TimeTicks::Now();
- auto* lock_window = new LockWindow();
- lock_window->set_observer(this);
- lock_window->set_initially_focused_view(this);
- lock_window_ = lock_window->GetWidget();
+ lock_window_ = new LockWindow();
+ lock_window_->set_initially_focused_view(this);
lock_window_->AddObserver(this);
- WebUILoginView::Init();
+
+ Init();
content::WebContentsObserver::Observe(webui_login_->GetWebContents());
+
lock_window_->SetContentsView(this);
lock_window_->SetBounds(bounds);
lock_window_->Show();
LoadURL(GURL(kLoginURL));
- lock_window->Grab();
+ OnLockWindowReady();
signin_screen_controller_.reset(
new SignInScreenController(GetOobeUI(), this));
@@ -99,7 +122,7 @@ void WebUIScreenLocker::LockScreen() {
login_display_.reset(new WebUILoginDisplay(this));
login_display_->set_background_bounds(bounds);
login_display_->set_parent_window(GetNativeWindow());
- login_display_->Init(screen_locker()->users(), false, true, false);
+ login_display_->Init(screen_locker_->users(), false, true, false);
GetOobeUI()->ShowSigninScreen(
LoginScreenContext(), login_display_.get(), login_display_.get());
@@ -107,16 +130,6 @@ void WebUIScreenLocker::LockScreen() {
DisableKeyboardOverscroll();
}
-void WebUIScreenLocker::ScreenLockReady() {
- UMA_HISTOGRAM_TIMES("LockScreen.LockReady",
- base::TimeTicks::Now() - lock_time_);
- ScreenLockerDelegate::ScreenLockReady();
- SetInputEnabled(true);
-}
-
-void WebUIScreenLocker::OnAuthenticate() {
-}
-
void WebUIScreenLocker::SetInputEnabled(bool enabled) {
login_display_->SetUIEnabled(enabled);
}
@@ -138,12 +151,22 @@ void WebUIScreenLocker::ClearErrors() {
GetWebUI()->CallJavascriptFunctionUnsafe("cr.ui.Oobe.clearErrors");
}
-gfx::NativeWindow WebUIScreenLocker::GetNativeWindow() const {
- return lock_window_->GetNativeWindow();
+void WebUIScreenLocker::ScreenLockReady() {
+ UMA_HISTOGRAM_TIMES("LockScreen.LockReady",
+ base::TimeTicks::Now() - lock_time_);
+ screen_locker_->ScreenLockReady();
+ SetInputEnabled(true);
+}
+
+void WebUIScreenLocker::OnLockWindowReady() {
+ VLOG(1) << "Lock window ready; WebUI is " << (webui_ready_ ? "too" : "not");
+ lock_ready_ = true;
+ if (webui_ready_)
+ ScreenLockReady();
}
-content::WebUI* WebUIScreenLocker::GetAssociatedWebUI() {
- return GetWebUI();
+gfx::NativeWindow WebUIScreenLocker::GetNativeWindow() const {
+ return lock_window_->GetNativeWindow();
}
void WebUIScreenLocker::FocusUserPod() {
@@ -161,31 +184,6 @@ void WebUIScreenLocker::ResetAndFocusUserPod() {
FocusUserPod();
}
-WebUIScreenLocker::~WebUIScreenLocker() {
- DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this);
- display::Screen::GetScreen()->RemoveObserver(this);
- ash::WmShell::Get()->RemoveLockStateObserver(this);
- ash::WmShell::Get()->RemoveShellObserver(this);
- // In case of shutdown, lock_window_ may be deleted before WebUIScreenLocker.
- if (lock_window_) {
- lock_window_->RemoveObserver(this);
- lock_window_->Close();
- }
- // If LockScreen() was called, we need to clear the signin screen handler
- // delegate set in ShowSigninScreen so that it no longer points to us.
- if (login_display_.get()) {
- static_cast<OobeUI*>(GetWebUI()->GetController())->
- ResetSigninScreenHandlerDelegate();
- }
-
- if (keyboard::KeyboardController::GetInstance() && is_observing_keyboard_) {
- keyboard::KeyboardController::GetInstance()->RemoveObserver(this);
- is_observing_keyboard_ = false;
- }
-
- ResetKeyboardOverscrollOverride();
-}
-
void WebUIScreenLocker::OnLockWebUIReady() {
VLOG(1) << "WebUI ready; lock window is "
<< (lock_ready_ ? "too" : "not");
@@ -205,10 +203,6 @@ void WebUIScreenLocker::OnHeaderBarVisible() {
ash::Shell::GetInstance()->power_event_observer()->OnLockAnimationsComplete();
}
-OobeUI* WebUIScreenLocker::GetOobeUI() {
- return static_cast<OobeUI*>(GetWebUI()->GetController());
-}
-
////////////////////////////////////////////////////////////////////////////////
// WebUIScreenLocker, LoginDisplay::Delegate:
@@ -282,15 +276,6 @@ bool WebUIScreenLocker::IsUserWhitelisted(const AccountId& account_id) {
NOTREACHED();
return true;
}
-////////////////////////////////////////////////////////////////////////////////
-// LockWindow::Observer:
-
-void WebUIScreenLocker::OnLockWindowReady() {
- VLOG(1) << "Lock window ready; WebUI is " << (webui_ready_ ? "too" : "not");
- lock_ready_ = true;
- if (webui_ready_)
- ScreenLockReady();
-}
////////////////////////////////////////////////////////////////////////////////
// SessionLockStateObserver:

Powered by Google App Engine
This is Rietveld 408576698