package androidx.localbroadcastmanager.content; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.Uri; import android.os.Handler; import android.os.Message; import androidx.annotation.NonNull; import java.util.ArrayList; import java.util.HashMap; import java.util.Set; @Deprecated /* loaded from: classes.dex */ public final class LocalBroadcastManager { private static final boolean DEBUG = false; static final int MSG_EXEC_PENDING_BROADCASTS = 1; private static final String TAG = "LocalBroadcastManager"; private static LocalBroadcastManager mInstance; private static final Object mLock = new Object(); private final Context mAppContext; private final Handler mHandler; private final HashMap> mReceivers = new HashMap<>(); private final HashMap> mActions = new HashMap<>(); private final ArrayList mPendingBroadcasts = new ArrayList<>(); public static final class ReceiverRecord { boolean broadcasting; boolean dead; final IntentFilter filter; final BroadcastReceiver receiver; public ReceiverRecord(IntentFilter intentFilter, BroadcastReceiver broadcastReceiver) { this.filter = intentFilter; this.receiver = broadcastReceiver; } public String toString() { StringBuilder sb = new StringBuilder(128); sb.append("Receiver{"); sb.append(this.receiver); sb.append(" filter="); sb.append(this.filter); if (this.dead) { sb.append(" DEAD"); } sb.append("}"); return sb.toString(); } } public static final class BroadcastRecord { final Intent intent; final ArrayList receivers; public BroadcastRecord(Intent intent, ArrayList arrayList) { this.intent = intent; this.receivers = arrayList; } } @NonNull public static LocalBroadcastManager getInstance(@NonNull Context context) { LocalBroadcastManager localBroadcastManager; synchronized (mLock) { try { if (mInstance == null) { mInstance = new LocalBroadcastManager(context.getApplicationContext()); } localBroadcastManager = mInstance; } catch (Throwable th) { throw th; } } return localBroadcastManager; } private LocalBroadcastManager(Context context) { this.mAppContext = context; this.mHandler = new Handler(context.getMainLooper()) { // from class: androidx.localbroadcastmanager.content.LocalBroadcastManager.1 @Override // android.os.Handler public void handleMessage(Message message) { if (message.what == 1) { LocalBroadcastManager.this.executePendingBroadcasts(); } else { super.handleMessage(message); } } }; } public void registerReceiver(@NonNull BroadcastReceiver broadcastReceiver, @NonNull IntentFilter intentFilter) { synchronized (this.mReceivers) { try { ReceiverRecord receiverRecord = new ReceiverRecord(intentFilter, broadcastReceiver); ArrayList arrayList = this.mReceivers.get(broadcastReceiver); if (arrayList == null) { arrayList = new ArrayList<>(1); this.mReceivers.put(broadcastReceiver, arrayList); } arrayList.add(receiverRecord); for (int i = 0; i < intentFilter.countActions(); i++) { String action = intentFilter.getAction(i); ArrayList arrayList2 = this.mActions.get(action); if (arrayList2 == null) { arrayList2 = new ArrayList<>(1); this.mActions.put(action, arrayList2); } arrayList2.add(receiverRecord); } } catch (Throwable th) { throw th; } } } public void unregisterReceiver(@NonNull BroadcastReceiver broadcastReceiver) { synchronized (this.mReceivers) { try { ArrayList remove = this.mReceivers.remove(broadcastReceiver); if (remove == null) { return; } for (int size = remove.size() - 1; size >= 0; size--) { ReceiverRecord receiverRecord = remove.get(size); receiverRecord.dead = true; for (int i = 0; i < receiverRecord.filter.countActions(); i++) { String action = receiverRecord.filter.getAction(i); ArrayList arrayList = this.mActions.get(action); if (arrayList != null) { for (int size2 = arrayList.size() - 1; size2 >= 0; size2--) { ReceiverRecord receiverRecord2 = arrayList.get(size2); if (receiverRecord2.receiver == broadcastReceiver) { receiverRecord2.dead = true; arrayList.remove(size2); } } if (arrayList.size() <= 0) { this.mActions.remove(action); } } } } } catch (Throwable th) { throw th; } } } public boolean sendBroadcast(@NonNull Intent intent) { int i; String str; ArrayList arrayList; ArrayList arrayList2; String str2; boolean z; synchronized (this.mReceivers) { try { String action = intent.getAction(); String resolveTypeIfNeeded = intent.resolveTypeIfNeeded(this.mAppContext.getContentResolver()); Uri data = intent.getData(); String scheme = intent.getScheme(); Set categories = intent.getCategories(); boolean z2 = true; boolean z3 = (intent.getFlags() & 8) != 0; if (z3) { StringBuilder sb = new StringBuilder(); sb.append("Resolving type "); sb.append(resolveTypeIfNeeded); sb.append(" scheme "); sb.append(scheme); sb.append(" of intent "); sb.append(intent); } ArrayList arrayList3 = this.mActions.get(intent.getAction()); if (arrayList3 != null) { if (z3) { StringBuilder sb2 = new StringBuilder(); sb2.append("Action list: "); sb2.append(arrayList3); } ArrayList arrayList4 = null; int i2 = 0; while (i2 < arrayList3.size()) { ReceiverRecord receiverRecord = arrayList3.get(i2); if (z3) { StringBuilder sb3 = new StringBuilder(); sb3.append("Matching against filter "); sb3.append(receiverRecord.filter); } if (receiverRecord.broadcasting) { i = i2; arrayList2 = arrayList3; str = action; str2 = resolveTypeIfNeeded; arrayList = arrayList4; z = z2; } else { IntentFilter intentFilter = receiverRecord.filter; String str3 = action; String str4 = resolveTypeIfNeeded; i = i2; str = action; arrayList = arrayList4; arrayList2 = arrayList3; str2 = resolveTypeIfNeeded; z = z2; int match = intentFilter.match(str3, str4, scheme, data, categories, TAG); if (match >= 0) { if (z3) { StringBuilder sb4 = new StringBuilder(); sb4.append(" Filter matched! match=0x"); sb4.append(Integer.toHexString(match)); } arrayList4 = arrayList == null ? new ArrayList() : arrayList; arrayList4.add(receiverRecord); receiverRecord.broadcasting = z; i2 = i + 1; z2 = z; action = str; arrayList3 = arrayList2; resolveTypeIfNeeded = str2; } else if (z3) { String str5 = match != -4 ? match != -3 ? match != -2 ? match != -1 ? "unknown reason" : "type" : "data" : "action" : "category"; StringBuilder sb5 = new StringBuilder(); sb5.append(" Filter did not match: "); sb5.append(str5); } } arrayList4 = arrayList; i2 = i + 1; z2 = z; action = str; arrayList3 = arrayList2; resolveTypeIfNeeded = str2; } ArrayList arrayList5 = arrayList4; boolean z4 = z2; if (arrayList5 != null) { for (int i3 = 0; i3 < arrayList5.size(); i3++) { ((ReceiverRecord) arrayList5.get(i3)).broadcasting = false; } this.mPendingBroadcasts.add(new BroadcastRecord(intent, arrayList5)); if (!this.mHandler.hasMessages(z4 ? 1 : 0)) { this.mHandler.sendEmptyMessage(z4 ? 1 : 0); } return z4; } } return false; } catch (Throwable th) { throw th; } } } public void sendBroadcastSync(@NonNull Intent intent) { if (sendBroadcast(intent)) { executePendingBroadcasts(); } } public void executePendingBroadcasts() { int size; BroadcastRecord[] broadcastRecordArr; while (true) { synchronized (this.mReceivers) { try { size = this.mPendingBroadcasts.size(); if (size <= 0) { return; } broadcastRecordArr = new BroadcastRecord[size]; this.mPendingBroadcasts.toArray(broadcastRecordArr); this.mPendingBroadcasts.clear(); } catch (Throwable th) { throw th; } } for (int i = 0; i < size; i++) { BroadcastRecord broadcastRecord = broadcastRecordArr[i]; int size2 = broadcastRecord.receivers.size(); for (int i2 = 0; i2 < size2; i2++) { ReceiverRecord receiverRecord = broadcastRecord.receivers.get(i2); if (!receiverRecord.dead) { receiverRecord.receiver.onReceive(this.mAppContext, broadcastRecord.intent); } } } } } }