| 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..d39c262053706327dadfb9b1d1d931305bd10250 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");
|
| @@ -282,15 +280,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:
|
|
|