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

Commit eb08e821 authored by Sudheer Shanka's avatar Sudheer Shanka Committed by Android (Google) Code Review
Browse files

Merge "Include sticky broadcast cache in the processes dump." into main

parents 3d817f37 1af6e1ac
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;