[go: nahoru, domu]

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;