From 042cd5d92846f6e0e5f4f0349aeaacdd265df1ee Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Fri, 7 Jul 2023 20:50:39 +0000 Subject: [PATCH] Load reboot escrow data at PHASE_BOOT_COMPLETED Users can't be unlocked before PHASE_BOOT_COMPLETED, as is documented and enforced in UserController.java. Therefore, fix LockSettingsService#loadEscrowData() to run at PHASE_BOOT_COMPLETED instead of at PHASE_ACTIVITY_MANAGER_READY. This prevents LockSettingsService from needing to use Gatekeeper earlier than is normally the case, which made it more fragile to delays in Gatekeeper coming up. It might prevent other problems too. Bug: 283055837 Test: atest ResumeOnRebootHostTest Change-Id: I6707b6f33b37f940aecbbd9ec82455fa2a205e99 --- .../com/android/server/locksettings/LockSettingsService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java index 50ebe99e55ac3..fd4176aac5de0 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsService.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java @@ -311,8 +311,9 @@ public class LockSettingsService extends ILockSettings.Stub { super.onBootPhase(phase); if (phase == PHASE_ACTIVITY_MANAGER_READY) { mLockSettingsService.migrateOldDataAfterSystemReady(); - mLockSettingsService.loadEscrowData(); mLockSettingsService.deleteRepairModePersistentDataIfNeeded(); + } else if (phase == PHASE_BOOT_COMPLETED) { + mLockSettingsService.loadEscrowData(); } }