diff options
| author | Philip P. Moltmann <moltmann@google.com> | 2020-05-07 05:22:23 +0000 |
|---|---|---|
| committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-05-07 05:22:23 +0000 |
| commit | 2ed09527447303ed785202228a5d6bf71ebb701f (patch) | |
| tree | 4446333f1ab20f8cf3e2673098033d282d0e56bb /core/java/android | |
| parent | 10662e54cc84c2cd22455dca96919ac44cc7dfae (diff) | |
| parent | f7d1f1a40c0bd8bdf346c723fc2cfbbc897e9494 (diff) | |
Merge "Forward dumps from PermissionControllerManager to permissionmgr" into rvc-dev am: f7d1f1a40c
Change-Id: I6a179fc69d68b70107de794c113c6acfcef67f3f
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/permission/PermissionControllerManager.java | 37 | ||||
| -rw-r--r-- | core/java/android/permission/PermissionControllerService.java | 7 |
2 files changed, 44 insertions, 0 deletions
diff --git a/core/java/android/permission/PermissionControllerManager.java b/core/java/android/permission/PermissionControllerManager.java index ed429dd835c3..06caa03e3cb4 100644 --- a/core/java/android/permission/PermissionControllerManager.java +++ b/core/java/android/permission/PermissionControllerManager.java @@ -56,10 +56,15 @@ 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; @@ -67,7 +72,9 @@ 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; /** @@ -476,6 +483,36 @@ public final class PermissionControllerManager { } /** + * Dump permission controller state. + * + * @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); + }); + + 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); + } + } + + /** * Gets the runtime permissions for an app. * * @param packageName The package for which to query. diff --git a/core/java/android/permission/PermissionControllerService.java b/core/java/android/permission/PermissionControllerService.java index 82a7d788100d..c6ede32d0864 100644 --- a/core/java/android/permission/PermissionControllerService.java +++ b/core/java/android/permission/PermissionControllerService.java @@ -50,9 +50,11 @@ import com.android.internal.infra.AndroidFuture; import com.android.internal.util.CollectionUtils; import com.android.internal.util.Preconditions; +import java.io.FileDescriptor; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -494,6 +496,11 @@ public abstract class PermissionControllerService extends Service { "packageName cannot be null"); onOneTimePermissionSessionTimeout(packageName); } + + @Override + protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) { + PermissionControllerService.this.dump(fd, writer, args); + } }; } } |
