Implement Activity Manager Broadcasts dump protos
Bug: 66729158
Test: Manually build and flash the system.img and test "activity --proto
broadcasts"
Change-Id: I3cb7474c4a3ab092f38ed6a121b4d034cadfc402
diff --git a/services/core/java/com/android/server/IntentResolver.java b/services/core/java/com/android/server/IntentResolver.java
index 40499c9..119c9df 100644
--- a/services/core/java/com/android/server/IntentResolver.java
+++ b/services/core/java/com/android/server/IntentResolver.java
@@ -38,6 +38,8 @@
import android.content.Intent;
import android.content.IntentFilter;
+import android.util.proto.ProtoOutputStream;
+
import com.android.internal.util.FastPrintWriter;
/**
@@ -279,6 +281,31 @@
return printedSomething;
}
+ void writeProtoMap(ProtoOutputStream proto, long fieldId, ArrayMap<String, F[]> map) {
+ int N = map.size();
+ for (int mapi = 0; mapi < N; mapi++) {
+ long token = proto.start(fieldId);
+ proto.write(IntentResolverProto.ArrayMapEntry.KEY, map.keyAt(mapi));
+ for (F f : map.valueAt(mapi)) {
+ if (f != null) {
+ proto.write(IntentResolverProto.ArrayMapEntry.VALUES, f.toString());
+ }
+ }
+ proto.end(token);
+ }
+ }
+
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
+ long token = proto.start(fieldId);
+ writeProtoMap(proto, IntentResolverProto.FULL_MIME_TYPES, mTypeToFilter);
+ writeProtoMap(proto, IntentResolverProto.BASE_MIME_TYPES, mBaseTypeToFilter);
+ writeProtoMap(proto, IntentResolverProto.WILD_MIME_TYPES, mWildTypeToFilter);
+ writeProtoMap(proto, IntentResolverProto.SCHEMES, mSchemeToFilter);
+ writeProtoMap(proto, IntentResolverProto.NON_DATA_ACTIONS, mActionToFilter);
+ writeProtoMap(proto, IntentResolverProto.MIME_TYPED_ACTIONS, mTypedActionToFilter);
+ proto.end(token);
+ }
+
public boolean dump(PrintWriter out, String title, String prefix, String packageName,
boolean printFilter, boolean collapseDuplicates) {
String innerPrefix = prefix + " ";