| | | |
Offset 1, 67 lines modified | Offset 1, 68 lines modified |
| |
1 | package·com.android.textclassifier; | 1 | package·com.android.textclassifier; |
| |
2 | import·android.os.Build$VERSION; | 2 | import·com.google.android.textclassifier.AnnotatorModel$ClassificationOptions; |
3 | import·android.view.textclassifier.TextSelection$Builder; | 3 | import·android.view.textclassifier.TextSelection$Builder; |
4 | import·com.google.android.textclassifier.AnnotatorModel$SelectionOptions; | 4 | import·com.google.android.textclassifier.AnnotatorModel$SelectionOptions; |
5 | import·android.view.textclassifier.TextSelection; | 5 | import·android.view.textclassifier.TextSelection; |
6 | import·android.view.textclassifier.TextSelection$Request; | 6 | import·android.view.textclassifier.TextSelection$Request; |
7 | import·android.view.textclassifier.ConversationActions; | 7 | import·android.view.textclassifier.ConversationActions; |
8 | import·android.view.textclassifier.ConversationActions$Request; | 8 | import·android.view.textclassifier.ConversationActions$Request; |
9 | import·com.android.textclassifier.common.statsd.SelectionEventConverter; | 9 | import·com.android.textclassifier.common.statsd.SelectionEventConverter; |
10 | import·android.view.textclassifier.TextClassifierEvent; | 10 | import·android.view.textclassifier.TextClassifierEvent; |
| 11 | import·com.google.android.textclassifier.AnnotatorModel$ClassificationResult; |
11 | import·com.google.android.textclassifier.AnnotatorModel$AnnotatedSpan; | 12 | import·com.google.android.textclassifier.AnnotatorModel$AnnotatedSpan; |
12 | import·android.view.textclassifier.TextClassifier$EntityConfig; | 13 | import·android.view.textclassifier.TextClassifier$EntityConfig; |
13 | import·com.google.common.base.Function; | 14 | import·com.google.common.base.Function; |
14 | import·android.os.Bundle; | 15 | import·android.os.Bundle; |
| 16 | import·com.google.android.textclassifier.AnnotatorModel$AnnotationUsecase; |
15 | import·com.google.android.textclassifier.AnnotatorModel$AnnotationOptions; | 17 | import·com.google.android.textclassifier.AnnotatorModel$AnnotationOptions; |
| 18 | import·java.time.ZonedDateTime; |
| 19 | import·java.time.ZoneId; |
16 | import·android.view.textclassifier.TextLinks$Builder; | 20 | import·android.view.textclassifier.TextLinks$Builder; |
| 21 | import·com.google.common.base.Ascii; |
17 | import·android.view.textclassifier.TextLinks; | 22 | import·android.view.textclassifier.TextLinks; |
18 | import·android.view.textclassifier.TextLinks$Request; | 23 | import·android.view.textclassifier.TextLinks$Request; |
19 | import·android.view.textclassifier.TextClassificationContext; | 24 | import·android.view.textclassifier.TextClassificationContext; |
20 | import·android.view.textclassifier.TextClassificationSessionId; | 25 | import·android.view.textclassifier.TextClassificationSessionId; |
21 | import·com.android.textclassifier.utils.IndentingPrintWriter; | 26 | import·com.android.textclassifier.utils.IndentingPrintWriter; |
22 | import·android.icu.util.ULocale; | 27 | import·android.icu.util.ULocale; |
23 | import·android.view.textclassifier.TextLanguage$Builder; | 28 | import·android.view.textclassifier.TextLanguage$Builder; |
24 | import·android.view.textclassifier.TextLanguage; | 29 | import·android.view.textclassifier.TextLanguage; |
25 | import·android.view.textclassifier.TextLanguage$Request; | 30 | import·android.view.textclassifier.TextLanguage$Request; |
| 31 | import·android.view.textclassifier.TextClassification; |
26 | import·com.google.android.textclassifier.AnnotatorModel$AnnotationUsecase; | |
27 | import·com.google.android.textclassifier.AnnotatorModel$ClassificationOptions; | |
28 | import·java.time.ZonedDateTime; | |
29 | import·java.time.ZoneId; | |
30 | import·com.google.common.base.Ascii; | |
31 | import·android.view.textclassifier.TextClassification$Request; | 32 | import·android.view.textclassifier.TextClassification$Request; |
32 | import·android.content.res.Configuration; | 33 | import·android.content.res.Configuration; |
33 | import·android.content.res.Resources; | 34 | import·android.content.res.Resources; |
34 | import·android.content.res.AssetFileDescriptor; | 35 | import·android.content.res.AssetFileDescriptor; |
35 | import·com.google.android.textclassifier.LangIdModel$LanguageResult; | 36 | import·com.google.android.textclassifier.LangIdModel$LanguageResult; |
36 | import·java.util.Collection; | 37 | import·java.util.Collection; |
37 | import·java.util.Map; | 38 | import·java.util.Map; |
38 | import·android.util.ArrayMap; | 39 | import·android.util.ArrayMap; |
39 | import·android.view.textclassifier.TextClassification; | |
40 | import·com.google.android.textclassifier.AnnotatorModel$ClassificationResult; | |
41 | import·com.google.common.collect.ImmutableList; | 40 | import·com.google.common.collect.ImmutableList; |
42 | import·java.util.Arrays; | 41 | import·java.util.Arrays; |
43 | import·com.android.textclassifier.common.logging.ResultIdUtils; | 42 | import·com.android.textclassifier.common.logging.ResultIdUtils; |
44 | import·com.google.common.base.Optional; | 43 | import·com.google.common.base.Optional; |
45 | import·android.os.LocaleList; | 44 | import·android.os.LocaleList; |
46 | import·android.util.Log; | 45 | import·android.util.Log; |
47 | import·com.android.textclassifier.common.base.TcLog; | 46 | import·com.android.textclassifier.common.base.TcLog; |
48 | import·android.os.Looper; | 47 | import·android.os.Looper; |
49 | import·java.util.Objects; | 48 | import·java.util.Objects; |
50 | import·java.util.List; | 49 | import·java.util.List; |
51 | import·com.android.textclassifier.common.statsd.TextClassifierEventLogger; | 50 | import·com.android.textclassifier.common.statsd.TextClassifierEventLogger; |
52 | import·com.android.textclassifier.common.intent.TemplateIntentFactory; | 51 | import·com.android.textclassifier.common.intent.TemplateIntentFactory; |
53 | import·com.android.textclassifier.common.TextClassifierSettings; | 52 | import·com.android.textclassifier.common.TextClassifierSettings; |
| 53 | import·com.android.textclassifier.common.ModelFileManager; |
54 | import·com.google.android.textclassifier.LangIdModel; | 54 | import·com.google.android.textclassifier.LangIdModel; |
55 | import·com.android.textclassifier.common.statsd.GenerateLinksLogger; | 55 | import·com.android.textclassifier.common.statsd.GenerateLinksLogger; |
56 | import·android.content.Context; | 56 | import·android.content.Context; |
57 | import·com.google.android.textclassifier.AnnotatorModel; | 57 | import·com.google.android.textclassifier.AnnotatorModel; |
58 | import·com.google.android.textclassifier.ActionsSuggestionsModel; | 58 | import·com.google.android.textclassifier.ActionsSuggestionsModel; |
| 59 | import·com.android.textclassifier.common.ModelFileManager$ModelFile; |
| |
59 | final·class·TextClassifierImpl | 60 | final·class·TextClassifierImpl |
60 | { | 61 | { |
61 | ····private·ModelFileManager$ModelFile·actionModelInUse; | 62 | ····private·ModelFileManager$ModelFile·actionModelInUse; |
62 | ····private·ActionsSuggestionsModel·actionsImpl; | 63 | ····private·ActionsSuggestionsModel·actionsImpl; |
63 | ····private·AnnotatorModel·annotatorImpl; | 64 | ····private·AnnotatorModel·annotatorImpl; |
64 | ····private·ModelFileManager$ModelFile·annotatorModelInUse; | 65 | ····private·ModelFileManager$ModelFile·annotatorModelInUse; |
Offset 125, 499 lines modified | Offset 126, 824 lines modified |
125 | ············a[n2]·=·i; | 126 | ············a[n2]·=·i; |
126 | ············a[n]·=·j; | 127 | ············a[n]·=·j; |
127 | ············a[3]·=·context.getPackageName(); | 128 | ············a[3]·=·context.getPackageName(); |
128 | ············return·ResultIdUtils.createId(Arrays.hashCode(a),·(List)modelInfos); | 129 | ············return·ResultIdUtils.createId(Arrays.hashCode(a),·(List)modelInfos); |
129 | ········} | 130 | ········} |
130 | ····} | 131 | ····} |
131 | ···· | 132 | ···· |
132 | ····private·TextClassification·createClassificationResult(final·AnnotatorModel$ClassificationResult[]·p0,·final·String·p1,·final·int·p2,·final·int·p3,·final·LangIdModel·p4)·{ | 133 | ····private·ImmutableList·detectLanguageTags(final·LangIdModel·langIdModel,·final·CharSequence·charSequence)·{ |
| 134 | ········float·n; |
| 135 | ········if·(this.settings.getLangIdThresholdOverride()·>=·0.0f)·{ |
| 136 | ············n·=·this.settings.getLangIdThresholdOverride(); |
| 137 | ········} |
| 138 | ········else·{ |
| 139 | ············n·=·langIdModel.getLangIdThreshold(); |
| 140 | ········} |
| 141 | ········final·LangIdModel$LanguageResult[]·detectLanguages·=·langIdModel.detectLanguages(charSequence.toString()); |
| 142 | ········final·ArrayMap·arrayMap·=·new·ArrayMap(); |
| 143 | ········for·(int·length·=·detectLanguages.length,·i·=·0;·i·<·length;·++i)·{ |
| 144 | ············final·LangIdModel$LanguageResult·langIdModel$LanguageResult·=·detectLanguages[i]; |
| 145 | ············if·(langIdModel$LanguageResult.getScore()·>=·n)·{ |
| 146 | ················arrayMap.put((Object)langIdModel$LanguageResult.getLanguage(),·(Object)langIdModel$LanguageResult.getScore()); |
| 147 | ············} |
| 148 | ········} |
| 149 | ········return·ImmutableList.copyOf((Collection)new·EntityConfidence((Map)arrayMap).getEntities()); |
| 150 | ····} |
| 151 | ···· |
| 152 | ····private·AnnotatorModel·getAnnotatorImpl(LocaleList·default1)·{ |
| 153 | ········final·Object·lock·=·this.lock; |
| 154 | ········//·monitorenter(lock) |
| 155 | ········Label_0022:·{ |
| 156 | ············if·(default1·!=·null)·{ |
| 157 | ················break·Label_0022; |
| 158 | ············} |
| 159 | ············try·{ |
| 160 | ················default1·=·LocaleList.getDefault(); |
| 161 | ················break·Label_0022; |
| 162 | ············} |
| 163 | ············finally·{ |
| 164 | ················//·monitorexit(lock) |
| 165 | ················Label_0202:·{ |
| 166 | ····················throw·new·IllegalStateException("Failed·to·find·the·best·annotator·model"); |
| 167 | ················} |
| 168 | ················final·ModelFileManager$ModelFile·bestModelFile·=·this.modelFileManager.findBestModelFile("annotator",·default1); |
| 169 | ················//·iftrue(Label_0202:,·bestModelFile·==·null) |
| 170 | ················//·iftrue(Label_0173:,·Objects.equals(a,·(Object)bestModelFile)) |
| 171 | ················while·(true)·{ |
| 172 | ····················Block_4:·{ |
| 173 | ························break·Block_4; |
| 174 | ························Object·a·=·this.annotatorModelInUse; |
| 175 | ························Label_0069: |
| 176 | ························final·StringBuilder·sb·=·new·StringBuilder(); |
| 177 | ························sb.append("Loading·"); |
| 178 | ························sb.append(bestModelFile); |
| 179 | ························final·String·string·=·sb.toString(); |
| 180 | ························final·boolean·enable_FULL_LOGGING·=·TcLog.ENABLE_FULL_LOGGING; |
| 181 | ························Log.d("androidtc",·string); |
| 182 | ························a·=·bestModelFile.open(this.context.getAssets()); |
| 183 | ························try·{ |
| 184 | ····························(this.annotatorImpl·=·new·AnnotatorModel((AssetFileDescriptor)a)).setLangIdModel(this.getLangIdImpl()); |
| 185 | ····························this.annotatorModelInUse·=·bestModelFile; |
| 186 | ····························if·(a·!=·null)·{ |
| 187 | ································((AssetFileDescriptor)a).close(); |
| 188 | ····························} |
| 189 | ····························Label_0173: |
| 190 | ····························//·monitorexit(lock) |
| 191 | ····························return·this.annotatorImpl; |
| 192 | ························} |
| 193 | ························finally·{ |
| 194 | ····························if·(a·!=·null)·{ |
| 195 | ································try·{ |
| 196 | ····································((AssetFileDescriptor)a).close(); |
| 197 | ································} |
| 198 | ································finally·{ |
| 199 | ····································final·Throwable·t; |
| 200 | ····································final·Throwable·exception; |
| 201 | ····································t.addSuppressed(exception); |
| 202 | ································} |
| 203 | ····························} |
| 204 | ························} |
| 205 | ························throw·new·IllegalStateException("Failed·to·find·the·best·annotator·model"); |
| 206 | ····················} |
| 207 | ····················continue; |
| 208 | ················} |
| 209 | ············} |
| 210 | ············//·iftrue(Label_0069:,·this.annotatorImpl·==·null) |
| 211 | ········} |
| 212 | ····} |
| 213 | ···· |
| 214 | ····private·LangIdModel·getLangIdImpl()·{ |
| 215 | ········synchronized·(this.lock)·{ |
| 216 | ············final·ModelFileManager$ModelFile·bestModelFile·=·this.modelFileManager.findBestModelFile("lang_id",·(LocaleList)null); |
| 217 | ············if·(bestModelFile·!=·null)·{ |
| 218 | ················Label_0147:·{ |
| 219 | ····················if·(this.langIdImpl·!=·null)·{ |
| 220 | ························final·Object·a·=·this.langIdModelInUse; |
| 221 | ························if·(Objects.equals(a,·bestModelFile))·{ |
| 222 | ····························break·Label_0147; |
| 223 | ························} |
| 224 | ····················} |
| 225 | ····················final·StringBuilder·sb·=·new·StringBuilder(); |
| 226 | ····················sb.append("Loading·"); |
| 227 | ····················sb.append(bestModelFile); |
| 228 | ····················final·String·string·=·sb.toString(); |
| 229 | ····················final·boolean·enable_FULL_LOGGING·=·TcLog.ENABLE_FULL_LOGGING; |
| 230 | ····················Log.d("androidtc",·string); |
| 231 | ····················final·Object·a·=·bestModelFile.open(this.context.getAssets()); |
| 232 | ····················try·{ |
| 233 | ························this.langIdImpl·=·new·LangIdModel((AssetFileDescriptor)a); |
| 234 | ························this.langIdModelInUse·=·bestModelFile; |
| 235 | ························if·(a·!=·null)·{ |
| 236 | ····························((AssetFileDescriptor)a).close(); |
| 237 | ························} |
| 238 | ························return·this.langIdImpl; |
| 239 | ····················} |
| 240 | ····················finally·{ |
| 241 | ························if·(a·!=·null)·{ |
| 242 | ····························try·{ |
| 243 | ································((AssetFileDescriptor)a).close(); |
| 244 | ····························} |
| 245 | ····························finally·{ |
| 246 | ································final·Throwable·t; |
| 247 | ································final·Throwable·exception; |
| 248 | ································t.addSuppressed(exception); |
| 249 | ····························} |
| 250 | ························} |
| 251 | ····················} |
| 252 | ················} |
| 253 | ············} |
| 254 | ············throw·new·IllegalStateException("Failed·to·find·the·best·LangID·model."); |
| 255 | ········} |
| 256 | ····} |
| 257 | ···· |
| 258 | ····private·String·getResourceLocalesString()·{ |
| 259 | ········try·{ |
| 260 | ············final·Context·context·=·this.context; |
| 261 | ············try·{ |
| 262 | ················final·Resources·resources·=·context.getResources(); |
| 263 | ················try·{ |
| 264 | ····················final·Configuration·configuration·=·resources.getConfiguration(); |
| 265 | ····················try·{ |
| 266 | ························final·LocaleList·locales·=·configuration.getLocales(); |
| 267 | ························try·{ |
| 268 | ····························return·locales.toLanguageTags(); |
| 269 | ························} |
| 270 | ························catch·(NullPointerException·ex)·{ |
| 271 | ····························return·LocaleList.getDefault().toLanguageTags(); |
| 272 | ························} |
| 273 | ····················} |
| 274 | ····················catch·(NullPointerException·ex2)·{} |
| 275 | ················} |
| 276 | ················catch·(NullPointerException·ex3)·{} |
| 277 | ············} |
| 278 | ············catch·(NullPointerException·ex4)·{} |
| 279 | ········} |
| 280 | ········catch·(NullPointerException·ex5)·{} |
| 281 | ····} |
| 282 | ···· |
| 283 | ····TextClassification·classifyText(final·TextClassification$Request·p0)·{ |
133 | ········//· | 284 | ········//· |
134 | ········//·This·method·could·not·be·decompiled. | 285 | ········//·This·method·could·not·be·decompiled. |
135 | ········//· | 286 | ········//· |
136 | ········//·Original·Bytecode: | 287 | ········//·Original·Bytecode: |
Offset 764, 195 lines modified | Offset 1090, 14 lines modified |
Offset 1079, 661 lines modified | Offset 1224, 661 lines modified |
Offset 1892, 43 lines modified | Offset 2037, 23 lines modified |