Merge "Do not add unnecessary prefix to dumpsys activity provider [NAME] --proto" into oc-dev

am: 7db56af8f9

Change-Id: Idab3ef3f74f494a3d852f047088e621b4cc01fc5
This commit is contained in:
Hyunyoung Song
2017-05-31 21:17:47 +00:00
committed by android-build-merger

View File

@@ -382,18 +382,29 @@ public final class ProviderMap {
}
/**
* Invokes IApplicationThread.dumpProvider() on the thread of the specified provider if
* there is a thread associated with the provider.
* Before invoking IApplicationThread.dumpProvider(), print meta information to the print
* writer and handle passed flags.
*/
private void dumpProvider(String prefix, FileDescriptor fd, PrintWriter pw,
final ContentProviderRecord r, String[] args, boolean dumpAll) {
for (String s: args) {
if (!dumpAll && s.contains("--proto")) {
if (r.proc != null && r.proc.thread != null) {
dumpToTransferPipe(null , fd, pw, r, args);
}
return;
}
}
String innerPrefix = prefix + " ";
synchronized (mAm) {
pw.print(prefix); pw.print("PROVIDER ");
pw.print(r);
pw.print(" pid=");
if (r.proc != null) pw.println(r.proc.pid);
else pw.println("(not running)");
pw.print(r);
pw.print(" pid=");
if (r.proc != null) {
pw.println(r.proc.pid);
} else {
pw.println("(not running)");
}
if (dumpAll) {
r.dump(pw, innerPrefix, true);
}
@@ -401,23 +412,32 @@ public final class ProviderMap {
if (r.proc != null && r.proc.thread != null) {
pw.println(" Client:");
pw.flush();
dumpToTransferPipe(" ", fd, pw, r, args);
}
}
/**
* Invokes IApplicationThread.dumpProvider() on the thread of the specified provider without
* any meta string (e.g., provider info, indentation) written to the file descriptor.
*/
private void dumpToTransferPipe(String prefix, FileDescriptor fd, PrintWriter pw,
final ContentProviderRecord r, String[] args) {
try {
TransferPipe tp = new TransferPipe();
try {
TransferPipe tp = new TransferPipe();
try {
r.proc.thread.dumpProvider(
tp.getWriteFd(), r.provider.asBinder(), args);
tp.setBufferPrefix(" ");
// Short timeout, since blocking here can
// deadlock with the application.
tp.go(fd, 2000);
} finally {
tp.kill();
}
} catch (IOException ex) {
pw.println(" Failure while dumping the provider: " + ex);
} catch (RemoteException ex) {
pw.println(" Got a RemoteException while dumping the service");
r.proc.thread.dumpProvider(
tp.getWriteFd(), r.provider.asBinder(), args);
tp.setBufferPrefix(prefix);
// Short timeout, since blocking here can
// deadlock with the application.
tp.go(fd, 2000);
} finally {
tp.kill();
}
} catch (IOException ex) {
pw.println(" Failure while dumping the provider: " + ex);
} catch (RemoteException ex) {
pw.println(" Got a RemoteException while dumping the service");
}
}
}