Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1af6e1ac authored by Sudheer Shanka's avatar Sudheer Shanka
Browse files

Include sticky broadcast cache in the processes dump.

Bug: 356148006
Test: manual
Flag: android.app.use_sticky_bcast_cache
Change-Id: Ie19e61c64b969f74638a4b39d0c2b7b2aa88f17d
parent 2d351559
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -1960,9 +1960,13 @@ public final class ActivityThread extends ClientTransactionHandler

        @Override
        public void dumpCacheInfo(ParcelFileDescriptor pfd, String[] args) {
            try {
                PropertyInvalidatedCache.dumpCacheInfo(pfd, args);
                BroadcastStickyCache.dump(pfd);
            } finally {
                IoUtils.closeQuietly(pfd);
            }
        }

        private File getDatabasesDir(Context context) {
            // There's no simple way to get the databases/ path, so do it this way.
+40 −0
Original line number Diff line number Diff line
@@ -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;