From 0701e42726401fc816b73fdd1e43ccabb4f6f701 Mon Sep 17 00:00:00 2001 From: Vishnu Nair Date: Thu, 26 Oct 2017 10:08:50 -0700 Subject: [PATCH] Register ConnectivityService with dumpsys priorities Register service with HIGH and NORMAL priority suppport. Dump network diagnostics as part of the HIGH priority bucket. Test: adb shell setprop dumpstate.version "2.0-dev-priority-dumps" && \ adb bugreport ~/tmp_new.zip Test: adb shell dumpsys --priority HIGH Change-Id: I1ad263efbc264c3328e70dc9f7ddeb2d31bc4d41 --- .../android/server/ConnectivityService.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 348c799796..11c5b5f39d 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -143,6 +143,7 @@ import com.android.server.connectivity.tethering.TetheringDependencies; import com.android.server.net.BaseNetworkObserver; import com.android.server.net.LockdownVpnTracker; import com.android.server.net.NetworkPolicyManagerInternal; +import com.android.server.utils.PriorityDump; import com.google.android.collect.Lists; @@ -682,6 +683,28 @@ public class ConnectivityService extends IConnectivityManager.Stub } private LegacyTypeTracker mLegacyTypeTracker = new LegacyTypeTracker(); + /** + * Helper class which parses out priority arguments and dumps sections according to their + * priority. If priority arguments are omitted, function calls the legacy dump command. + */ + private final PriorityDump.PriorityDumper mPriorityDumper = new PriorityDump.PriorityDumper() { + @Override + public void dumpHigh(FileDescriptor fd, PrintWriter pw, String[] args, boolean asProto) { + doDump(fd, pw, new String[] {DIAG_ARG}, asProto); + doDump(fd, pw, new String[] {SHORT_ARG}, asProto); + } + + @Override + public void dumpNormal(FileDescriptor fd, PrintWriter pw, String[] args, boolean asProto) { + doDump(fd, pw, args, asProto); + } + + @Override + public void dump(FileDescriptor fd, PrintWriter pw, String[] args, boolean asProto) { + doDump(fd, pw, args, asProto); + } + }; + public ConnectivityService(Context context, INetworkManagementService netManager, INetworkStatsService statsService, INetworkPolicyManager policyManager) { this(context, netManager, statsService, policyManager, new IpConnectivityLog()); @@ -1862,8 +1885,13 @@ public class ConnectivityService extends IConnectivityManager.Stub @Override protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) { + PriorityDump.dump(mPriorityDumper, fd, writer, args); + } + + private void doDump(FileDescriptor fd, PrintWriter writer, String[] args, boolean asProto) { final IndentingPrintWriter pw = new IndentingPrintWriter(writer, " "); if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return; + if (asProto) return; if (argsContain(args, DIAG_ARG)) { dumpNetworkDiagnostics(pw);