From fa5fb1f6612f78db05bff674781a2be4f96a019a Mon Sep 17 00:00:00 2001 From: Eugene Susla Date: Fri, 7 Jun 2019 10:42:19 -0700 Subject: [PATCH] Add timeout for setPermissionGrantState Fixes: 134380096 Test: presubmit Change-Id: Ifff243068eea2637cf8f6391b52a4c53bc544615 --- core/java/android/app/admin/DevicePolicyManager.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 507e97e3df05e..d082f33cdefe7 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -16,6 +16,8 @@ package android.app.admin; +import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage; + import android.Manifest.permission; import android.annotation.CallbackExecutor; import android.annotation.ColorInt; @@ -88,6 +90,7 @@ import android.util.Log; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.os.BackgroundThread; import com.android.internal.util.Preconditions; import com.android.org.conscrypt.TrustedCertificateStore; @@ -8810,6 +8813,11 @@ public class DevicePolicyManager { mService.setPermissionGrantState(admin, mContext.getPackageName(), packageName, permission, grantState, new RemoteCallback((b) -> result.complete(b != null))); + // Timeout + BackgroundThread.getHandler().sendMessageDelayed( + obtainMessage(CompletableFuture::complete, result, false), + 20_000); + return result.get(); } catch (RemoteException re) { throw re.rethrowFromSystemServer();