LocalBroadcastManager.smali 34 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160
  1. .class public final Landroid/support/v4/content/LocalBroadcastManager;
  2. .super Ljava/lang/Object;
  3. .source "LocalBroadcastManager.java"
  4. # annotations
  5. .annotation system Ldalvik/annotation/MemberClasses;
  6. value = {
  7. Landroid/support/v4/content/LocalBroadcastManager$BroadcastRecord;,
  8. Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;
  9. }
  10. .end annotation
  11. # static fields
  12. .field private static final DEBUG:Z = false
  13. .field static final MSG_EXEC_PENDING_BROADCASTS:I = 0x1
  14. .field private static final TAG:Ljava/lang/String; = "LocalBroadcastManager"
  15. .field private static mInstance:Landroid/support/v4/content/LocalBroadcastManager;
  16. .field private static final mLock:Ljava/lang/Object;
  17. # instance fields
  18. .field private final mActions:Ljava/util/HashMap;
  19. .annotation system Ldalvik/annotation/Signature;
  20. value = {
  21. "Ljava/util/HashMap",
  22. "<",
  23. "Ljava/lang/String;",
  24. "Ljava/util/ArrayList",
  25. "<",
  26. "Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;",
  27. ">;>;"
  28. }
  29. .end annotation
  30. .end field
  31. .field private final mAppContext:Landroid/content/Context;
  32. .field private final mHandler:Landroid/os/Handler;
  33. .field private final mPendingBroadcasts:Ljava/util/ArrayList;
  34. .annotation system Ldalvik/annotation/Signature;
  35. value = {
  36. "Ljava/util/ArrayList",
  37. "<",
  38. "Landroid/support/v4/content/LocalBroadcastManager$BroadcastRecord;",
  39. ">;"
  40. }
  41. .end annotation
  42. .end field
  43. .field private final mReceivers:Ljava/util/HashMap;
  44. .annotation system Ldalvik/annotation/Signature;
  45. value = {
  46. "Ljava/util/HashMap",
  47. "<",
  48. "Landroid/content/BroadcastReceiver;",
  49. "Ljava/util/ArrayList",
  50. "<",
  51. "Landroid/content/IntentFilter;",
  52. ">;>;"
  53. }
  54. .end annotation
  55. .end field
  56. # direct methods
  57. .method static constructor <clinit>()V
  58. .locals 1
  59. .prologue
  60. .line 96
  61. new-instance v0, Ljava/lang/Object;
  62. invoke-direct {v0}, Ljava/lang/Object;-><init>()V
  63. sput-object v0, Landroid/support/v4/content/LocalBroadcastManager;->mLock:Ljava/lang/Object;
  64. return-void
  65. .end method
  66. .method private constructor <init>(Landroid/content/Context;)V
  67. .locals 2
  68. .param p1, "context" # Landroid/content/Context;
  69. .prologue
  70. .line 108
  71. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  72. .line 84
  73. new-instance v0, Ljava/util/HashMap;
  74. invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
  75. iput-object v0, p0, Landroid/support/v4/content/LocalBroadcastManager;->mReceivers:Ljava/util/HashMap;
  76. .line 86
  77. new-instance v0, Ljava/util/HashMap;
  78. invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
  79. iput-object v0, p0, Landroid/support/v4/content/LocalBroadcastManager;->mActions:Ljava/util/HashMap;
  80. .line 89
  81. new-instance v0, Ljava/util/ArrayList;
  82. invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
  83. iput-object v0, p0, Landroid/support/v4/content/LocalBroadcastManager;->mPendingBroadcasts:Ljava/util/ArrayList;
  84. .line 109
  85. iput-object p1, p0, Landroid/support/v4/content/LocalBroadcastManager;->mAppContext:Landroid/content/Context;
  86. .line 110
  87. new-instance v0, Landroid/support/v4/content/LocalBroadcastManager$1;
  88. invoke-virtual {p1}, Landroid/content/Context;->getMainLooper()Landroid/os/Looper;
  89. move-result-object v1
  90. invoke-direct {v0, p0, v1}, Landroid/support/v4/content/LocalBroadcastManager$1;-><init>(Landroid/support/v4/content/LocalBroadcastManager;Landroid/os/Looper;)V
  91. iput-object v0, p0, Landroid/support/v4/content/LocalBroadcastManager;->mHandler:Landroid/os/Handler;
  92. .line 123
  93. return-void
  94. .end method
  95. .method static synthetic access$000(Landroid/support/v4/content/LocalBroadcastManager;)V
  96. .locals 0
  97. .param p0, "x0" # Landroid/support/v4/content/LocalBroadcastManager;
  98. .prologue
  99. .line 46
  100. invoke-direct {p0}, Landroid/support/v4/content/LocalBroadcastManager;->executePendingBroadcasts()V
  101. return-void
  102. .end method
  103. .method private executePendingBroadcasts()V
  104. .locals 8
  105. .prologue
  106. .line 284
  107. :cond_0
  108. const/4 v2, 0x0
  109. .line 285
  110. .local v2, "brs":[Landroid/support/v4/content/LocalBroadcastManager$BroadcastRecord;
  111. iget-object v6, p0, Landroid/support/v4/content/LocalBroadcastManager;->mReceivers:Ljava/util/HashMap;
  112. monitor-enter v6
  113. .line 286
  114. :try_start_0
  115. iget-object v5, p0, Landroid/support/v4/content/LocalBroadcastManager;->mPendingBroadcasts:Ljava/util/ArrayList;
  116. invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
  117. move-result v0
  118. .line 287
  119. .local v0, "N":I
  120. if-gtz v0, :cond_1
  121. .line 288
  122. monitor-exit v6
  123. return-void
  124. .line 290
  125. :cond_1
  126. new-array v2, v0, [Landroid/support/v4/content/LocalBroadcastManager$BroadcastRecord;
  127. .line 291
  128. iget-object v5, p0, Landroid/support/v4/content/LocalBroadcastManager;->mPendingBroadcasts:Ljava/util/ArrayList;
  129. invoke-virtual {v5, v2}, Ljava/util/ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
  130. .line 292
  131. iget-object v5, p0, Landroid/support/v4/content/LocalBroadcastManager;->mPendingBroadcasts:Ljava/util/ArrayList;
  132. invoke-virtual {v5}, Ljava/util/ArrayList;->clear()V
  133. .line 293
  134. monitor-exit v6
  135. :try_end_0
  136. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  137. .line 294
  138. const/4 v3, 0x0
  139. .local v3, "i":I
  140. :goto_0
  141. array-length v5, v2
  142. if-ge v3, v5, :cond_0
  143. .line 295
  144. aget-object v1, v2, v3
  145. .line 296
  146. .local v1, "br":Landroid/support/v4/content/LocalBroadcastManager$BroadcastRecord;
  147. const/4 v4, 0x0
  148. .local v4, "j":I
  149. :goto_1
  150. iget-object v5, v1, Landroid/support/v4/content/LocalBroadcastManager$BroadcastRecord;->receivers:Ljava/util/ArrayList;
  151. invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
  152. move-result v5
  153. if-ge v4, v5, :cond_2
  154. .line 297
  155. iget-object v5, v1, Landroid/support/v4/content/LocalBroadcastManager$BroadcastRecord;->receivers:Ljava/util/ArrayList;
  156. invoke-virtual {v5, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
  157. move-result-object v5
  158. check-cast v5, Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;
  159. iget-object v5, v5, Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;->receiver:Landroid/content/BroadcastReceiver;
  160. iget-object v6, p0, Landroid/support/v4/content/LocalBroadcastManager;->mAppContext:Landroid/content/Context;
  161. iget-object v7, v1, Landroid/support/v4/content/LocalBroadcastManager$BroadcastRecord;->intent:Landroid/content/Intent;
  162. invoke-virtual {v5, v6, v7}, Landroid/content/BroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
  163. .line 296
  164. add-int/lit8 v4, v4, 0x1
  165. goto :goto_1
  166. .line 293
  167. .end local v0 # "N":I
  168. .end local v1 # "br":Landroid/support/v4/content/LocalBroadcastManager$BroadcastRecord;
  169. .end local v3 # "i":I
  170. .end local v4 # "j":I
  171. :catchall_0
  172. move-exception v5
  173. :try_start_1
  174. monitor-exit v6
  175. :try_end_1
  176. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  177. throw v5
  178. .line 294
  179. .restart local v0 # "N":I
  180. .restart local v1 # "br":Landroid/support/v4/content/LocalBroadcastManager$BroadcastRecord;
  181. .restart local v3 # "i":I
  182. .restart local v4 # "j":I
  183. :cond_2
  184. add-int/lit8 v3, v3, 0x1
  185. goto :goto_0
  186. .end method
  187. .method public static getInstance(Landroid/content/Context;)Landroid/support/v4/content/LocalBroadcastManager;
  188. .locals 3
  189. .param p0, "context" # Landroid/content/Context;
  190. .prologue
  191. .line 100
  192. sget-object v1, Landroid/support/v4/content/LocalBroadcastManager;->mLock:Ljava/lang/Object;
  193. monitor-enter v1
  194. .line 101
  195. :try_start_0
  196. sget-object v0, Landroid/support/v4/content/LocalBroadcastManager;->mInstance:Landroid/support/v4/content/LocalBroadcastManager;
  197. if-nez v0, :cond_0
  198. .line 102
  199. new-instance v0, Landroid/support/v4/content/LocalBroadcastManager;
  200. invoke-virtual {p0}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;
  201. move-result-object v2
  202. invoke-direct {v0, v2}, Landroid/support/v4/content/LocalBroadcastManager;-><init>(Landroid/content/Context;)V
  203. sput-object v0, Landroid/support/v4/content/LocalBroadcastManager;->mInstance:Landroid/support/v4/content/LocalBroadcastManager;
  204. .line 104
  205. :cond_0
  206. sget-object v0, Landroid/support/v4/content/LocalBroadcastManager;->mInstance:Landroid/support/v4/content/LocalBroadcastManager;
  207. monitor-exit v1
  208. return-object v0
  209. .line 105
  210. :catchall_0
  211. move-exception v0
  212. monitor-exit v1
  213. :try_end_0
  214. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  215. throw v0
  216. .end method
  217. # virtual methods
  218. .method public registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)V
  219. .locals 7
  220. .param p1, "receiver" # Landroid/content/BroadcastReceiver;
  221. .param p2, "filter" # Landroid/content/IntentFilter;
  222. .prologue
  223. .line 134
  224. iget-object v6, p0, Landroid/support/v4/content/LocalBroadcastManager;->mReceivers:Ljava/util/HashMap;
  225. monitor-enter v6
  226. .line 135
  227. :try_start_0
  228. new-instance v2, Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;
  229. invoke-direct {v2, p2, p1}, Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;-><init>(Landroid/content/IntentFilter;Landroid/content/BroadcastReceiver;)V
  230. .line 136
  231. .local v2, "entry":Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;
  232. iget-object v5, p0, Landroid/support/v4/content/LocalBroadcastManager;->mReceivers:Ljava/util/HashMap;
  233. invoke-virtual {v5, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  234. move-result-object v3
  235. check-cast v3, Ljava/util/ArrayList;
  236. .line 137
  237. .local v3, "filters":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/content/IntentFilter;>;"
  238. if-nez v3, :cond_0
  239. .line 138
  240. new-instance v3, Ljava/util/ArrayList;
  241. .end local v3 # "filters":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/content/IntentFilter;>;"
  242. const/4 v5, 0x1
  243. invoke-direct {v3, v5}, Ljava/util/ArrayList;-><init>(I)V
  244. .line 139
  245. .restart local v3 # "filters":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/content/IntentFilter;>;"
  246. iget-object v5, p0, Landroid/support/v4/content/LocalBroadcastManager;->mReceivers:Ljava/util/HashMap;
  247. invoke-virtual {v5, p1, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  248. .line 141
  249. :cond_0
  250. invoke-virtual {v3, p2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
  251. .line 142
  252. const/4 v4, 0x0
  253. .local v4, "i":I
  254. :goto_0
  255. invoke-virtual {p2}, Landroid/content/IntentFilter;->countActions()I
  256. move-result v5
  257. if-ge v4, v5, :cond_2
  258. .line 143
  259. invoke-virtual {p2, v4}, Landroid/content/IntentFilter;->getAction(I)Ljava/lang/String;
  260. move-result-object v0
  261. .line 144
  262. .local v0, "action":Ljava/lang/String;
  263. iget-object v5, p0, Landroid/support/v4/content/LocalBroadcastManager;->mActions:Ljava/util/HashMap;
  264. invoke-virtual {v5, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  265. move-result-object v1
  266. check-cast v1, Ljava/util/ArrayList;
  267. .line 145
  268. .local v1, "entries":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  269. if-nez v1, :cond_1
  270. .line 146
  271. new-instance v1, Ljava/util/ArrayList;
  272. .end local v1 # "entries":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  273. const/4 v5, 0x1
  274. invoke-direct {v1, v5}, Ljava/util/ArrayList;-><init>(I)V
  275. .line 147
  276. .restart local v1 # "entries":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  277. iget-object v5, p0, Landroid/support/v4/content/LocalBroadcastManager;->mActions:Ljava/util/HashMap;
  278. invoke-virtual {v5, v0, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  279. .line 149
  280. :cond_1
  281. invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
  282. .line 142
  283. add-int/lit8 v4, v4, 0x1
  284. goto :goto_0
  285. .line 151
  286. .end local v0 # "action":Ljava/lang/String;
  287. .end local v1 # "entries":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  288. :cond_2
  289. monitor-exit v6
  290. .line 152
  291. return-void
  292. .line 151
  293. .end local v2 # "entry":Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;
  294. .end local v3 # "filters":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/content/IntentFilter;>;"
  295. .end local v4 # "i":I
  296. :catchall_0
  297. move-exception v5
  298. monitor-exit v6
  299. :try_end_0
  300. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  301. throw v5
  302. .end method
  303. .method public sendBroadcast(Landroid/content/Intent;)Z
  304. .locals 17
  305. .param p1, "intent" # Landroid/content/Intent;
  306. .prologue
  307. .line 201
  308. move-object/from16 v0, p0
  309. iget-object v15, v0, Landroid/support/v4/content/LocalBroadcastManager;->mReceivers:Ljava/util/HashMap;
  310. monitor-enter v15
  311. .line 202
  312. :try_start_0
  313. invoke-virtual/range {p1 .. p1}, Landroid/content/Intent;->getAction()Ljava/lang/String;
  314. move-result-object v2
  315. .line 203
  316. .local v2, "action":Ljava/lang/String;
  317. move-object/from16 v0, p0
  318. iget-object v1, v0, Landroid/support/v4/content/LocalBroadcastManager;->mAppContext:Landroid/content/Context;
  319. invoke-virtual {v1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
  320. move-result-object v1
  321. move-object/from16 v0, p1
  322. invoke-virtual {v0, v1}, Landroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String;
  323. move-result-object v3
  324. .line 205
  325. .local v3, "type":Ljava/lang/String;
  326. invoke-virtual/range {p1 .. p1}, Landroid/content/Intent;->getData()Landroid/net/Uri;
  327. move-result-object v5
  328. .line 206
  329. .local v5, "data":Landroid/net/Uri;
  330. invoke-virtual/range {p1 .. p1}, Landroid/content/Intent;->getScheme()Ljava/lang/String;
  331. move-result-object v4
  332. .line 207
  333. .local v4, "scheme":Ljava/lang/String;
  334. invoke-virtual/range {p1 .. p1}, Landroid/content/Intent;->getCategories()Ljava/util/Set;
  335. move-result-object v6
  336. .line 209
  337. .local v6, "categories":Ljava/util/Set;, "Ljava/util/Set<Ljava/lang/String;>;"
  338. invoke-virtual/range {p1 .. p1}, Landroid/content/Intent;->getFlags()I
  339. move-result v1
  340. and-int/lit8 v1, v1, 0x8
  341. if-eqz v1, :cond_4
  342. const/4 v8, 0x1
  343. .line 211
  344. .local v8, "debug":Z
  345. :goto_0
  346. if-eqz v8, :cond_0
  347. const-string v1, "LocalBroadcastManager"
  348. new-instance v7, Ljava/lang/StringBuilder;
  349. invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
  350. const-string v16, "Resolving type "
  351. move-object/from16 v0, v16
  352. invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  353. move-result-object v7
  354. invoke-virtual {v7, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  355. move-result-object v7
  356. const-string v16, " scheme "
  357. move-object/from16 v0, v16
  358. invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  359. move-result-object v7
  360. invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  361. move-result-object v7
  362. const-string v16, " of intent "
  363. move-object/from16 v0, v16
  364. invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  365. move-result-object v7
  366. move-object/from16 v0, p1
  367. invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  368. move-result-object v7
  369. invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  370. move-result-object v7
  371. invoke-static {v1, v7}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
  372. .line 215
  373. :cond_0
  374. move-object/from16 v0, p0
  375. iget-object v1, v0, Landroid/support/v4/content/LocalBroadcastManager;->mActions:Ljava/util/HashMap;
  376. invoke-virtual/range {p1 .. p1}, Landroid/content/Intent;->getAction()Ljava/lang/String;
  377. move-result-object v7
  378. invoke-virtual {v1, v7}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  379. move-result-object v9
  380. check-cast v9, Ljava/util/ArrayList;
  381. .line 216
  382. .local v9, "entries":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  383. if-eqz v9, :cond_c
  384. .line 217
  385. if-eqz v8, :cond_1
  386. const-string v1, "LocalBroadcastManager"
  387. new-instance v7, Ljava/lang/StringBuilder;
  388. invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
  389. const-string v16, "Action list: "
  390. move-object/from16 v0, v16
  391. invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  392. move-result-object v7
  393. invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  394. move-result-object v7
  395. invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  396. move-result-object v7
  397. invoke-static {v1, v7}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
  398. .line 219
  399. :cond_1
  400. const/4 v14, 0x0
  401. .line 220
  402. .local v14, "receivers":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  403. const/4 v10, 0x0
  404. .local v10, "i":I
  405. :goto_1
  406. invoke-virtual {v9}, Ljava/util/ArrayList;->size()I
  407. move-result v1
  408. if-ge v10, v1, :cond_9
  409. .line 221
  410. invoke-virtual {v9, v10}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
  411. move-result-object v13
  412. check-cast v13, Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;
  413. .line 222
  414. .local v13, "receiver":Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;
  415. if-eqz v8, :cond_2
  416. const-string v1, "LocalBroadcastManager"
  417. new-instance v7, Ljava/lang/StringBuilder;
  418. invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
  419. const-string v16, "Matching against filter "
  420. move-object/from16 v0, v16
  421. invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  422. move-result-object v7
  423. iget-object v0, v13, Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;->filter:Landroid/content/IntentFilter;
  424. move-object/from16 v16, v0
  425. move-object/from16 v0, v16
  426. invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  427. move-result-object v7
  428. invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  429. move-result-object v7
  430. invoke-static {v1, v7}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
  431. .line 224
  432. :cond_2
  433. iget-boolean v1, v13, Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;->broadcasting:Z
  434. if-eqz v1, :cond_5
  435. .line 225
  436. if-eqz v8, :cond_3
  437. .line 226
  438. const-string v1, "LocalBroadcastManager"
  439. const-string v7, " Filter\'s target already added"
  440. invoke-static {v1, v7}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
  441. .line 220
  442. :cond_3
  443. :goto_2
  444. add-int/lit8 v10, v10, 0x1
  445. goto :goto_1
  446. .line 209
  447. .end local v8 # "debug":Z
  448. .end local v9 # "entries":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  449. .end local v10 # "i":I
  450. .end local v13 # "receiver":Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;
  451. .end local v14 # "receivers":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  452. :cond_4
  453. const/4 v8, 0x0
  454. goto/16 :goto_0
  455. .line 231
  456. .restart local v8 # "debug":Z
  457. .restart local v9 # "entries":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  458. .restart local v10 # "i":I
  459. .restart local v13 # "receiver":Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;
  460. .restart local v14 # "receivers":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  461. :cond_5
  462. iget-object v1, v13, Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;->filter:Landroid/content/IntentFilter;
  463. const-string v7, "LocalBroadcastManager"
  464. invoke-virtual/range {v1 .. v7}, Landroid/content/IntentFilter;->match(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/util/Set;Ljava/lang/String;)I
  465. move-result v11
  466. .line 233
  467. .local v11, "match":I
  468. if-ltz v11, :cond_8
  469. .line 234
  470. if-eqz v8, :cond_6
  471. const-string v1, "LocalBroadcastManager"
  472. new-instance v7, Ljava/lang/StringBuilder;
  473. invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
  474. const-string v16, " Filter matched! match=0x"
  475. move-object/from16 v0, v16
  476. invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  477. move-result-object v7
  478. invoke-static {v11}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
  479. move-result-object v16
  480. move-object/from16 v0, v16
  481. invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  482. move-result-object v7
  483. invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  484. move-result-object v7
  485. invoke-static {v1, v7}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
  486. .line 236
  487. :cond_6
  488. if-nez v14, :cond_7
  489. .line 237
  490. new-instance v14, Ljava/util/ArrayList;
  491. .end local v14 # "receivers":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  492. invoke-direct {v14}, Ljava/util/ArrayList;-><init>()V
  493. .line 239
  494. .restart local v14 # "receivers":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  495. :cond_7
  496. invoke-virtual {v14, v13}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
  497. .line 240
  498. const/4 v1, 0x1
  499. iput-boolean v1, v13, Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;->broadcasting:Z
  500. goto :goto_2
  501. .line 267
  502. .end local v2 # "action":Ljava/lang/String;
  503. .end local v3 # "type":Ljava/lang/String;
  504. .end local v4 # "scheme":Ljava/lang/String;
  505. .end local v5 # "data":Landroid/net/Uri;
  506. .end local v6 # "categories":Ljava/util/Set;, "Ljava/util/Set<Ljava/lang/String;>;"
  507. .end local v8 # "debug":Z
  508. .end local v9 # "entries":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  509. .end local v10 # "i":I
  510. .end local v11 # "match":I
  511. .end local v13 # "receiver":Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;
  512. .end local v14 # "receivers":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  513. :catchall_0
  514. move-exception v1
  515. monitor-exit v15
  516. :try_end_0
  517. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  518. throw v1
  519. .line 242
  520. .restart local v2 # "action":Ljava/lang/String;
  521. .restart local v3 # "type":Ljava/lang/String;
  522. .restart local v4 # "scheme":Ljava/lang/String;
  523. .restart local v5 # "data":Landroid/net/Uri;
  524. .restart local v6 # "categories":Ljava/util/Set;, "Ljava/util/Set<Ljava/lang/String;>;"
  525. .restart local v8 # "debug":Z
  526. .restart local v9 # "entries":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  527. .restart local v10 # "i":I
  528. .restart local v11 # "match":I
  529. .restart local v13 # "receiver":Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;
  530. .restart local v14 # "receivers":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  531. :cond_8
  532. if-eqz v8, :cond_3
  533. .line 244
  534. packed-switch v11, :pswitch_data_0
  535. .line 249
  536. :try_start_1
  537. const-string v12, "unknown reason"
  538. .line 251
  539. .local v12, "reason":Ljava/lang/String;
  540. :goto_3
  541. const-string v1, "LocalBroadcastManager"
  542. new-instance v7, Ljava/lang/StringBuilder;
  543. invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
  544. const-string v16, " Filter did not match: "
  545. move-object/from16 v0, v16
  546. invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  547. move-result-object v7
  548. invoke-virtual {v7, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  549. move-result-object v7
  550. invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  551. move-result-object v7
  552. invoke-static {v1, v7}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
  553. goto :goto_2
  554. .line 245
  555. .end local v12 # "reason":Ljava/lang/String;
  556. :pswitch_0
  557. const-string v12, "action"
  558. .restart local v12 # "reason":Ljava/lang/String;
  559. goto :goto_3
  560. .line 246
  561. .end local v12 # "reason":Ljava/lang/String;
  562. :pswitch_1
  563. const-string v12, "category"
  564. .restart local v12 # "reason":Ljava/lang/String;
  565. goto :goto_3
  566. .line 247
  567. .end local v12 # "reason":Ljava/lang/String;
  568. :pswitch_2
  569. const-string v12, "data"
  570. .restart local v12 # "reason":Ljava/lang/String;
  571. goto :goto_3
  572. .line 248
  573. .end local v12 # "reason":Ljava/lang/String;
  574. :pswitch_3
  575. const-string v12, "type"
  576. .restart local v12 # "reason":Ljava/lang/String;
  577. goto :goto_3
  578. .line 256
  579. .end local v11 # "match":I
  580. .end local v12 # "reason":Ljava/lang/String;
  581. .end local v13 # "receiver":Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;
  582. :cond_9
  583. if-eqz v14, :cond_c
  584. .line 257
  585. const/4 v10, 0x0
  586. :goto_4
  587. invoke-virtual {v14}, Ljava/util/ArrayList;->size()I
  588. move-result v1
  589. if-ge v10, v1, :cond_a
  590. .line 258
  591. invoke-virtual {v14, v10}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
  592. move-result-object v1
  593. check-cast v1, Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;
  594. const/4 v7, 0x0
  595. iput-boolean v7, v1, Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;->broadcasting:Z
  596. .line 257
  597. add-int/lit8 v10, v10, 0x1
  598. goto :goto_4
  599. .line 260
  600. :cond_a
  601. move-object/from16 v0, p0
  602. iget-object v1, v0, Landroid/support/v4/content/LocalBroadcastManager;->mPendingBroadcasts:Ljava/util/ArrayList;
  603. new-instance v7, Landroid/support/v4/content/LocalBroadcastManager$BroadcastRecord;
  604. move-object/from16 v0, p1
  605. invoke-direct {v7, v0, v14}, Landroid/support/v4/content/LocalBroadcastManager$BroadcastRecord;-><init>(Landroid/content/Intent;Ljava/util/ArrayList;)V
  606. invoke-virtual {v1, v7}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
  607. .line 261
  608. move-object/from16 v0, p0
  609. iget-object v1, v0, Landroid/support/v4/content/LocalBroadcastManager;->mHandler:Landroid/os/Handler;
  610. const/4 v7, 0x1
  611. invoke-virtual {v1, v7}, Landroid/os/Handler;->hasMessages(I)Z
  612. move-result v1
  613. if-nez v1, :cond_b
  614. .line 262
  615. move-object/from16 v0, p0
  616. iget-object v1, v0, Landroid/support/v4/content/LocalBroadcastManager;->mHandler:Landroid/os/Handler;
  617. const/4 v7, 0x1
  618. invoke-virtual {v1, v7}, Landroid/os/Handler;->sendEmptyMessage(I)Z
  619. .line 264
  620. :cond_b
  621. const/4 v1, 0x1
  622. monitor-exit v15
  623. .line 268
  624. .end local v10 # "i":I
  625. .end local v14 # "receivers":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  626. :goto_5
  627. return v1
  628. .line 267
  629. :cond_c
  630. monitor-exit v15
  631. :try_end_1
  632. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  633. .line 268
  634. const/4 v1, 0x0
  635. goto :goto_5
  636. .line 244
  637. :pswitch_data_0
  638. .packed-switch -0x4
  639. :pswitch_1
  640. :pswitch_0
  641. :pswitch_2
  642. :pswitch_3
  643. .end packed-switch
  644. .end method
  645. .method public sendBroadcastSync(Landroid/content/Intent;)V
  646. .locals 1
  647. .param p1, "intent" # Landroid/content/Intent;
  648. .prologue
  649. .line 277
  650. invoke-virtual {p0, p1}, Landroid/support/v4/content/LocalBroadcastManager;->sendBroadcast(Landroid/content/Intent;)Z
  651. move-result v0
  652. if-eqz v0, :cond_0
  653. .line 278
  654. invoke-direct {p0}, Landroid/support/v4/content/LocalBroadcastManager;->executePendingBroadcasts()V
  655. .line 280
  656. :cond_0
  657. return-void
  658. .end method
  659. .method public unregisterReceiver(Landroid/content/BroadcastReceiver;)V
  660. .locals 9
  661. .param p1, "receiver" # Landroid/content/BroadcastReceiver;
  662. .prologue
  663. .line 164
  664. iget-object v8, p0, Landroid/support/v4/content/LocalBroadcastManager;->mReceivers:Ljava/util/HashMap;
  665. monitor-enter v8
  666. .line 165
  667. :try_start_0
  668. iget-object v7, p0, Landroid/support/v4/content/LocalBroadcastManager;->mReceivers:Ljava/util/HashMap;
  669. invoke-virtual {v7, p1}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
  670. move-result-object v2
  671. check-cast v2, Ljava/util/ArrayList;
  672. .line 166
  673. .local v2, "filters":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/content/IntentFilter;>;"
  674. if-nez v2, :cond_0
  675. .line 167
  676. monitor-exit v8
  677. .line 188
  678. :goto_0
  679. return-void
  680. .line 169
  681. :cond_0
  682. const/4 v3, 0x0
  683. .local v3, "i":I
  684. :goto_1
  685. invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
  686. move-result v7
  687. if-ge v3, v7, :cond_5
  688. .line 170
  689. invoke-virtual {v2, v3}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
  690. move-result-object v1
  691. check-cast v1, Landroid/content/IntentFilter;
  692. .line 171
  693. .local v1, "filter":Landroid/content/IntentFilter;
  694. const/4 v4, 0x0
  695. .local v4, "j":I
  696. :goto_2
  697. invoke-virtual {v1}, Landroid/content/IntentFilter;->countActions()I
  698. move-result v7
  699. if-ge v4, v7, :cond_4
  700. .line 172
  701. invoke-virtual {v1, v4}, Landroid/content/IntentFilter;->getAction(I)Ljava/lang/String;
  702. move-result-object v0
  703. .line 173
  704. .local v0, "action":Ljava/lang/String;
  705. iget-object v7, p0, Landroid/support/v4/content/LocalBroadcastManager;->mActions:Ljava/util/HashMap;
  706. invoke-virtual {v7, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  707. move-result-object v6
  708. check-cast v6, Ljava/util/ArrayList;
  709. .line 174
  710. .local v6, "receivers":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  711. if-eqz v6, :cond_3
  712. .line 175
  713. const/4 v5, 0x0
  714. .local v5, "k":I
  715. :goto_3
  716. invoke-virtual {v6}, Ljava/util/ArrayList;->size()I
  717. move-result v7
  718. if-ge v5, v7, :cond_2
  719. .line 176
  720. invoke-virtual {v6, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
  721. move-result-object v7
  722. check-cast v7, Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;
  723. iget-object v7, v7, Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;->receiver:Landroid/content/BroadcastReceiver;
  724. if-ne v7, p1, :cond_1
  725. .line 177
  726. invoke-virtual {v6, v5}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
  727. .line 178
  728. add-int/lit8 v5, v5, -0x1
  729. .line 175
  730. :cond_1
  731. add-int/lit8 v5, v5, 0x1
  732. goto :goto_3
  733. .line 181
  734. :cond_2
  735. invoke-virtual {v6}, Ljava/util/ArrayList;->size()I
  736. move-result v7
  737. if-gtz v7, :cond_3
  738. .line 182
  739. iget-object v7, p0, Landroid/support/v4/content/LocalBroadcastManager;->mActions:Ljava/util/HashMap;
  740. invoke-virtual {v7, v0}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
  741. .line 171
  742. .end local v5 # "k":I
  743. :cond_3
  744. add-int/lit8 v4, v4, 0x1
  745. goto :goto_2
  746. .line 169
  747. .end local v0 # "action":Ljava/lang/String;
  748. .end local v6 # "receivers":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/support/v4/content/LocalBroadcastManager$ReceiverRecord;>;"
  749. :cond_4
  750. add-int/lit8 v3, v3, 0x1
  751. goto :goto_1
  752. .line 187
  753. .end local v1 # "filter":Landroid/content/IntentFilter;
  754. .end local v4 # "j":I
  755. :cond_5
  756. monitor-exit v8
  757. goto :goto_0
  758. .end local v2 # "filters":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Landroid/content/IntentFilter;>;"
  759. .end local v3 # "i":I
  760. :catchall_0
  761. move-exception v7
  762. monitor-exit v8
  763. :try_end_0
  764. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  765. throw v7
  766. .end method