diff options
-rw-r--r-- | core/java/android/app/ActivityThread.java | 8 | ||||
-rw-r--r-- | core/java/android/app/BroadcastStickyCache.java | 40 |
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; |