NotificationManagerCompat$SideChannelManager.smali 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364
  1. .class Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;
  2. .super Ljava/lang/Object;
  3. .source "NotificationManagerCompat.java"
  4. # interfaces
  5. .implements Landroid/os/Handler$Callback;
  6. .implements Landroid/content/ServiceConnection;
  7. # annotations
  8. .annotation system Ldalvik/annotation/EnclosingClass;
  9. value = Landroid/support/v4/app/NotificationManagerCompat;
  10. .end annotation
  11. .annotation system Ldalvik/annotation/InnerClass;
  12. accessFlags = 0xa
  13. name = "SideChannelManager"
  14. .end annotation
  15. .annotation system Ldalvik/annotation/MemberClasses;
  16. value = {
  17. Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  18. }
  19. .end annotation
  20. # static fields
  21. .field private static final KEY_BINDER:Ljava/lang/String; = "binder"
  22. .field private static final MSG_QUEUE_TASK:I = 0x0
  23. .field private static final MSG_RETRY_LISTENER_QUEUE:I = 0x3
  24. .field private static final MSG_SERVICE_CONNECTED:I = 0x1
  25. .field private static final MSG_SERVICE_DISCONNECTED:I = 0x2
  26. # instance fields
  27. .field private mCachedEnabledPackages:Ljava/util/Set;
  28. .annotation system Ldalvik/annotation/Signature;
  29. value = {
  30. "Ljava/util/Set",
  31. "<",
  32. "Ljava/lang/String;",
  33. ">;"
  34. }
  35. .end annotation
  36. .end field
  37. .field private final mContext:Landroid/content/Context;
  38. .field private final mHandler:Landroid/os/Handler;
  39. .field private final mHandlerThread:Landroid/os/HandlerThread;
  40. .field private final mRecordMap:Ljava/util/Map;
  41. .annotation system Ldalvik/annotation/Signature;
  42. value = {
  43. "Ljava/util/Map",
  44. "<",
  45. "Landroid/content/ComponentName;",
  46. "Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;",
  47. ">;"
  48. }
  49. .end annotation
  50. .end field
  51. # direct methods
  52. .method public constructor <init>(Landroid/content/Context;)V
  53. .locals 2
  54. .param p1, "context" # Landroid/content/Context;
  55. .prologue
  56. .line 294
  57. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  58. .line 290
  59. new-instance v0, Ljava/util/HashMap;
  60. invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
  61. iput-object v0, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mRecordMap:Ljava/util/Map;
  62. .line 292
  63. new-instance v0, Ljava/util/HashSet;
  64. invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
  65. iput-object v0, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mCachedEnabledPackages:Ljava/util/Set;
  66. .line 295
  67. iput-object p1, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mContext:Landroid/content/Context;
  68. .line 296
  69. new-instance v0, Landroid/os/HandlerThread;
  70. const-string v1, "NotificationManagerCompat"
  71. invoke-direct {v0, v1}, Landroid/os/HandlerThread;-><init>(Ljava/lang/String;)V
  72. iput-object v0, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mHandlerThread:Landroid/os/HandlerThread;
  73. .line 297
  74. iget-object v0, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mHandlerThread:Landroid/os/HandlerThread;
  75. invoke-virtual {v0}, Landroid/os/HandlerThread;->start()V
  76. .line 298
  77. new-instance v0, Landroid/os/Handler;
  78. iget-object v1, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mHandlerThread:Landroid/os/HandlerThread;
  79. invoke-virtual {v1}, Landroid/os/HandlerThread;->getLooper()Landroid/os/Looper;
  80. move-result-object v1
  81. invoke-direct {v0, v1, p0}, Landroid/os/Handler;-><init>(Landroid/os/Looper;Landroid/os/Handler$Callback;)V
  82. iput-object v0, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mHandler:Landroid/os/Handler;
  83. .line 299
  84. return-void
  85. .end method
  86. .method private ensureServiceBound(Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;)Z
  87. .locals 4
  88. .param p1, "record" # Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  89. .prologue
  90. .line 434
  91. iget-boolean v1, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->bound:Z
  92. if-eqz v1, :cond_0
  93. .line 435
  94. const/4 v1, 0x1
  95. .line 445
  96. :goto_0
  97. return v1
  98. .line 437
  99. :cond_0
  100. new-instance v1, Landroid/content/Intent;
  101. const-string v2, "android.support.BIND_NOTIFICATION_SIDE_CHANNEL"
  102. invoke-direct {v1, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
  103. iget-object v2, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->componentName:Landroid/content/ComponentName;
  104. invoke-virtual {v1, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
  105. move-result-object v0
  106. .line 438
  107. .local v0, "intent":Landroid/content/Intent;
  108. iget-object v1, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mContext:Landroid/content/Context;
  109. invoke-static {}, Landroid/support/v4/app/NotificationManagerCompat;->access$000()I
  110. move-result v2
  111. invoke-virtual {v1, v0, p0, v2}, Landroid/content/Context;->bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z
  112. move-result v1
  113. iput-boolean v1, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->bound:Z
  114. .line 439
  115. iget-boolean v1, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->bound:Z
  116. if-eqz v1, :cond_1
  117. .line 440
  118. const/4 v1, 0x0
  119. iput v1, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->retryCount:I
  120. .line 445
  121. :goto_1
  122. iget-boolean v1, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->bound:Z
  123. goto :goto_0
  124. .line 442
  125. :cond_1
  126. const-string v1, "NotifManCompat"
  127. new-instance v2, Ljava/lang/StringBuilder;
  128. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  129. const-string v3, "Unable to bind to listener "
  130. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  131. move-result-object v2
  132. iget-object v3, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->componentName:Landroid/content/ComponentName;
  133. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  134. move-result-object v2
  135. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  136. move-result-object v2
  137. invoke-static {v1, v2}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
  138. .line 443
  139. iget-object v1, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mContext:Landroid/content/Context;
  140. invoke-virtual {v1, p0}, Landroid/content/Context;->unbindService(Landroid/content/ServiceConnection;)V
  141. goto :goto_1
  142. .end method
  143. .method private ensureServiceUnbound(Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;)V
  144. .locals 1
  145. .param p1, "record" # Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  146. .prologue
  147. .line 452
  148. iget-boolean v0, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->bound:Z
  149. if-eqz v0, :cond_0
  150. .line 453
  151. iget-object v0, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mContext:Landroid/content/Context;
  152. invoke-virtual {v0, p0}, Landroid/content/Context;->unbindService(Landroid/content/ServiceConnection;)V
  153. .line 454
  154. const/4 v0, 0x0
  155. iput-boolean v0, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->bound:Z
  156. .line 456
  157. :cond_0
  158. const/4 v0, 0x0
  159. iput-object v0, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->service:Landroid/support/v4/app/INotificationSideChannel;
  160. .line 457
  161. return-void
  162. .end method
  163. .method private handleQueueTask(Landroid/support/v4/app/NotificationManagerCompat$Task;)V
  164. .locals 3
  165. .param p1, "task" # Landroid/support/v4/app/NotificationManagerCompat$Task;
  166. .prologue
  167. .line 330
  168. invoke-direct {p0}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->updateListenerMap()V
  169. .line 331
  170. iget-object v2, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mRecordMap:Ljava/util/Map;
  171. invoke-interface {v2}, Ljava/util/Map;->values()Ljava/util/Collection;
  172. move-result-object v2
  173. invoke-interface {v2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
  174. move-result-object v0
  175. .local v0, "i$":Ljava/util/Iterator;
  176. :goto_0
  177. invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
  178. move-result v2
  179. if-eqz v2, :cond_0
  180. invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  181. move-result-object v1
  182. check-cast v1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  183. .line 332
  184. .local v1, "record":Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  185. iget-object v2, v1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->taskQueue:Ljava/util/LinkedList;
  186. invoke-virtual {v2, p1}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
  187. .line 333
  188. invoke-direct {p0, v1}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->processListenerQueue(Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;)V
  189. goto :goto_0
  190. .line 335
  191. .end local v1 # "record":Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  192. :cond_0
  193. return-void
  194. .end method
  195. .method private handleRetryListenerQueue(Landroid/content/ComponentName;)V
  196. .locals 2
  197. .param p1, "componentName" # Landroid/content/ComponentName;
  198. .prologue
  199. .line 354
  200. iget-object v1, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mRecordMap:Ljava/util/Map;
  201. invoke-interface {v1, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
  202. move-result-object v0
  203. check-cast v0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  204. .line 355
  205. .local v0, "record":Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  206. if-eqz v0, :cond_0
  207. .line 356
  208. invoke-direct {p0, v0}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->processListenerQueue(Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;)V
  209. .line 358
  210. :cond_0
  211. return-void
  212. .end method
  213. .method private handleServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
  214. .locals 2
  215. .param p1, "componentName" # Landroid/content/ComponentName;
  216. .param p2, "iBinder" # Landroid/os/IBinder;
  217. .prologue
  218. .line 338
  219. iget-object v1, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mRecordMap:Ljava/util/Map;
  220. invoke-interface {v1, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
  221. move-result-object v0
  222. check-cast v0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  223. .line 339
  224. .local v0, "record":Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  225. if-eqz v0, :cond_0
  226. .line 340
  227. invoke-static {p2}, Landroid/support/v4/app/INotificationSideChannel$Stub;->asInterface(Landroid/os/IBinder;)Landroid/support/v4/app/INotificationSideChannel;
  228. move-result-object v1
  229. iput-object v1, v0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->service:Landroid/support/v4/app/INotificationSideChannel;
  230. .line 341
  231. const/4 v1, 0x0
  232. iput v1, v0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->retryCount:I
  233. .line 342
  234. invoke-direct {p0, v0}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->processListenerQueue(Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;)V
  235. .line 344
  236. :cond_0
  237. return-void
  238. .end method
  239. .method private handleServiceDisconnected(Landroid/content/ComponentName;)V
  240. .locals 2
  241. .param p1, "componentName" # Landroid/content/ComponentName;
  242. .prologue
  243. .line 347
  244. iget-object v1, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mRecordMap:Ljava/util/Map;
  245. invoke-interface {v1, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
  246. move-result-object v0
  247. check-cast v0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  248. .line 348
  249. .local v0, "record":Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  250. if-eqz v0, :cond_0
  251. .line 349
  252. invoke-direct {p0, v0}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->ensureServiceUnbound(Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;)V
  253. .line 351
  254. :cond_0
  255. return-void
  256. .end method
  257. .method private processListenerQueue(Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;)V
  258. .locals 6
  259. .param p1, "record" # Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  260. .prologue
  261. const/4 v5, 0x3
  262. .line 488
  263. const-string v2, "NotifManCompat"
  264. invoke-static {v2, v5}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z
  265. move-result v2
  266. if-eqz v2, :cond_0
  267. .line 489
  268. const-string v2, "NotifManCompat"
  269. new-instance v3, Ljava/lang/StringBuilder;
  270. invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
  271. const-string v4, "Processing component "
  272. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  273. move-result-object v3
  274. iget-object v4, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->componentName:Landroid/content/ComponentName;
  275. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  276. move-result-object v3
  277. const-string v4, ", "
  278. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  279. move-result-object v3
  280. iget-object v4, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->taskQueue:Ljava/util/LinkedList;
  281. invoke-virtual {v4}, Ljava/util/LinkedList;->size()I
  282. move-result v4
  283. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  284. move-result-object v3
  285. const-string v4, " queued tasks"
  286. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  287. move-result-object v3
  288. invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  289. move-result-object v3
  290. invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
  291. .line 492
  292. :cond_0
  293. iget-object v2, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->taskQueue:Ljava/util/LinkedList;
  294. invoke-virtual {v2}, Ljava/util/LinkedList;->isEmpty()Z
  295. move-result v2
  296. if-eqz v2, :cond_2
  297. .line 526
  298. :cond_1
  299. :goto_0
  300. return-void
  301. .line 495
  302. :cond_2
  303. invoke-direct {p0, p1}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->ensureServiceBound(Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;)Z
  304. move-result v2
  305. if-eqz v2, :cond_3
  306. iget-object v2, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->service:Landroid/support/v4/app/INotificationSideChannel;
  307. if-nez v2, :cond_6
  308. .line 497
  309. :cond_3
  310. invoke-direct {p0, p1}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->scheduleListenerRetry(Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;)V
  311. goto :goto_0
  312. .line 507
  313. .local v1, "task":Landroid/support/v4/app/NotificationManagerCompat$Task;
  314. :cond_4
  315. :try_start_0
  316. const-string v2, "NotifManCompat"
  317. const/4 v3, 0x3
  318. invoke-static {v2, v3}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z
  319. move-result v2
  320. if-eqz v2, :cond_5
  321. .line 508
  322. const-string v2, "NotifManCompat"
  323. new-instance v3, Ljava/lang/StringBuilder;
  324. invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
  325. const-string v4, "Sending task "
  326. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  327. move-result-object v3
  328. invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  329. move-result-object v3
  330. invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  331. move-result-object v3
  332. invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
  333. .line 510
  334. :cond_5
  335. iget-object v2, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->service:Landroid/support/v4/app/INotificationSideChannel;
  336. invoke-interface {v1, v2}, Landroid/support/v4/app/NotificationManagerCompat$Task;->send(Landroid/support/v4/app/INotificationSideChannel;)V
  337. .line 511
  338. iget-object v2, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->taskQueue:Ljava/util/LinkedList;
  339. invoke-virtual {v2}, Ljava/util/LinkedList;->remove()Ljava/lang/Object;
  340. :try_end_0
  341. .catch Landroid/os/DeadObjectException; {:try_start_0 .. :try_end_0} :catch_0
  342. .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_0} :catch_1
  343. .line 502
  344. .end local v1 # "task":Landroid/support/v4/app/NotificationManagerCompat$Task;
  345. :cond_6
  346. iget-object v2, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->taskQueue:Ljava/util/LinkedList;
  347. invoke-virtual {v2}, Ljava/util/LinkedList;->peek()Ljava/lang/Object;
  348. move-result-object v1
  349. check-cast v1, Landroid/support/v4/app/NotificationManagerCompat$Task;
  350. .line 503
  351. .restart local v1 # "task":Landroid/support/v4/app/NotificationManagerCompat$Task;
  352. if-nez v1, :cond_4
  353. .line 522
  354. :cond_7
  355. :goto_1
  356. iget-object v2, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->taskQueue:Ljava/util/LinkedList;
  357. invoke-virtual {v2}, Ljava/util/LinkedList;->isEmpty()Z
  358. move-result v2
  359. if-nez v2, :cond_1
  360. .line 524
  361. invoke-direct {p0, p1}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->scheduleListenerRetry(Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;)V
  362. goto :goto_0
  363. .line 512
  364. :catch_0
  365. move-exception v0
  366. .line 513
  367. .local v0, "e":Landroid/os/DeadObjectException;
  368. const-string v2, "NotifManCompat"
  369. invoke-static {v2, v5}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z
  370. move-result v2
  371. if-eqz v2, :cond_7
  372. .line 514
  373. const-string v2, "NotifManCompat"
  374. new-instance v3, Ljava/lang/StringBuilder;
  375. invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
  376. const-string v4, "Remote service has died: "
  377. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  378. move-result-object v3
  379. iget-object v4, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->componentName:Landroid/content/ComponentName;
  380. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  381. move-result-object v3
  382. invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  383. move-result-object v3
  384. invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
  385. goto :goto_1
  386. .line 517
  387. .end local v0 # "e":Landroid/os/DeadObjectException;
  388. :catch_1
  389. move-exception v0
  390. .line 518
  391. .local v0, "e":Landroid/os/RemoteException;
  392. const-string v2, "NotifManCompat"
  393. new-instance v3, Ljava/lang/StringBuilder;
  394. invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
  395. const-string v4, "RemoteException communicating with "
  396. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  397. move-result-object v3
  398. iget-object v4, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->componentName:Landroid/content/ComponentName;
  399. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  400. move-result-object v3
  401. invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  402. move-result-object v3
  403. invoke-static {v2, v3, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
  404. goto :goto_1
  405. .end method
  406. .method private scheduleListenerRetry(Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;)V
  407. .locals 6
  408. .param p1, "record" # Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  409. .prologue
  410. const/4 v5, 0x3
  411. .line 465
  412. iget-object v2, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mHandler:Landroid/os/Handler;
  413. iget-object v3, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->componentName:Landroid/content/ComponentName;
  414. invoke-virtual {v2, v5, v3}, Landroid/os/Handler;->hasMessages(ILjava/lang/Object;)Z
  415. move-result v2
  416. if-eqz v2, :cond_0
  417. .line 481
  418. :goto_0
  419. return-void
  420. .line 468
  421. :cond_0
  422. iget v2, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->retryCount:I
  423. add-int/lit8 v2, v2, 0x1
  424. iput v2, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->retryCount:I
  425. .line 469
  426. iget v2, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->retryCount:I
  427. const/4 v3, 0x6
  428. if-le v2, v3, :cond_1
  429. .line 470
  430. const-string v2, "NotifManCompat"
  431. new-instance v3, Ljava/lang/StringBuilder;
  432. invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
  433. const-string v4, "Giving up on delivering "
  434. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  435. move-result-object v3
  436. iget-object v4, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->taskQueue:Ljava/util/LinkedList;
  437. invoke-virtual {v4}, Ljava/util/LinkedList;->size()I
  438. move-result v4
  439. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  440. move-result-object v3
  441. const-string v4, " tasks to "
  442. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  443. move-result-object v3
  444. iget-object v4, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->componentName:Landroid/content/ComponentName;
  445. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  446. move-result-object v3
  447. const-string v4, " after "
  448. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  449. move-result-object v3
  450. iget v4, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->retryCount:I
  451. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  452. move-result-object v3
  453. const-string v4, " retries"
  454. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  455. move-result-object v3
  456. invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  457. move-result-object v3
  458. invoke-static {v2, v3}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
  459. .line 472
  460. iget-object v2, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->taskQueue:Ljava/util/LinkedList;
  461. invoke-virtual {v2}, Ljava/util/LinkedList;->clear()V
  462. goto :goto_0
  463. .line 475
  464. :cond_1
  465. const/4 v2, 0x1
  466. iget v3, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->retryCount:I
  467. add-int/lit8 v3, v3, -0x1
  468. shl-int/2addr v2, v3
  469. mul-int/lit16 v0, v2, 0x3e8
  470. .line 476
  471. .local v0, "delayMs":I
  472. const-string v2, "NotifManCompat"
  473. invoke-static {v2, v5}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z
  474. move-result v2
  475. if-eqz v2, :cond_2
  476. .line 477
  477. const-string v2, "NotifManCompat"
  478. new-instance v3, Ljava/lang/StringBuilder;
  479. invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
  480. const-string v4, "Scheduling retry for "
  481. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  482. move-result-object v3
  483. invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  484. move-result-object v3
  485. const-string v4, " ms"
  486. invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  487. move-result-object v3
  488. invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  489. move-result-object v3
  490. invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
  491. .line 479
  492. :cond_2
  493. iget-object v2, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mHandler:Landroid/os/Handler;
  494. iget-object v3, p1, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;->componentName:Landroid/content/ComponentName;
  495. invoke-virtual {v2, v5, v3}, Landroid/os/Handler;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
  496. move-result-object v1
  497. .line 480
  498. .local v1, "msg":Landroid/os/Message;
  499. iget-object v2, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mHandler:Landroid/os/Handler;
  500. int-to-long v3, v0
  501. invoke-virtual {v2, v1, v3, v4}, Landroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z
  502. goto/16 :goto_0
  503. .end method
  504. .method private updateListenerMap()V
  505. .locals 12
  506. .prologue
  507. const/4 v11, 0x3
  508. .line 383
  509. iget-object v8, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mContext:Landroid/content/Context;
  510. invoke-static {v8}, Landroid/support/v4/app/NotificationManagerCompat;->getEnabledListenerPackages(Landroid/content/Context;)Ljava/util/Set;
  511. move-result-object v2
  512. .line 384
  513. .local v2, "enabledPackages":Ljava/util/Set;, "Ljava/util/Set<Ljava/lang/String;>;"
  514. iget-object v8, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mCachedEnabledPackages:Ljava/util/Set;
  515. invoke-interface {v2, v8}, Ljava/util/Set;->equals(Ljava/lang/Object;)Z
  516. move-result v8
  517. if-eqz v8, :cond_1
  518. .line 427
  519. :cond_0
  520. return-void
  521. .line 388
  522. :cond_1
  523. iput-object v2, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mCachedEnabledPackages:Ljava/util/Set;
  524. .line 389
  525. iget-object v8, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mContext:Landroid/content/Context;
  526. invoke-virtual {v8}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
  527. move-result-object v8
  528. new-instance v9, Landroid/content/Intent;
  529. invoke-direct {v9}, Landroid/content/Intent;-><init>()V
  530. const-string v10, "android.support.BIND_NOTIFICATION_SIDE_CHANNEL"
  531. invoke-virtual {v9, v10}, Landroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent;
  532. move-result-object v9
  533. const/4 v10, 0x4
  534. invoke-virtual {v8, v9, v10}, Landroid/content/pm/PackageManager;->queryIntentServices(Landroid/content/Intent;I)Ljava/util/List;
  535. move-result-object v7
  536. .line 391
  537. .local v7, "resolveInfos":Ljava/util/List;, "Ljava/util/List<Landroid/content/pm/ResolveInfo;>;"
  538. new-instance v1, Ljava/util/HashSet;
  539. invoke-direct {v1}, Ljava/util/HashSet;-><init>()V
  540. .line 392
  541. .local v1, "enabledComponents":Ljava/util/Set;, "Ljava/util/Set<Landroid/content/ComponentName;>;"
  542. invoke-interface {v7}, Ljava/util/List;->iterator()Ljava/util/Iterator;
  543. move-result-object v4
  544. .local v4, "i$":Ljava/util/Iterator;
  545. :cond_2
  546. :goto_0
  547. invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
  548. move-result v8
  549. if-eqz v8, :cond_4
  550. invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  551. move-result-object v6
  552. check-cast v6, Landroid/content/pm/ResolveInfo;
  553. .line 393
  554. .local v6, "resolveInfo":Landroid/content/pm/ResolveInfo;
  555. iget-object v8, v6, Landroid/content/pm/ResolveInfo;->serviceInfo:Landroid/content/pm/ServiceInfo;
  556. iget-object v8, v8, Landroid/content/pm/ServiceInfo;->packageName:Ljava/lang/String;
  557. invoke-interface {v2, v8}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
  558. move-result v8
  559. if-eqz v8, :cond_2
  560. .line 396
  561. new-instance v0, Landroid/content/ComponentName;
  562. iget-object v8, v6, Landroid/content/pm/ResolveInfo;->serviceInfo:Landroid/content/pm/ServiceInfo;
  563. iget-object v8, v8, Landroid/content/pm/ServiceInfo;->packageName:Ljava/lang/String;
  564. iget-object v9, v6, Landroid/content/pm/ResolveInfo;->serviceInfo:Landroid/content/pm/ServiceInfo;
  565. iget-object v9, v9, Landroid/content/pm/ServiceInfo;->name:Ljava/lang/String;
  566. invoke-direct {v0, v8, v9}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
  567. .line 398
  568. .local v0, "componentName":Landroid/content/ComponentName;
  569. iget-object v8, v6, Landroid/content/pm/ResolveInfo;->serviceInfo:Landroid/content/pm/ServiceInfo;
  570. iget-object v8, v8, Landroid/content/pm/ServiceInfo;->permission:Ljava/lang/String;
  571. if-eqz v8, :cond_3
  572. .line 399
  573. const-string v8, "NotifManCompat"
  574. new-instance v9, Ljava/lang/StringBuilder;
  575. invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
  576. const-string v10, "Permission present on component "
  577. invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  578. move-result-object v9
  579. invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  580. move-result-object v9
  581. const-string v10, ", not adding listener record."
  582. invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  583. move-result-object v9
  584. invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  585. move-result-object v9
  586. invoke-static {v8, v9}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
  587. goto :goto_0
  588. .line 403
  589. :cond_3
  590. invoke-interface {v1, v0}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
  591. goto :goto_0
  592. .line 406
  593. .end local v0 # "componentName":Landroid/content/ComponentName;
  594. .end local v6 # "resolveInfo":Landroid/content/pm/ResolveInfo;
  595. :cond_4
  596. invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
  597. move-result-object v4
  598. :cond_5
  599. :goto_1
  600. invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
  601. move-result v8
  602. if-eqz v8, :cond_7
  603. invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  604. move-result-object v0
  605. check-cast v0, Landroid/content/ComponentName;
  606. .line 407
  607. .restart local v0 # "componentName":Landroid/content/ComponentName;
  608. iget-object v8, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mRecordMap:Ljava/util/Map;
  609. invoke-interface {v8, v0}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
  610. move-result v8
  611. if-nez v8, :cond_5
  612. .line 408
  613. const-string v8, "NotifManCompat"
  614. invoke-static {v8, v11}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z
  615. move-result v8
  616. if-eqz v8, :cond_6
  617. .line 409
  618. const-string v8, "NotifManCompat"
  619. new-instance v9, Ljava/lang/StringBuilder;
  620. invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
  621. const-string v10, "Adding listener record for "
  622. invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  623. move-result-object v9
  624. invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  625. move-result-object v9
  626. invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  627. move-result-object v9
  628. invoke-static {v8, v9}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
  629. .line 411
  630. :cond_6
  631. iget-object v8, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mRecordMap:Ljava/util/Map;
  632. new-instance v9, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  633. invoke-direct {v9, v0}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;-><init>(Landroid/content/ComponentName;)V
  634. invoke-interface {v8, v0, v9}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  635. goto :goto_1
  636. .line 415
  637. .end local v0 # "componentName":Landroid/content/ComponentName;
  638. :cond_7
  639. iget-object v8, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mRecordMap:Ljava/util/Map;
  640. invoke-interface {v8}, Ljava/util/Map;->entrySet()Ljava/util/Set;
  641. move-result-object v8
  642. invoke-interface {v8}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
  643. move-result-object v5
  644. .line 417
  645. .local v5, "it":Ljava/util/Iterator;, "Ljava/util/Iterator<Ljava/util/Map$Entry<Landroid/content/ComponentName;Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;>;>;"
  646. :cond_8
  647. :goto_2
  648. invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
  649. move-result v8
  650. if-eqz v8, :cond_0
  651. .line 418
  652. invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  653. move-result-object v3
  654. check-cast v3, Ljava/util/Map$Entry;
  655. .line 419
  656. .local v3, "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry<Landroid/content/ComponentName;Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;>;"
  657. invoke-interface {v3}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
  658. move-result-object v8
  659. invoke-interface {v1, v8}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
  660. move-result v8
  661. if-nez v8, :cond_8
  662. .line 420
  663. const-string v8, "NotifManCompat"
  664. invoke-static {v8, v11}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z
  665. move-result v8
  666. if-eqz v8, :cond_9
  667. .line 421
  668. const-string v8, "NotifManCompat"
  669. new-instance v9, Ljava/lang/StringBuilder;
  670. invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
  671. const-string v10, "Removing listener record for "
  672. invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  673. move-result-object v9
  674. invoke-interface {v3}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
  675. move-result-object v10
  676. invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  677. move-result-object v9
  678. invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  679. move-result-object v9
  680. invoke-static {v8, v9}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
  681. .line 423
  682. :cond_9
  683. invoke-interface {v3}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
  684. move-result-object v8
  685. check-cast v8, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;
  686. invoke-direct {p0, v8}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->ensureServiceUnbound(Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager$ListenerRecord;)V
  687. .line 424
  688. invoke-interface {v5}, Ljava/util/Iterator;->remove()V
  689. goto :goto_2
  690. .end method
  691. # virtual methods
  692. .method public handleMessage(Landroid/os/Message;)Z
  693. .locals 4
  694. .param p1, "msg" # Landroid/os/Message;
  695. .prologue
  696. const/4 v2, 0x1
  697. .line 311
  698. iget v1, p1, Landroid/os/Message;->what:I
  699. packed-switch v1, :pswitch_data_0
  700. .line 326
  701. const/4 v1, 0x0
  702. :goto_0
  703. return v1
  704. .line 313
  705. :pswitch_0
  706. iget-object v1, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
  707. check-cast v1, Landroid/support/v4/app/NotificationManagerCompat$Task;
  708. invoke-direct {p0, v1}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->handleQueueTask(Landroid/support/v4/app/NotificationManagerCompat$Task;)V
  709. move v1, v2
  710. .line 314
  711. goto :goto_0
  712. .line 316
  713. :pswitch_1
  714. iget-object v0, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
  715. check-cast v0, Landroid/support/v4/app/NotificationManagerCompat$ServiceConnectedEvent;
  716. .line 317
  717. .local v0, "event":Landroid/support/v4/app/NotificationManagerCompat$ServiceConnectedEvent;
  718. iget-object v1, v0, Landroid/support/v4/app/NotificationManagerCompat$ServiceConnectedEvent;->componentName:Landroid/content/ComponentName;
  719. iget-object v3, v0, Landroid/support/v4/app/NotificationManagerCompat$ServiceConnectedEvent;->iBinder:Landroid/os/IBinder;
  720. invoke-direct {p0, v1, v3}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->handleServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
  721. move v1, v2
  722. .line 318
  723. goto :goto_0
  724. .line 320
  725. .end local v0 # "event":Landroid/support/v4/app/NotificationManagerCompat$ServiceConnectedEvent;
  726. :pswitch_2
  727. iget-object v1, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
  728. check-cast v1, Landroid/content/ComponentName;
  729. invoke-direct {p0, v1}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->handleServiceDisconnected(Landroid/content/ComponentName;)V
  730. move v1, v2
  731. .line 321
  732. goto :goto_0
  733. .line 323
  734. :pswitch_3
  735. iget-object v1, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
  736. check-cast v1, Landroid/content/ComponentName;
  737. invoke-direct {p0, v1}, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->handleRetryListenerQueue(Landroid/content/ComponentName;)V
  738. move v1, v2
  739. .line 324
  740. goto :goto_0
  741. .line 311
  742. :pswitch_data_0
  743. .packed-switch 0x0
  744. :pswitch_0
  745. :pswitch_1
  746. :pswitch_2
  747. :pswitch_3
  748. .end packed-switch
  749. .end method
  750. .method public onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
  751. .locals 3
  752. .param p1, "componentName" # Landroid/content/ComponentName;
  753. .param p2, "iBinder" # Landroid/os/IBinder;
  754. .prologue
  755. .line 362
  756. const-string v0, "NotifManCompat"
  757. const/4 v1, 0x3
  758. invoke-static {v0, v1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z
  759. move-result v0
  760. if-eqz v0, :cond_0
  761. .line 363
  762. const-string v0, "NotifManCompat"
  763. new-instance v1, Ljava/lang/StringBuilder;
  764. invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
  765. const-string v2, "Connected to service "
  766. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  767. move-result-object v1
  768. invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  769. move-result-object v1
  770. invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  771. move-result-object v1
  772. invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
  773. .line 365
  774. :cond_0
  775. iget-object v0, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mHandler:Landroid/os/Handler;
  776. const/4 v1, 0x1
  777. new-instance v2, Landroid/support/v4/app/NotificationManagerCompat$ServiceConnectedEvent;
  778. invoke-direct {v2, p1, p2}, Landroid/support/v4/app/NotificationManagerCompat$ServiceConnectedEvent;-><init>(Landroid/content/ComponentName;Landroid/os/IBinder;)V
  779. invoke-virtual {v0, v1, v2}, Landroid/os/Handler;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
  780. move-result-object v0
  781. invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
  782. .line 368
  783. return-void
  784. .end method
  785. .method public onServiceDisconnected(Landroid/content/ComponentName;)V
  786. .locals 3
  787. .param p1, "componentName" # Landroid/content/ComponentName;
  788. .prologue
  789. .line 372
  790. const-string v0, "NotifManCompat"
  791. const/4 v1, 0x3
  792. invoke-static {v0, v1}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z
  793. move-result v0
  794. if-eqz v0, :cond_0
  795. .line 373
  796. const-string v0, "NotifManCompat"
  797. new-instance v1, Ljava/lang/StringBuilder;
  798. invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
  799. const-string v2, "Disconnected from service "
  800. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  801. move-result-object v1
  802. invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  803. move-result-object v1
  804. invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  805. move-result-object v1
  806. invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
  807. .line 375
  808. :cond_0
  809. iget-object v0, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mHandler:Landroid/os/Handler;
  810. const/4 v1, 0x2
  811. invoke-virtual {v0, v1, p1}, Landroid/os/Handler;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
  812. move-result-object v0
  813. invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
  814. .line 376
  815. return-void
  816. .end method
  817. .method public queueTask(Landroid/support/v4/app/NotificationManagerCompat$Task;)V
  818. .locals 2
  819. .param p1, "task" # Landroid/support/v4/app/NotificationManagerCompat$Task;
  820. .prologue
  821. .line 306
  822. iget-object v0, p0, Landroid/support/v4/app/NotificationManagerCompat$SideChannelManager;->mHandler:Landroid/os/Handler;
  823. const/4 v1, 0x0
  824. invoke-virtual {v0, v1, p1}, Landroid/os/Handler;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
  825. move-result-object v0
  826. invoke-virtual {v0}, Landroid/os/Message;->sendToTarget()V
  827. .line 307
  828. return-void
  829. .end method