child user: Validate parent access code entered on lock screen
Create an instance of ParentAccessService in ScreenTimeController.
Unblock lock screen upon successful validation of access code.
Bug: 911326
Change-Id: If304be20ad59fe1e9a108faa1f1c84e179a97c91
Reviewed-on: https://chromium-review.googlesource.com/c/1474544
Commit-Queue: Aga Wronska <agawronska@chromium.org>
Reviewed-by: Jacob Dufault <jdufault@chromium.org>
Reviewed-by: Gabriel Charette <gab@chromium.org>
Reviewed-by: Michael Giuffrida <michaelpg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#635706}
diff --git a/ash/login/login_screen_controller.cc b/ash/login/login_screen_controller.cc
index d5e5e61..d676e35 100644
--- a/ash/login/login_screen_controller.cc
+++ b/ash/login/login_screen_controller.cc
@@ -182,6 +182,21 @@
login_screen_client_->AuthenticateUserWithEasyUnlock(account_id);
}
+void LoginScreenController::ValidateParentAccessCode(
+ const AccountId& account_id,
+ const std::string& code,
+ OnParentAccessValidation callback) {
+ if (!login_screen_client_) {
+ std::move(callback).Run(base::nullopt);
+ return;
+ }
+
+ login_screen_client_->ValidateParentAccessCode(
+ account_id, code,
+ base::BindOnce(&LoginScreenController::OnParentAccessValidationComplete,
+ weak_factory_.GetWeakPtr(), std::move(callback)));
+}
+
void LoginScreenController::HardlockPod(const AccountId& account_id) {
if (!login_screen_client_)
return;
@@ -580,6 +595,12 @@
authentication_stage_ = AuthenticationStage::kIdle;
}
+void LoginScreenController::OnParentAccessValidationComplete(
+ OnParentAccessValidation callback,
+ bool success) {
+ std::move(callback).Run(base::make_optional<bool>(success));
+}
+
LoginDataDispatcher* LoginScreenController::DataDispatcher() const {
if (!ash::LockScreen::HasInstance())
return nullptr;