LayoutInflaterCompatHC.smali 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. .class Landroid/support/v4/view/LayoutInflaterCompatHC;
  2. .super Ljava/lang/Object;
  3. .source "LayoutInflaterCompatHC.java"
  4. # annotations
  5. .annotation system Ldalvik/annotation/MemberClasses;
  6. value = {
  7. Landroid/support/v4/view/LayoutInflaterCompatHC$FactoryWrapperHC;
  8. }
  9. .end annotation
  10. # static fields
  11. .field private static final TAG:Ljava/lang/String; = "LayoutInflaterCompatHC"
  12. .field private static sCheckedField:Z
  13. .field private static sLayoutInflaterFactory2Field:Ljava/lang/reflect/Field;
  14. # direct methods
  15. .method constructor <init>()V
  16. .locals 0
  17. .prologue
  18. .line 28
  19. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  20. .line 34
  21. return-void
  22. .end method
  23. .method static forceSetFactory2(Landroid/view/LayoutInflater;Landroid/view/LayoutInflater$Factory2;)V
  24. .locals 5
  25. .param p0, "inflater" # Landroid/view/LayoutInflater;
  26. .param p1, "factory" # Landroid/view/LayoutInflater$Factory2;
  27. .prologue
  28. const/4 v4, 0x1
  29. .line 71
  30. sget-boolean v1, Landroid/support/v4/view/LayoutInflaterCompatHC;->sCheckedField:Z
  31. if-nez v1, :cond_0
  32. .line 73
  33. :try_start_0
  34. const-class v1, Landroid/view/LayoutInflater;
  35. const-string v2, "mFactory2"
  36. invoke-virtual {v1, v2}, Ljava/lang/Class;->getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field;
  37. move-result-object v1
  38. sput-object v1, Landroid/support/v4/view/LayoutInflaterCompatHC;->sLayoutInflaterFactory2Field:Ljava/lang/reflect/Field;
  39. .line 74
  40. sget-object v1, Landroid/support/v4/view/LayoutInflaterCompatHC;->sLayoutInflaterFactory2Field:Ljava/lang/reflect/Field;
  41. const/4 v2, 0x1
  42. invoke-virtual {v1, v2}, Ljava/lang/reflect/Field;->setAccessible(Z)V
  43. :try_end_0
  44. .catch Ljava/lang/NoSuchFieldException; {:try_start_0 .. :try_end_0} :catch_0
  45. .line 80
  46. :goto_0
  47. sput-boolean v4, Landroid/support/v4/view/LayoutInflaterCompatHC;->sCheckedField:Z
  48. .line 82
  49. :cond_0
  50. sget-object v1, Landroid/support/v4/view/LayoutInflaterCompatHC;->sLayoutInflaterFactory2Field:Ljava/lang/reflect/Field;
  51. if-eqz v1, :cond_1
  52. .line 84
  53. :try_start_1
  54. sget-object v1, Landroid/support/v4/view/LayoutInflaterCompatHC;->sLayoutInflaterFactory2Field:Ljava/lang/reflect/Field;
  55. invoke-virtual {v1, p0, p1}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V
  56. :try_end_1
  57. .catch Ljava/lang/IllegalAccessException; {:try_start_1 .. :try_end_1} :catch_1
  58. .line 90
  59. :cond_1
  60. :goto_1
  61. return-void
  62. .line 75
  63. :catch_0
  64. move-exception v0
  65. .line 76
  66. .local v0, "e":Ljava/lang/NoSuchFieldException;
  67. const-string v1, "LayoutInflaterCompatHC"
  68. new-instance v2, Ljava/lang/StringBuilder;
  69. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  70. const-string v3, "forceSetFactory2 Could not find field \'mFactory2\' on class "
  71. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  72. move-result-object v2
  73. const-class v3, Landroid/view/LayoutInflater;
  74. invoke-virtual {v3}, Ljava/lang/Class;->getName()Ljava/lang/String;
  75. move-result-object v3
  76. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  77. move-result-object v2
  78. const-string v3, "; inflation may have unexpected results."
  79. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  80. move-result-object v2
  81. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  82. move-result-object v2
  83. invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
  84. goto :goto_0
  85. .line 85
  86. .end local v0 # "e":Ljava/lang/NoSuchFieldException;
  87. :catch_1
  88. move-exception v0
  89. .line 86
  90. .local v0, "e":Ljava/lang/IllegalAccessException;
  91. const-string v1, "LayoutInflaterCompatHC"
  92. new-instance v2, Ljava/lang/StringBuilder;
  93. invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
  94. const-string v3, "forceSetFactory2 could not set the Factory2 on LayoutInflater "
  95. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  96. move-result-object v2
  97. invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  98. move-result-object v2
  99. const-string v3, "; inflation may have unexpected results."
  100. invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  101. move-result-object v2
  102. invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  103. move-result-object v2
  104. invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
  105. goto :goto_1
  106. .end method
  107. .method static setFactory(Landroid/view/LayoutInflater;Landroid/support/v4/view/LayoutInflaterFactory;)V
  108. .locals 3
  109. .param p0, "inflater" # Landroid/view/LayoutInflater;
  110. .param p1, "factory" # Landroid/support/v4/view/LayoutInflaterFactory;
  111. .prologue
  112. .line 49
  113. if-eqz p1, :cond_0
  114. new-instance v1, Landroid/support/v4/view/LayoutInflaterCompatHC$FactoryWrapperHC;
  115. invoke-direct {v1, p1}, Landroid/support/v4/view/LayoutInflaterCompatHC$FactoryWrapperHC;-><init>(Landroid/support/v4/view/LayoutInflaterFactory;)V
  116. .line 51
  117. .local v1, "factory2":Landroid/view/LayoutInflater$Factory2;
  118. :goto_0
  119. invoke-virtual {p0, v1}, Landroid/view/LayoutInflater;->setFactory2(Landroid/view/LayoutInflater$Factory2;)V
  120. .line 53
  121. invoke-virtual {p0}, Landroid/view/LayoutInflater;->getFactory()Landroid/view/LayoutInflater$Factory;
  122. move-result-object v0
  123. .line 54
  124. .local v0, "f":Landroid/view/LayoutInflater$Factory;
  125. instance-of v2, v0, Landroid/view/LayoutInflater$Factory2;
  126. if-eqz v2, :cond_1
  127. .line 57
  128. check-cast v0, Landroid/view/LayoutInflater$Factory2;
  129. .end local v0 # "f":Landroid/view/LayoutInflater$Factory;
  130. invoke-static {p0, v0}, Landroid/support/v4/view/LayoutInflaterCompatHC;->forceSetFactory2(Landroid/view/LayoutInflater;Landroid/view/LayoutInflater$Factory2;)V
  131. .line 62
  132. :goto_1
  133. return-void
  134. .line 49
  135. .end local v1 # "factory2":Landroid/view/LayoutInflater$Factory2;
  136. :cond_0
  137. const/4 v1, 0x0
  138. goto :goto_0
  139. .line 60
  140. .restart local v0 # "f":Landroid/view/LayoutInflater$Factory;
  141. .restart local v1 # "factory2":Landroid/view/LayoutInflater$Factory2;
  142. :cond_1
  143. invoke-static {p0, v1}, Landroid/support/v4/view/LayoutInflaterCompatHC;->forceSetFactory2(Landroid/view/LayoutInflater;Landroid/view/LayoutInflater$Factory2;)V
  144. goto :goto_1
  145. .end method