Merge "Forward dumps from PermissionControllerManager to permissionmgr" into rvc-dev

This commit is contained in:
Philip P. Moltmann
2020-05-07 05:07:27 +00:00
committed by Android (Google) Code Review
3 changed files with 51 additions and 0 deletions

View File

@@ -56,10 +56,15 @@ import com.android.internal.annotations.GuardedBy;
import com.android.internal.infra.AndroidFuture; import com.android.internal.infra.AndroidFuture;
import com.android.internal.infra.RemoteStream; import com.android.internal.infra.RemoteStream;
import com.android.internal.infra.ServiceConnector; import com.android.internal.infra.ServiceConnector;
import com.android.internal.os.TransferPipe;
import com.android.internal.util.CollectionUtils; import com.android.internal.util.CollectionUtils;
import libcore.util.EmptyArray; 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.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList; import java.util.ArrayList;
@@ -67,7 +72,9 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer; import java.util.function.Consumer;
/** /**
@@ -475,6 +482,36 @@ public final class PermissionControllerManager {
}, executor); }, executor);
} }
/**
* 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. * Gets the runtime permissions for an app.
* *

View File

@@ -50,9 +50,11 @@ import com.android.internal.infra.AndroidFuture;
import com.android.internal.util.CollectionUtils; import com.android.internal.util.CollectionUtils;
import com.android.internal.util.Preconditions; import com.android.internal.util.Preconditions;
import java.io.FileDescriptor;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@@ -494,6 +496,11 @@ public abstract class PermissionControllerService extends Service {
"packageName cannot be null"); "packageName cannot be null");
onOneTimePermissionSessionTimeout(packageName); onOneTimePermissionSessionTimeout(packageName);
} }
@Override
protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
PermissionControllerService.this.dump(fd, writer, args);
}
}; };
} }
} }

View File

@@ -149,6 +149,8 @@ import com.android.server.policy.SoftRestrictedPermissionPolicy;
import libcore.util.EmptyArray; import libcore.util.EmptyArray;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList; import java.util.ArrayList;
@@ -417,6 +419,11 @@ public class PermissionManagerService extends IPermissionManager.Stub {
LocalServices.addService(PermissionManagerInternal.class, localService); LocalServices.addService(PermissionManagerInternal.class, localService);
} }
@Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
mContext.getSystemService(PermissionControllerManager.class).dump(fd, pw, args);
}
/** /**
* Creates and returns an initialized, internal service for use by other components. * Creates and returns an initialized, internal service for use by other components.
* <p> * <p>