Loading core/java/android/app/BroadcastStickyCache.java +33 −22 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import android.telephony.TelephonyManager; import android.util.ArrayMap; import android.view.WindowManagerPolicyConstants; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; Loading Loading @@ -71,8 +72,10 @@ public class BroadcastStickyCache { @VisibleForTesting public static final ArrayMap<String, String> sActionApiNameMap = new ArrayMap<>(); @GuardedBy("BroadcastStickyCache.class") private static final ArrayMap<String, IpcDataCache.Config> sActionConfigMap = new ArrayMap<>(); @GuardedBy("BroadcastStickyCache.class") private static final ArrayMap<StickyBroadcastFilter, IpcDataCache<Void, Intent>> sFilterCacheMap = new ArrayMap<>(); Loading Loading @@ -154,7 +157,10 @@ public class BroadcastStickyCache { @Nullable String broadcastPermission, @UserIdInt int userId, @RegisterReceiverFlags int flags) { IpcDataCache<Void, Intent> intentDataCache = findIpcDataCache(filter); IpcDataCache<Void, Intent> intentDataCache; synchronized (BroadcastStickyCache.class) { intentDataCache = findIpcDataCache(filter); if (intentDataCache == null) { final String action = filter.getAction(0); Loading @@ -176,15 +182,19 @@ public class BroadcastStickyCache { flags)); sFilterCacheMap.put(stickyBroadcastFilter, intentDataCache); } } return intentDataCache.query(null); } @VisibleForTesting public static void clearCacheForTest() { synchronized (BroadcastStickyCache.class) { sFilterCacheMap.clear(); } } @Nullable @GuardedBy("BroadcastStickyCache.class") private static IpcDataCache<Void, Intent> findIpcDataCache( @NonNull IntentFilter filter) { for (int i = sFilterCacheMap.size() - 1; i >= 0; i--) { Loading @@ -198,6 +208,7 @@ public class BroadcastStickyCache { } @NonNull @GuardedBy("BroadcastStickyCache.class") private static IpcDataCache.Config getConfig(@NonNull String action) { if (!sActionConfigMap.containsKey(action)) { // We only need 1 entry per cache but just to be on the safer side we are choosing 32 Loading Loading
core/java/android/app/BroadcastStickyCache.java +33 −22 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import android.telephony.TelephonyManager; import android.util.ArrayMap; import android.view.WindowManagerPolicyConstants; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; Loading Loading @@ -71,8 +72,10 @@ public class BroadcastStickyCache { @VisibleForTesting public static final ArrayMap<String, String> sActionApiNameMap = new ArrayMap<>(); @GuardedBy("BroadcastStickyCache.class") private static final ArrayMap<String, IpcDataCache.Config> sActionConfigMap = new ArrayMap<>(); @GuardedBy("BroadcastStickyCache.class") private static final ArrayMap<StickyBroadcastFilter, IpcDataCache<Void, Intent>> sFilterCacheMap = new ArrayMap<>(); Loading Loading @@ -154,7 +157,10 @@ public class BroadcastStickyCache { @Nullable String broadcastPermission, @UserIdInt int userId, @RegisterReceiverFlags int flags) { IpcDataCache<Void, Intent> intentDataCache = findIpcDataCache(filter); IpcDataCache<Void, Intent> intentDataCache; synchronized (BroadcastStickyCache.class) { intentDataCache = findIpcDataCache(filter); if (intentDataCache == null) { final String action = filter.getAction(0); Loading @@ -176,15 +182,19 @@ public class BroadcastStickyCache { flags)); sFilterCacheMap.put(stickyBroadcastFilter, intentDataCache); } } return intentDataCache.query(null); } @VisibleForTesting public static void clearCacheForTest() { synchronized (BroadcastStickyCache.class) { sFilterCacheMap.clear(); } } @Nullable @GuardedBy("BroadcastStickyCache.class") private static IpcDataCache<Void, Intent> findIpcDataCache( @NonNull IntentFilter filter) { for (int i = sFilterCacheMap.size() - 1; i >= 0; i--) { Loading @@ -198,6 +208,7 @@ public class BroadcastStickyCache { } @NonNull @GuardedBy("BroadcastStickyCache.class") private static IpcDataCache.Config getConfig(@NonNull String action) { if (!sActionConfigMap.containsKey(action)) { // We only need 1 entry per cache but just to be on the safer side we are choosing 32 Loading