summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Eugene Susla <eugenesusla@google.com> 2020-05-12 00:43:37 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2020-05-12 00:43:37 +0000
commit3cb0fb2e0718f31d59d0b9daa71cc2f5f2076403 (patch)
tree3e29056aea17d949dad02825872c6cfa63d634d8
parent79960652ac861518f2968c881b09695071cbb2ea (diff)
parent0728a4fe507dbe15a286a25af6cf2307fec8ecaa (diff)
Merge "No need for copying dump state for PC" into rvc-dev am: 0728a4fe50
Change-Id: Ica64e6aa84bded477a20ef3969f8e7d655853677
-rw-r--r--core/java/android/permission/PermissionControllerManager.java37
-rw-r--r--core/java/android/permission/PermissionControllerService.java5
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerService.java2
3 files changed, 17 insertions, 27 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);
}
}
diff --git a/core/java/android/permission/PermissionControllerService.java b/core/java/android/permission/PermissionControllerService.java
index c6ede32d0864..8ad35e7eb37d 100644
--- a/core/java/android/permission/PermissionControllerService.java
+++ b/core/java/android/permission/PermissionControllerService.java
@@ -499,6 +499,11 @@ public abstract class PermissionControllerService extends Service {
@Override
protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
+ checkNotNull(fd, "fd");
+ checkNotNull(writer, "writer");
+
+ enforceSomePermissionsGrantedToCaller(Manifest.permission.GET_RUNTIME_PERMISSIONS);
+
PermissionControllerService.this.dump(fd, writer, args);
}
};
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index a1cc44adc704..7d49f788c063 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -421,7 +421,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
@Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- mContext.getSystemService(PermissionControllerManager.class).dump(fd, pw, args);
+ mContext.getSystemService(PermissionControllerManager.class).dump(fd, args);
}
/**