summaryrefslogtreecommitdiff
path: root/core/java/android/permission/PermissionControllerManager.java
diff options
context:
space:
mode:
authorPhilip P. Moltmann <moltmann@google.com>2019-01-10 17:03:42 -0800
committerPhilip P. Moltmann <moltmann@google.com>2019-01-12 11:39:31 -0800
commit1117ca31ccccd5818cb3573392ceb2587ff55dbb (patch)
tree962984143c73887f5227e26bbdb08dd2e69d10e8 /core/java/android/permission/PermissionControllerManager.java
parent339ecba5424fee80dd41436b66ea6491f0ee6946 (diff)
Call timeout callbacks on executor too
Test: atest PermissionControllerTest Change-Id: I23832d6ff992e7417e0a0128ef94203b2a435cb7
Diffstat (limited to 'core/java/android/permission/PermissionControllerManager.java')
-rw-r--r--core/java/android/permission/PermissionControllerManager.java10
1 files changed, 9 insertions, 1 deletions
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