Increased the number of adding a role holder retries to 12.
This CL also contains an extra check on whether the role has been assigned or not.
Bug: 383915983
Bug: 383126661
Test: atest DeviceLockUnitTests
Flag: EXEMPT bugfix
Change-Id: Ib28973ca8141480a13028b41084af3022d769925
diff --git a/service/java/com/android/server/devicelock/DeviceLockServiceImpl.java b/service/java/com/android/server/devicelock/DeviceLockServiceImpl.java
index ee384df..084f3fb 100644
--- a/service/java/com/android/server/devicelock/DeviceLockServiceImpl.java
+++ b/service/java/com/android/server/devicelock/DeviceLockServiceImpl.java
@@ -95,7 +95,7 @@
"com.android.devicelock.action.KEEPALIVE";
// Workaround for timeout while adding the kiosk app as role holder for financing.
- private static final int MAX_ADD_ROLE_HOLDER_TRIES = 4;
+ private static final int MAX_ADD_ROLE_HOLDER_TRIES = 12;
private final Context mContext;
private final ExecutorService mExecutorService;
@@ -765,6 +765,16 @@
if (accepted || remainingTries == 1) {
reportResult(accepted, identity, remoteCallback);
} else {
+ // Check if the role is already added.
+ if (mRoleManager.getRoleHoldersAsUser(
+ RoleManager.ROLE_FINANCED_DEVICE_KIOSK, userHandle).
+ contains(packageName)) {
+ Slog.w(TAG, "Role (" +
+ RoleManager.ROLE_FINANCED_DEVICE_KIOSK + ") already added for "
+ + packageName);
+ return;
+ }
+
final int retryNumber = MAX_ADD_ROLE_HOLDER_TRIES - remainingTries + 1;
Slog.w(TAG, "Retrying adding financed device role to kiosk app (retry "
+ retryNumber + ")");