Merge "Forward dumps from PermissionControllerManager to permissionmgr" into rvc-dev am: f7d1f1a40c
Change-Id: I6a179fc69d68b70107de794c113c6acfcef67f3f
This commit is contained in:
committed by
Automerger Merge Worker
commit
2ed0952744
@@ -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;
|
||||
|
||||
/**
|
||||
@@ -475,6 +482,36 @@ public final class PermissionControllerManager {
|
||||
}, 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.
|
||||
*
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,6 +149,8 @@ import com.android.server.policy.SoftRestrictedPermissionPolicy;
|
||||
|
||||
import libcore.util.EmptyArray;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.ArrayList;
|
||||
@@ -417,6 +419,11 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
||||
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.
|
||||
* <p>
|
||||
|
||||
Reference in New Issue
Block a user