summaryrefslogtreecommitdiff
path: root/core/java/android/permission/PermissionControllerManager.java
diff options
context:
space:
mode:
authorPhilip P. Moltmann <moltmann@google.com>2020-05-07 22:51:38 -0700
committerPhilip P. Moltmann <moltmann@google.com>2020-05-11 14:32:17 -0700
commit1a4467816a76640ebe0882e33d3c9dbefef661cb (patch)
tree8456e06c0816d9f3b43c808b77ea335ea8b283c2 /core/java/android/permission/PermissionControllerManager.java
parentc8d5a6852513be1c4999002e164d0578e7b713d0 (diff)
No need for copying dump state for PC
Also - enforce permission when dumping PC data Bug: 155680199 Test: dumpsys permissionmgr Change-Id: I2cacd6f9d8db0ea329de1d15c96bea9f2ae15dd1
Diffstat (limited to 'core/java/android/permission/PermissionControllerManager.java')
-rw-r--r--core/java/android/permission/PermissionControllerManager.java37
1 files changed, 11 insertions, 26 deletions
diff --git a/core/java/android/permission/PermissionControllerManager.java b/core/java/android/permission/PermissionControllerManager.java
index 06caa03e3cb4..dea932dd6178 100644
--- a/core/java/android/permission/PermissionControllerManager.java
+++ b/core/java/android/permission/PermissionControllerManager.java
@@ -56,15 +56,11 @@ import com.android.internal.annotations.GuardedBy;
import com.android.internal.infra.AndroidFuture;
import com.android.internal.infra.RemoteStream;
import com.android.internal.infra.ServiceConnector;
-import com.android.internal.os.TransferPipe;
import com.android.internal.util.CollectionUtils;
import libcore.util.EmptyArray;
import java.io.FileDescriptor;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
@@ -72,7 +68,6 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
@@ -88,6 +83,7 @@ import java.util.function.Consumer;
public final class PermissionControllerManager {
private static final String TAG = PermissionControllerManager.class.getSimpleName();
+ private static final long REQUEST_TIMEOUT_MILLIS = 60000;
private static final long UNBIND_TIMEOUT_MILLIS = 10000;
private static final int CHUNK_SIZE = 4 * 1024;
@@ -227,6 +223,11 @@ public final class PermissionControllerManager {
}
@Override
+ protected long getRequestTimeoutMs() {
+ return REQUEST_TIMEOUT_MILLIS;
+ }
+
+ @Override
protected long getAutoDisconnectTimeoutMs() {
return UNBIND_TIMEOUT_MILLIS;
}
@@ -487,28 +488,12 @@ public final class PermissionControllerManager {
*
* @hide
*/
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @Nullable String[] args) {
- CompletableFuture<Throwable> dumpResult = new CompletableFuture<>();
- mRemoteService.postForResult(
- service -> TransferPipe.dumpAsync(service.asBinder(), args))
- .whenComplete(
- (dump, err) -> {
- try (FileOutputStream out = new FileOutputStream(fd)) {
- out.write(dump);
- } catch (IOException | NullPointerException e) {
- Log.e(TAG, "Could for forwards permission controller dump", e);
- }
-
- dumpResult.complete(err);
- });
-
+ public void dump(@NonNull FileDescriptor fd, @Nullable String[] args) {
try {
- Throwable err = dumpResult.get(UNBIND_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
- if (err != null) {
- throw err;
- }
- } catch (Throwable e) {
- Log.e(TAG, "Could not dump permission controller state", e);
+ mRemoteService.post(service -> service.asBinder().dump(fd, args))
+ .get(REQUEST_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+ } catch (Exception e) {
+ Log.e(TAG, "Could not get dump", e);
}
}