From 1cfb57c0238d2c7f34f424b5fb32b3c074d9ac44 Mon Sep 17 00:00:00 2001 From: Tianjie Date: Tue, 27 Apr 2021 21:49:22 -0700 Subject: [PATCH 1/2] Dump the IOexception before retrying load escrow key This gives us more information on the reason of the failure. Test: unittest Change-Id: I0c4b91aa67607c2b1fdddcd4477fa67287fa4b3e --- .../com/android/server/locksettings/RebootEscrowManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java index 90694d0a5f64c..08f681be2e1c7 100644 --- a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java +++ b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java @@ -374,6 +374,7 @@ class RebootEscrowManager { try { escrowKey = getAndClearRebootEscrowKey(kk); } catch (IOException e) { + Slog.i(TAG, "Failed to load escrow key, scheduling retry.", e); scheduleLoadRebootEscrowDataOrFail(retryHandler, attemptNumber + 1, users, rebootEscrowUsers); return; From adc5a1d7642cdfae17da6c2ba74bdd69fd10d9dc Mon Sep 17 00:00:00 2001 From: Tianjie Date: Wed, 28 Apr 2021 15:24:47 -0700 Subject: [PATCH 2/2] Always use the server based provider if HAL isn't installed If the device doesn't have the reboot escorw HAL, default the provider to server-based. It helps OEM testing before our P/H flag rollout; because most OEM devices don't install the HAL. Test: unittests Change-Id: Ia43ab0abb769bbf8e11e61841f4a647ae2acc6be --- .../android/server/locksettings/RebootEscrowManager.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java index 08f681be2e1c7..3f2b8fffcc54d 100644 --- a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java +++ b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java @@ -31,6 +31,7 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.UserIdInt; import android.content.Context; +import android.content.pm.PackageManager; import android.content.pm.UserInfo; import android.os.Handler; import android.os.SystemClock; @@ -224,6 +225,12 @@ class RebootEscrowManager { } public boolean serverBasedResumeOnReboot() { + // Always use the server based RoR if the HAL isn't installed on device. + if (!mContext.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_REBOOT_ESCROW)) { + return true; + } + return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_OTA, "server_based_ror_enabled", false); }