diff options
| author | Philip P. Moltmann <moltmann@google.com> | 2020-05-07 22:51:38 -0700 |
|---|---|---|
| committer | Philip P. Moltmann <moltmann@google.com> | 2020-05-11 14:32:17 -0700 |
| commit | 1a4467816a76640ebe0882e33d3c9dbefef661cb (patch) | |
| tree | 8456e06c0816d9f3b43c808b77ea335ea8b283c2 /core/java/android/permission/PermissionControllerManager.java | |
| parent | c8d5a6852513be1c4999002e164d0578e7b713d0 (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.java | 37 |
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); } } |
