summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/ActivityThread.java8
-rw-r--r--core/java/android/app/BroadcastStickyCache.java40
2 files changed, 46 insertions, 2 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 5b556cc22640..95d3ea51c4d3 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -1960,8 +1960,12 @@ public final class ActivityThread extends ClientTransactionHandler
@Override
public void dumpCacheInfo(ParcelFileDescriptor pfd, String[] args) {
- PropertyInvalidatedCache.dumpCacheInfo(pfd, args);
- IoUtils.closeQuietly(pfd);
+ try {
+ PropertyInvalidatedCache.dumpCacheInfo(pfd, args);
+ BroadcastStickyCache.dump(pfd);
+ } finally {
+ IoUtils.closeQuietly(pfd);
+ }
}
private File getDatabasesDir(Context context) {
diff --git a/core/java/android/app/BroadcastStickyCache.java b/core/java/android/app/BroadcastStickyCache.java
index d6f061be3b00..ea8173191a3f 100644
--- a/core/java/android/app/BroadcastStickyCache.java
+++ b/core/java/android/app/BroadcastStickyCache.java
@@ -27,16 +27,21 @@ import android.net.TetheringManager;
import android.net.nsd.NsdManager;
import android.net.wifi.WifiManager;
import android.net.wifi.p2p.WifiP2pManager;
+import android.os.ParcelFileDescriptor;
import android.os.SystemProperties;
import android.os.UpdateLock;
import android.telephony.TelephonyManager;
import android.util.ArrayMap;
+import android.util.IndentingPrintWriter;
import android.view.WindowManagerPolicyConstants;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.FastPrintWriter;
+import java.io.FileOutputStream;
+import java.io.PrintWriter;
import java.util.ArrayList;
/** @hide */
@@ -214,6 +219,41 @@ public class BroadcastStickyCache {
}
}
+ public static void dump(@NonNull ParcelFileDescriptor pfd) {
+ if (!Flags.useStickyBcastCache()) {
+ return;
+ }
+ final PrintWriter pw = new FastPrintWriter(new FileOutputStream(pfd.getFileDescriptor()));
+ synchronized (sCachedStickyBroadcasts) {
+ dumpLocked(pw);
+ }
+ pw.flush();
+ }
+
+ @GuardedBy("sCachedStickyBroadcasts")
+ private static void dumpLocked(@NonNull PrintWriter pw) {
+ final IndentingPrintWriter ipw = new IndentingPrintWriter(
+ pw, " " /* singleIndent */, " " /* prefix */);
+ ipw.println("Cached sticky broadcasts:");
+ ipw.increaseIndent();
+ final int count = sCachedStickyBroadcasts.size();
+ if (count == 0) {
+ ipw.println("<empty>");
+ } else {
+ for (int i = 0; i < count; ++i) {
+ final CachedStickyBroadcast cachedStickyBroadcast = sCachedStickyBroadcasts.get(i);
+ ipw.print("Entry #"); ipw.print(i); ipw.println(":");
+ ipw.increaseIndent();
+ ipw.print("filter="); ipw.println(cachedStickyBroadcast.filter.toLongString());
+ ipw.print("intent="); ipw.println(cachedStickyBroadcast.intent);
+ ipw.print("version="); ipw.println(cachedStickyBroadcast.version);
+ ipw.print("handle="); ipw.println(cachedStickyBroadcast.propertyHandle);
+ ipw.decreaseIndent();
+ }
+ }
+ ipw.decreaseIndent();
+ }
+
private static final class CachedStickyBroadcast {
@NonNull public final IntentFilter filter;
@Nullable public Intent intent;