From 1117ca31ccccd5818cb3573392ceb2587ff55dbb Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Thu, 10 Jan 2019 17:03:42 -0800 Subject: Call timeout callbacks on executor too Test: atest PermissionControllerTest Change-Id: I23832d6ff992e7417e0a0128ef94203b2a435cb7 --- core/java/android/permission/PermissionControllerManager.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'core/java/android/permission/PermissionControllerManager.java') diff --git a/core/java/android/permission/PermissionControllerManager.java b/core/java/android/permission/PermissionControllerManager.java index e21a6608bee0..7c0b8113c37c 100644 --- a/core/java/android/permission/PermissionControllerManager.java +++ b/core/java/android/permission/PermissionControllerManager.java @@ -309,6 +309,7 @@ public final class PermissionControllerManager { private final boolean mDoDryRun; private final int mReason; private final @NonNull String mCallingPackage; + private final @NonNull Executor mExecutor; private final @NonNull OnRevokeRuntimePermissionsCallback mCallback; private final @NonNull RemoteCallback mRemoteCallback; @@ -324,6 +325,7 @@ public final class PermissionControllerManager { mDoDryRun = doDryRun; mReason = reason; mCallingPackage = callingPackage; + mExecutor = executor; mCallback = callback; mRemoteCallback = new RemoteCallback(result -> executor.execute(() -> { @@ -358,7 +360,13 @@ public final class PermissionControllerManager { @Override protected void onTimeout(RemoteService remoteService) { - mCallback.onRevokeRuntimePermissions(Collections.emptyMap()); + long token = Binder.clearCallingIdentity(); + try { + mExecutor.execute( + () -> mCallback.onRevokeRuntimePermissions(Collections.emptyMap())); + } finally { + Binder.restoreCallingIdentity(token); + } } @Override -- cgit v1.2.3