| OLD | NEW |
| 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 #include "chrome/browser/chromeos/login/lock/webui_screen_locker.h" | 5 #include "chrome/browser/chromeos/login/lock/webui_screen_locker.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/feature_list.h" | 8 #include "base/feature_list.h" |
| 9 #include "base/metrics/histogram_macros.h" | 9 #include "base/metrics/histogram_macros.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 144 | 144 |
| 145 ResetKeyboardOverscrollOverride(); | 145 ResetKeyboardOverscrollOverride(); |
| 146 | 146 |
| 147 RequestPreload(); | 147 RequestPreload(); |
| 148 } | 148 } |
| 149 | 149 |
| 150 void WebUIScreenLocker::LockScreen() { | 150 void WebUIScreenLocker::LockScreen() { |
| 151 gfx::Rect bounds = display::Screen::GetScreen()->GetPrimaryDisplay().bounds(); | 151 gfx::Rect bounds = display::Screen::GetScreen()->GetPrimaryDisplay().bounds(); |
| 152 | 152 |
| 153 lock_time_ = base::TimeTicks::Now(); | 153 lock_time_ = base::TimeTicks::Now(); |
| 154 lock_window_ = new LockWindow(this); | 154 lock_window_ = new LockWindow(); |
| 155 lock_window_->AddObserver(this); | 155 lock_window_->AddObserver(this); |
| 156 | 156 |
| 157 Init(); | 157 Init(); |
| 158 content::WebContentsObserver::Observe(web_view()->GetWebContents()); | 158 content::WebContentsObserver::Observe(web_view()->GetWebContents()); |
| 159 | 159 |
| 160 lock_window_->SetContentsView(this); | 160 lock_window_->SetContentsView(this); |
| 161 lock_window_->SetBounds(bounds); | 161 lock_window_->SetBounds(bounds); |
| 162 lock_window_->Show(); | 162 lock_window_->Show(); |
| 163 LoadURL(GURL(kLoginURL)); | 163 LoadURL(GURL(kLoginURL)); |
| 164 OnLockWindowReady(); | 164 OnLockWindowReady(); |
| 165 | 165 |
| 166 signin_screen_controller_.reset( | 166 signin_screen_controller_.reset( |
| 167 new SignInScreenController(GetOobeUI(), this)); | 167 new SignInScreenController(GetOobeUI(), this)); |
| 168 | 168 |
| 169 login_display_.reset(new WebUILoginDisplay(this)); | 169 login_display_.reset(new WebUILoginDisplay(this)); |
| 170 login_display_->set_background_bounds(bounds); | 170 login_display_->set_background_bounds(bounds); |
| 171 login_display_->set_parent_window(GetNativeWindow()); | 171 login_display_->set_parent_window(GetNativeWindow()); |
| 172 login_display_->Init(screen_locker_->users(), false, true, false); | 172 login_display_->Init(screen_locker_->users(), false, true, false); |
| 173 | 173 |
| 174 GetOobeUI()->ShowSigninScreen( | 174 GetOobeUI()->ShowSigninScreen( |
| 175 LoginScreenContext(), login_display_.get(), login_display_.get()); | 175 LoginScreenContext(), login_display_.get(), login_display_.get()); |
| 176 | 176 |
| 177 DisableKeyboardOverscroll(); | 177 DisableKeyboardOverscroll(); |
| 178 } | 178 } |
| 179 | 179 |
| 180 void WebUIScreenLocker::SetInputEnabled(bool enabled) { | 180 void WebUIScreenLocker::SetPasswordInputEnabled(bool enabled) { |
| 181 login_display_->SetUIEnabled(enabled); | 181 login_display_->SetUIEnabled(enabled); |
| 182 } | 182 } |
| 183 | 183 |
| 184 void WebUIScreenLocker::ShowErrorMessage( | 184 void WebUIScreenLocker::ShowErrorMessage( |
| 185 int error_msg_id, | 185 int error_msg_id, |
| 186 HelpAppLauncher::HelpTopic help_topic_id) { | 186 HelpAppLauncher::HelpTopic help_topic_id) { |
| 187 login_display_->ShowError(error_msg_id, | 187 login_display_->ShowError(error_msg_id, |
| 188 0 /* login_attempts */, | 188 0 /* login_attempts */, |
| 189 help_topic_id); | 189 help_topic_id); |
| 190 } | 190 } |
| 191 | 191 |
| 192 void WebUIScreenLocker::AnimateAuthenticationSuccess() { | 192 void WebUIScreenLocker::AnimateAuthenticationSuccess() { |
| 193 GetWebUI()->CallJavascriptFunctionUnsafe( | 193 GetWebUI()->CallJavascriptFunctionUnsafe( |
| 194 "cr.ui.Oobe.animateAuthenticationSuccess"); | 194 "cr.ui.Oobe.animateAuthenticationSuccess"); |
| 195 } | 195 } |
| 196 | 196 |
| 197 void WebUIScreenLocker::ClearErrors() { | 197 void WebUIScreenLocker::ClearErrors() { |
| 198 GetWebUI()->CallJavascriptFunctionUnsafe("cr.ui.Oobe.clearErrors"); | 198 GetWebUI()->CallJavascriptFunctionUnsafe("cr.ui.Oobe.clearErrors"); |
| 199 } | 199 } |
| 200 | 200 |
| 201 void WebUIScreenLocker::ScreenLockReady() { | 201 void WebUIScreenLocker::ScreenLockReady() { |
| 202 UMA_HISTOGRAM_TIMES("LockScreen.LockReady", | 202 UMA_HISTOGRAM_TIMES("LockScreen.LockReady", |
| 203 base::TimeTicks::Now() - lock_time_); | 203 base::TimeTicks::Now() - lock_time_); |
| 204 screen_locker_->ScreenLockReady(); | 204 screen_locker_->ScreenLockReady(); |
| 205 SetInputEnabled(true); | 205 SetPasswordInputEnabled(true); |
| 206 } | 206 } |
| 207 | 207 |
| 208 void WebUIScreenLocker::OnLockWindowReady() { | 208 void WebUIScreenLocker::OnLockWindowReady() { |
| 209 VLOG(1) << "Lock window ready; WebUI is " << (webui_ready_ ? "too" : "not"); | 209 VLOG(1) << "Lock window ready; WebUI is " << (webui_ready_ ? "too" : "not"); |
| 210 lock_ready_ = true; | 210 lock_ready_ = true; |
| 211 if (webui_ready_) | 211 if (webui_ready_) |
| 212 ScreenLockReady(); | 212 ScreenLockReady(); |
| 213 } | 213 } |
| 214 | 214 |
| 215 gfx::NativeWindow WebUIScreenLocker::GetNativeWindow() const { | 215 gfx::NativeWindow WebUIScreenLocker::GetNativeWindow() const { |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 } | 259 } |
| 260 | 260 |
| 261 void WebUIScreenLocker::OnAshLockAnimationFinished() { | 261 void WebUIScreenLocker::OnAshLockAnimationFinished() { |
| 262 // Release capture if any. | 262 // Release capture if any. |
| 263 aura::client::GetCaptureClient(GetNativeWindow()->GetRootWindow()) | 263 aura::client::GetCaptureClient(GetNativeWindow()->GetRootWindow()) |
| 264 ->SetCapture(nullptr); | 264 ->SetCapture(nullptr); |
| 265 GetWebUI()->CallJavascriptFunctionUnsafe( | 265 GetWebUI()->CallJavascriptFunctionUnsafe( |
| 266 "cr.ui.Oobe.animateOnceFullyDisplayed"); | 266 "cr.ui.Oobe.animateOnceFullyDisplayed"); |
| 267 } | 267 } |
| 268 | 268 |
| 269 void WebUIScreenLocker::SetFingerprintState(const AccountId& account_id, | 269 void WebUIScreenLocker::SetFingerprintState( |
| 270 FingerprintState state) { | 270 const AccountId& account_id, |
| 271 ScreenLocker::FingerprintState state) { |
| 271 // TODO(xiaoyinh@): Modify JS side to consolidate removeUserPodFingerprintIcon | 272 // TODO(xiaoyinh@): Modify JS side to consolidate removeUserPodFingerprintIcon |
| 272 // and setUserPodFingerprintIcon into single JS function. | 273 // and setUserPodFingerprintIcon into single JS function. |
| 273 if (state == FingerprintState::kRemoved) { | 274 if (state == ScreenLocker::FingerprintState::kRemoved) { |
| 274 GetWebUI()->CallJavascriptFunctionUnsafe( | 275 GetWebUI()->CallJavascriptFunctionUnsafe( |
| 275 "login.AccountPickerScreen.removeUserPodFingerprintIcon", | 276 "login.AccountPickerScreen.removeUserPodFingerprintIcon", |
| 276 ::login::MakeValue(account_id)); | 277 ::login::MakeValue(account_id)); |
| 277 return; | 278 return; |
| 278 } | 279 } |
| 279 | 280 |
| 280 chromeos::quick_unlock::QuickUnlockStorage* quick_unlock_storage = | 281 chromeos::quick_unlock::QuickUnlockStorage* quick_unlock_storage = |
| 281 chromeos::quick_unlock::QuickUnlockFactory::GetForAccountId(account_id); | 282 chromeos::quick_unlock::QuickUnlockFactory::GetForAccountId(account_id); |
| 282 if (!quick_unlock_storage || | 283 if (!quick_unlock_storage || |
| 283 !quick_unlock_storage->IsFingerprintAuthenticationAvailable()) { | 284 !quick_unlock_storage->IsFingerprintAuthenticationAvailable()) { |
| 284 state = FingerprintState::kHidden; | 285 state = ScreenLocker::FingerprintState::kHidden; |
| 285 } | 286 } |
| 286 GetWebUI()->CallJavascriptFunctionUnsafe( | 287 GetWebUI()->CallJavascriptFunctionUnsafe( |
| 287 "login.AccountPickerScreen.setUserPodFingerprintIcon", | 288 "login.AccountPickerScreen.setUserPodFingerprintIcon", |
| 288 ::login::MakeValue(account_id), | 289 ::login::MakeValue(account_id), |
| 289 ::login::MakeValue(static_cast<int>(state))); | 290 ::login::MakeValue(static_cast<int>(state))); |
| 290 } | 291 } |
| 291 | 292 |
| 293 content::WebContents* WebUIScreenLocker::GetWebContents() { |
| 294 return WebUILoginView::GetWebContents(); |
| 295 } |
| 296 |
| 292 //////////////////////////////////////////////////////////////////////////////// | 297 //////////////////////////////////////////////////////////////////////////////// |
| 293 // WebUIScreenLocker, LoginDisplay::Delegate: | 298 // WebUIScreenLocker, LoginDisplay::Delegate: |
| 294 | 299 |
| 295 void WebUIScreenLocker::CancelPasswordChangedFlow() { | 300 void WebUIScreenLocker::CancelPasswordChangedFlow() { |
| 296 NOTREACHED(); | 301 NOTREACHED(); |
| 297 } | 302 } |
| 298 | 303 |
| 299 void WebUIScreenLocker::CompleteLogin(const UserContext& user_context) { | 304 void WebUIScreenLocker::CompleteLogin(const UserContext& user_context) { |
| 300 NOTREACHED(); | 305 NOTREACHED(); |
| 301 } | 306 } |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 431 } | 436 } |
| 432 | 437 |
| 433 if (GetOobeUI()) { | 438 if (GetOobeUI()) { |
| 434 const gfx::Size& size = primary_display.size(); | 439 const gfx::Size& size = primary_display.size(); |
| 435 GetOobeUI()->GetCoreOobeView()->SetClientAreaSize(size.width(), | 440 GetOobeUI()->GetCoreOobeView()->SetClientAreaSize(size.width(), |
| 436 size.height()); | 441 size.height()); |
| 437 } | 442 } |
| 438 } | 443 } |
| 439 | 444 |
| 440 } // namespace chromeos | 445 } // namespace chromeos |
| OLD | NEW |