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

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

Issue 2896093003: cros: Make sure views-based lock screen is destroyed after it is dismissed. (Closed)
Patch Set: Address comments Created 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/lock/screen_locker.cc
diff --git a/chrome/browser/chromeos/login/lock/screen_locker.cc b/chrome/browser/chromeos/login/lock/screen_locker.cc
index 7e1a29aa46ee77b9d397d6552773a70e69d1a8c7..06e9c433914fc5441a28801c892c77aa76fb1dbd 100644
--- a/chrome/browser/chromeos/login/lock/screen_locker.cc
+++ b/chrome/browser/chromeos/login/lock/screen_locker.cc
@@ -244,13 +244,11 @@ void ScreenLocker::Init() {
owns_delegate_ = true;
// Create and display lock screen.
- // TODO(jdufault): Calling ash::ShowLockScreenInWidget should be a mojo
- // call. We should only set the session state to locked after the mojo call
- // has completed.
- if (ash::ShowLockScreen()) {
+ LockScreenClient::Get()->ShowLockScreen(base::BindOnce([](bool did_show) {
+ CHECK(did_show);
session_manager::SessionManager::Get()->SetSessionState(
session_manager::SessionState::LOCKED);
- }
+ }));
} else {
web_ui_.reset(new WebUIScreenLocker(this));
delegate_ = web_ui_.get();
@@ -294,6 +292,9 @@ void ScreenLocker::OnAuthFailure(const AuthFailure& error) {
if (auth_status_consumer_)
auth_status_consumer_->OnAuthFailure(error);
+
+ if (on_auth_complete_)
+ std::move(on_auth_complete_).Run(false);
}
void ScreenLocker::OnAuthSuccess(const UserContext& user_context) {
@@ -348,6 +349,9 @@ void ScreenLocker::OnAuthSuccess(const UserContext& user_context) {
weak_factory_.GetWeakPtr()),
base::TimeDelta::FromMilliseconds(kUnlockGuardTimeoutMs));
delegate_->AnimateAuthenticationSuccess();
+
+ if (on_auth_complete_)
+ std::move(on_auth_complete_).Run(true);
}
void ScreenLocker::OnPasswordAuthSuccess(const UserContext& user_context) {
@@ -377,10 +381,14 @@ void ScreenLocker::UnlockOnLoginSuccess() {
chromeos::ScreenLocker::Hide();
}
-void ScreenLocker::Authenticate(const UserContext& user_context) {
+void ScreenLocker::Authenticate(const UserContext& user_context,
+ AuthenticateCallback callback) {
LOG_ASSERT(IsUserLoggedIn(user_context.GetAccountId()))
<< "Invalid user trying to unlock.";
+ DCHECK(!on_auth_complete_);
+ on_auth_complete_ = std::move(callback);
+
authentication_start_time_ = base::Time::Now();
delegate_->SetPasswordInputEnabled(false);
if (user_context.IsUsingPin())

Powered by Google App Engine
This is Rietveld 408576698