soul-browser/app/smali/androidx/emoji2/text/EmojiCompat.smali
KaKi87 550ddb0413
Decompile and recreate Soul Browser v1.4.85 with APK CI builds (#1)
* Decompile and recreate Soul Browser v1.4.85 with APK CI builds

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix CI build: include bundled google.jks and remove PR trigger

The apktool build failed in CI because app/unknown/.../google.jks was
excluded by the *.jks gitignore rule. Whitelist app-bundled JKS files
and commit the missing resource.

Also remove the redundant pull_request workflow trigger.

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Change package ID to com.github.kaki87.soulbrowser

Rename the application ID so the rebuilt APK can be installed
alongside the original Soul Browser from Google Play.

- Update AndroidManifest package, permissions, providers, and actions
- Update R class references in smali (com/github/kaki87/soulbrowser/R)
- Update shortcuts.xml targetPackage
- Rename app label to "Soul Rebuild" for easy identification

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix install compatibility: remove split APK metadata and bundle native libs

The rebuilt APK still declared requiredSplitTypes and Play Store split
metadata, causing Android to reject standalone installs as incompatible.

- Remove requiredSplitTypes and split-related manifest meta-data
- Merge native libs from all ABI splits with uncompressed storage
- Page-align before signing for extractNativeLibs=false
- Add .so to apktool doNotCompress list

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix install failure: use apksigner v2/v3 and bundle arm64 native libs

Target SDK 36 requires APK Signature Scheme v2+, but jarsigner only
produces v1 signatures, causing Android to reject the install.

- Sign with apksigner (v1+v2+v3) instead of jarsigner
- Add arm64-v8a native libraries from universal Soul Browser 1.4.79
- Set extractNativeLibs=true for reliable sideload installs
- Commit stable debug keystore for consistent signatures across builds

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Add committed debug keystore for consistent APK signatures

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix startup crash: use original classes2.dex desugar libraries

Apktool recompiles smali_classes2 into a broken classes2.dex, causing
ClassNotFoundException for j$.com.android.tools.r8.a at ML Kit init.

Inject the original classes2.dex (Java 8+ desugar libs) after apktool
build instead of using the recompiled version.

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix missing drawable resources from density split APKs

The base APK is an app bundle module; density-specific drawables like
seek_thumb_nor_b live in config.xhdpi.apk and were missing after rebuild,
causing Resources$NotFoundException at runtime.

- Merge non-9-patch resources from split APKs before apktool build
- Sync public.xml IDs from R smali only when backing files exist
- Add 713 density-specific resource IDs to public.xml

Co-authored-by: KaKi87 <KaKi87@pm.me>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-10 16:07:14 +02:00

2376 lines
46 KiB
Smali

.class public Landroidx/emoji2/text/EmojiCompat;
.super Ljava/lang/Object;
.source "SourceFile"
# annotations
.annotation build Landroidx/annotation/AnyThread;
.end annotation
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroidx/emoji2/text/EmojiCompat$GlyphChecker;,
Landroidx/emoji2/text/EmojiCompat$SpanFactory;,
Landroidx/emoji2/text/EmojiCompat$Config;,
Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;,
Landroidx/emoji2/text/EmojiCompat$DefaultSpanFactory;,
Landroidx/emoji2/text/EmojiCompat$CompatInternal;,
Landroidx/emoji2/text/EmojiCompat$CompatInternal19;,
Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher;,
Landroidx/emoji2/text/EmojiCompat$InitCallback;,
Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;,
Landroidx/emoji2/text/EmojiCompat$CodepointSequenceMatchResult;,
Landroidx/emoji2/text/EmojiCompat$LoadStrategy;,
Landroidx/emoji2/text/EmojiCompat$ReplaceStrategy;
}
.end annotation
# static fields
.field public static final j:Ljava/lang/Object;
.field public static volatile k:Landroidx/emoji2/text/EmojiCompat;
# instance fields
.field public final a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.field public final b:Landroidx/collection/ArraySet;
.field public volatile c:I
.field public final d:Landroid/os/Handler;
.field public final e:Landroidx/emoji2/text/EmojiCompat$CompatInternal19;
.field public final f:Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;
.field public final g:Landroidx/emoji2/text/EmojiCompat$DefaultSpanFactory;
.field public final h:I
.field public final i:Landroidx/emoji2/text/EmojiCompat$GlyphChecker;
# direct methods
.method static constructor <clinit>()V
.locals 1
.line 1
new-instance v0, Ljava/lang/Object;
.line 2
.line 3
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
.line 4
.line 5
.line 6
sput-object v0, Landroidx/emoji2/text/EmojiCompat;->j:Ljava/lang/Object;
.line 7
.line 8
return-void
.end method
.method public constructor <init>(Landroidx/emoji2/text/EmojiCompat$Config;)V
.locals 5
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
.line 3
.line 4
new-instance v0, Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 5
.line 6
invoke-direct {v0}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;-><init>()V
.line 7
.line 8
.line 9
iput-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 10
.line 11
const/4 v1, 0x3
.line 12
iput v1, p0, Landroidx/emoji2/text/EmojiCompat;->c:I
.line 13
.line 14
iget-object v1, p1, Landroidx/emoji2/text/EmojiCompat$Config;->a:Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;
.line 15
.line 16
iput-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->f:Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;
.line 17
.line 18
iget v2, p1, Landroidx/emoji2/text/EmojiCompat$Config;->b:I
.line 19
.line 20
iput v2, p0, Landroidx/emoji2/text/EmojiCompat;->h:I
.line 21
.line 22
iget-object p1, p1, Landroidx/emoji2/text/EmojiCompat$Config;->c:Landroidx/emoji2/text/EmojiCompat$GlyphChecker;
.line 23
.line 24
iput-object p1, p0, Landroidx/emoji2/text/EmojiCompat;->i:Landroidx/emoji2/text/EmojiCompat$GlyphChecker;
.line 25
.line 26
new-instance p1, Landroid/os/Handler;
.line 27
.line 28
invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper;
.line 29
.line 30
.line 31
move-result-object v3
.line 32
invoke-direct {p1, v3}, Landroid/os/Handler;-><init>(Landroid/os/Looper;)V
.line 33
.line 34
.line 35
iput-object p1, p0, Landroidx/emoji2/text/EmojiCompat;->d:Landroid/os/Handler;
.line 36
.line 37
new-instance p1, Landroidx/collection/ArraySet;
.line 38
.line 39
const/4 v3, 0x0
.line 40
invoke-direct {p1, v3}, Landroidx/collection/ArraySet;-><init>(I)V
.line 41
.line 42
.line 43
iput-object p1, p0, Landroidx/emoji2/text/EmojiCompat;->b:Landroidx/collection/ArraySet;
.line 44
.line 45
new-instance p1, Landroidx/emoji2/text/EmojiCompat$DefaultSpanFactory;
.line 46
.line 47
invoke-direct {p1}, Ljava/lang/Object;-><init>()V
.line 48
.line 49
.line 50
iput-object p1, p0, Landroidx/emoji2/text/EmojiCompat;->g:Landroidx/emoji2/text/EmojiCompat$DefaultSpanFactory;
.line 51
.line 52
new-instance p1, Landroidx/emoji2/text/EmojiCompat$CompatInternal19;
.line 53
.line 54
invoke-direct {p1, p0}, Landroidx/emoji2/text/EmojiCompat$CompatInternal;-><init>(Landroidx/emoji2/text/EmojiCompat;)V
.line 55
.line 56
.line 57
iput-object p1, p0, Landroidx/emoji2/text/EmojiCompat;->e:Landroidx/emoji2/text/EmojiCompat$CompatInternal19;
.line 58
.line 59
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
.line 60
.line 61
.line 62
move-result-object v4
.line 63
invoke-interface {v4}, Ljava/util/concurrent/locks/Lock;->lock()V
.line 64
.line 65
.line 66
if-nez v2, :cond_0
.line 67
.line 68
:try_start_0
iput v3, p0, Landroidx/emoji2/text/EmojiCompat;->c:I
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 69
.line 70
goto :goto_0
.line 71
:catchall_0
move-exception p1
.line 72
iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 73
.line 74
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
.line 75
.line 76
.line 77
move-result-object v0
.line 78
invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V
.line 79
.line 80
.line 81
throw p1
.line 82
:cond_0
:goto_0
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
.line 83
.line 84
.line 85
move-result-object v0
.line 86
invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V
.line 87
.line 88
.line 89
invoke-virtual {p0}, Landroidx/emoji2/text/EmojiCompat;->b()I
.line 90
.line 91
.line 92
move-result v0
.line 93
if-nez v0, :cond_1
.line 94
.line 95
:try_start_1
new-instance v0, Landroidx/emoji2/text/EmojiCompat$CompatInternal19$1;
.line 96
.line 97
invoke-direct {v0, p1}, Landroidx/emoji2/text/EmojiCompat$CompatInternal19$1;-><init>(Landroidx/emoji2/text/EmojiCompat$CompatInternal19;)V
.line 98
.line 99
.line 100
invoke-interface {v1, v0}, Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;->a(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;)V
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_1
.line 101
.line 102
.line 103
return-void
.line 104
:catchall_1
move-exception p1
.line 105
invoke-virtual {p0, p1}, Landroidx/emoji2/text/EmojiCompat;->f(Ljava/lang/Throwable;)V
.line 106
.line 107
.line 108
:cond_1
return-void
.end method
.method public static a()Landroidx/emoji2/text/EmojiCompat;
.locals 4
.line 1
sget-object v0, Landroidx/emoji2/text/EmojiCompat;->j:Ljava/lang/Object;
.line 2
.line 3
monitor-enter v0
.line 4
:try_start_0
sget-object v1, Landroidx/emoji2/text/EmojiCompat;->k:Landroidx/emoji2/text/EmojiCompat;
.line 5
.line 6
if-eqz v1, :cond_0
.line 7
.line 8
const/4 v2, 0x1
.line 9
goto :goto_0
.line 10
:cond_0
const/4 v2, 0x0
.line 11
:goto_0
const-string v3, "EmojiCompat is not initialized.\n\nYou must initialize EmojiCompat prior to referencing the EmojiCompat instance.\n\nThe most likely cause of this error is disabling the EmojiCompatInitializer\neither explicitly in AndroidManifest.xml, or by including\nandroidx.emoji2:emoji2-bundled.\n\nAutomatic initialization is typically performed by EmojiCompatInitializer. If\nyou are not expecting to initialize EmojiCompat manually in your application,\nplease check to ensure it has not been removed from your APK\'s manifest. You can\ndo this in Android Studio using Build > Analyze APK.\n\nIn the APK Analyzer, ensure that the startup entry for\nEmojiCompatInitializer and InitializationProvider is present in\n AndroidManifest.xml. If it is missing or contains tools:node=\"remove\", and you\nintend to use automatic configuration, verify:\n\n 1. Your application does not include emoji2-bundled\n 2. All modules do not contain an exclusion manifest rule for\n EmojiCompatInitializer or InitializationProvider. For more information\n about manifest exclusions see the documentation for the androidx startup\n library.\n\nIf you intend to use emoji2-bundled, please call EmojiCompat.init. You can\nlearn more in the documentation for BundledEmojiCompatConfig.\n\nIf you intended to perform manual configuration, it is recommended that you call\nEmojiCompat.init immediately on application startup.\n\nIf you still cannot resolve this issue, please open a bug with your specific\nconfiguration to help improve error message."
.line 12
.line 13
if-eqz v2, :cond_1
.line 14
.line 15
monitor-exit v0
.line 16
return-object v1
.line 17
:catchall_0
move-exception v1
.line 18
goto :goto_1
.line 19
:cond_1
new-instance v1, Ljava/lang/IllegalStateException;
.line 20
.line 21
invoke-direct {v1, v3}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
.line 22
.line 23
.line 24
throw v1
.line 25
:goto_1
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 26
throw v1
.end method
.method public static c(Landroid/view/inputmethod/InputConnection;Landroid/text/Editable;IIZ)Z
.locals 7
.line 1
const/4 v0, 0x0
.line 2
if-eqz p1, :cond_19
.line 3
.line 4
if-ltz p2, :cond_19
.line 5
.line 6
if-gez p3, :cond_0
.line 7
.line 8
goto/16 :goto_9
.line 9
.line 10
:cond_0
invoke-static {p1}, Landroid/text/Selection;->getSelectionStart(Ljava/lang/CharSequence;)I
.line 11
.line 12
.line 13
move-result v1
.line 14
invoke-static {p1}, Landroid/text/Selection;->getSelectionEnd(Ljava/lang/CharSequence;)I
.line 15
.line 16
.line 17
move-result v2
.line 18
const/4 v3, -0x1
.line 19
if-eq v1, v3, :cond_19
.line 20
.line 21
if-eq v2, v3, :cond_19
.line 22
.line 23
if-eq v1, v2, :cond_1
.line 24
.line 25
goto/16 :goto_9
.line 26
.line 27
:cond_1
const/4 v4, 0x1
.line 28
if-eqz p4, :cond_16
.line 29
.line 30
invoke-static {p2, v0}, Ljava/lang/Math;->max(II)I
.line 31
.line 32
.line 33
move-result p2
.line 34
invoke-interface {p1}, Ljava/lang/CharSequence;->length()I
.line 35
.line 36
.line 37
move-result p4
.line 38
if-ltz v1, :cond_3
.line 39
.line 40
if-ge p4, v1, :cond_2
.line 41
.line 42
goto :goto_0
.line 43
:cond_2
if-gez p2, :cond_4
.line 44
.line 45
:cond_3
:goto_0
move v1, v3
.line 46
goto :goto_3
.line 47
:cond_4
:goto_1
move p4, v0
.line 48
:goto_2
if-nez p2, :cond_5
.line 49
.line 50
goto :goto_3
.line 51
:cond_5
add-int/lit8 v1, v1, -0x1
.line 52
.line 53
if-gez v1, :cond_7
.line 54
.line 55
if-eqz p4, :cond_6
.line 56
.line 57
goto :goto_0
.line 58
:cond_6
move v1, v0
.line 59
goto :goto_3
.line 60
:cond_7
invoke-interface {p1, v1}, Ljava/lang/CharSequence;->charAt(I)C
.line 61
.line 62
.line 63
move-result v5
.line 64
if-eqz p4, :cond_9
.line 65
.line 66
invoke-static {v5}, Ljava/lang/Character;->isHighSurrogate(C)Z
.line 67
.line 68
.line 69
move-result p4
.line 70
if-nez p4, :cond_8
.line 71
.line 72
goto :goto_0
.line 73
:cond_8
add-int/lit8 p2, p2, -0x1
.line 74
.line 75
goto :goto_1
.line 76
:cond_9
invoke-static {v5}, Ljava/lang/Character;->isSurrogate(C)Z
.line 77
.line 78
.line 79
move-result v6
.line 80
if-nez v6, :cond_a
.line 81
.line 82
add-int/lit8 p2, p2, -0x1
.line 83
.line 84
goto :goto_2
.line 85
:cond_a
invoke-static {v5}, Ljava/lang/Character;->isHighSurrogate(C)Z
.line 86
.line 87
.line 88
move-result p4
.line 89
if-eqz p4, :cond_b
.line 90
.line 91
goto :goto_0
.line 92
:cond_b
move p4, v4
.line 93
goto :goto_2
.line 94
:goto_3
invoke-static {p3, v0}, Ljava/lang/Math;->max(II)I
.line 95
.line 96
.line 97
move-result p2
.line 98
invoke-interface {p1}, Ljava/lang/CharSequence;->length()I
.line 99
.line 100
.line 101
move-result p3
.line 102
if-ltz v2, :cond_d
.line 103
.line 104
if-ge p3, v2, :cond_c
.line 105
.line 106
goto :goto_4
.line 107
:cond_c
if-gez p2, :cond_e
.line 108
.line 109
:cond_d
:goto_4
move p3, v3
.line 110
goto :goto_7
.line 111
:cond_e
:goto_5
move p4, v0
.line 112
:goto_6
if-nez p2, :cond_f
.line 113
.line 114
move p3, v2
.line 115
goto :goto_7
.line 116
:cond_f
if-lt v2, p3, :cond_10
.line 117
.line 118
if-eqz p4, :cond_15
.line 119
.line 120
goto :goto_4
.line 121
:cond_10
invoke-interface {p1, v2}, Ljava/lang/CharSequence;->charAt(I)C
.line 122
.line 123
.line 124
move-result v5
.line 125
if-eqz p4, :cond_12
.line 126
.line 127
invoke-static {v5}, Ljava/lang/Character;->isLowSurrogate(C)Z
.line 128
.line 129
.line 130
move-result p4
.line 131
if-nez p4, :cond_11
.line 132
.line 133
goto :goto_4
.line 134
:cond_11
add-int/lit8 p2, p2, -0x1
.line 135
.line 136
add-int/lit8 v2, v2, 0x1
.line 137
.line 138
goto :goto_5
.line 139
:cond_12
invoke-static {v5}, Ljava/lang/Character;->isSurrogate(C)Z
.line 140
.line 141
.line 142
move-result v6
.line 143
if-nez v6, :cond_13
.line 144
.line 145
add-int/lit8 p2, p2, -0x1
.line 146
.line 147
add-int/lit8 v2, v2, 0x1
.line 148
.line 149
goto :goto_6
.line 150
:cond_13
invoke-static {v5}, Ljava/lang/Character;->isLowSurrogate(C)Z
.line 151
.line 152
.line 153
move-result p4
.line 154
if-eqz p4, :cond_14
.line 155
.line 156
goto :goto_4
.line 157
:cond_14
add-int/lit8 v2, v2, 0x1
.line 158
.line 159
move p4, v4
.line 160
goto :goto_6
.line 161
:cond_15
:goto_7
if-eq v1, v3, :cond_19
.line 162
.line 163
if-ne p3, v3, :cond_17
.line 164
.line 165
goto :goto_9
.line 166
:cond_16
sub-int/2addr v1, p2
.line 167
invoke-static {v1, v0}, Ljava/lang/Math;->max(II)I
.line 168
.line 169
.line 170
move-result v1
.line 171
add-int/2addr v2, p3
.line 172
invoke-interface {p1}, Ljava/lang/CharSequence;->length()I
.line 173
.line 174
.line 175
move-result p2
.line 176
invoke-static {v2, p2}, Ljava/lang/Math;->min(II)I
.line 177
.line 178
.line 179
move-result p3
.line 180
:cond_17
const-class p2, Landroidx/emoji2/text/EmojiSpan;
.line 181
.line 182
invoke-interface {p1, v1, p3, p2}, Landroid/text/Spanned;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object;
.line 183
.line 184
.line 185
move-result-object p2
.line 186
check-cast p2, [Landroidx/emoji2/text/EmojiSpan;
.line 187
.line 188
if-eqz p2, :cond_19
.line 189
.line 190
array-length p4, p2
.line 191
if-lez p4, :cond_19
.line 192
.line 193
array-length p4, p2
.line 194
move v2, v0
.line 195
:goto_8
if-ge v2, p4, :cond_18
.line 196
.line 197
aget-object v3, p2, v2
.line 198
.line 199
invoke-interface {p1, v3}, Landroid/text/Spanned;->getSpanStart(Ljava/lang/Object;)I
.line 200
.line 201
.line 202
move-result v5
.line 203
invoke-interface {p1, v3}, Landroid/text/Spanned;->getSpanEnd(Ljava/lang/Object;)I
.line 204
.line 205
.line 206
move-result v3
.line 207
invoke-static {v5, v1}, Ljava/lang/Math;->min(II)I
.line 208
.line 209
.line 210
move-result v1
.line 211
invoke-static {v3, p3}, Ljava/lang/Math;->max(II)I
.line 212
.line 213
.line 214
move-result p3
.line 215
add-int/lit8 v2, v2, 0x1
.line 216
.line 217
goto :goto_8
.line 218
:cond_18
invoke-static {v1, v0}, Ljava/lang/Math;->max(II)I
.line 219
.line 220
.line 221
move-result p2
.line 222
invoke-interface {p1}, Ljava/lang/CharSequence;->length()I
.line 223
.line 224
.line 225
move-result p4
.line 226
invoke-static {p3, p4}, Ljava/lang/Math;->min(II)I
.line 227
.line 228
.line 229
move-result p3
.line 230
check-cast p0, Landroid/view/inputmethod/InputConnectionWrapper;
.line 231
.line 232
invoke-virtual {p0}, Landroid/view/inputmethod/InputConnectionWrapper;->beginBatchEdit()Z
.line 233
.line 234
.line 235
invoke-interface {p1, p2, p3}, Landroid/text/Editable;->delete(II)Landroid/text/Editable;
.line 236
.line 237
.line 238
invoke-virtual {p0}, Landroid/view/inputmethod/InputConnectionWrapper;->endBatchEdit()Z
.line 239
.line 240
.line 241
return v4
.line 242
:cond_19
:goto_9
return v0
.end method
.method public static d(Landroid/text/Editable;ILandroid/view/KeyEvent;)Z
.locals 3
.line 1
const/16 v0, 0x43
.line 2
.line 3
const/4 v1, 0x1
.line 4
const/4 v2, 0x0
.line 5
if-eq p1, v0, :cond_1
.line 6
.line 7
const/16 v0, 0x70
.line 8
.line 9
if-eq p1, v0, :cond_0
.line 10
.line 11
move p1, v2
.line 12
goto :goto_0
.line 13
:cond_0
invoke-static {p0, p2, v1}, Landroidx/emoji2/text/EmojiProcessor;->a(Landroid/text/Editable;Landroid/view/KeyEvent;Z)Z
.line 14
.line 15
.line 16
move-result p1
.line 17
goto :goto_0
.line 18
:cond_1
invoke-static {p0, p2, v2}, Landroidx/emoji2/text/EmojiProcessor;->a(Landroid/text/Editable;Landroid/view/KeyEvent;Z)Z
.line 19
.line 20
.line 21
move-result p1
.line 22
:goto_0
if-eqz p1, :cond_2
.line 23
.line 24
invoke-static {p0}, Landroid/text/method/MetaKeyKeyListener;->adjustMetaAfterKeypress(Landroid/text/Spannable;)V
.line 25
.line 26
.line 27
return v1
.line 28
:cond_2
return v2
.end method
# virtual methods
.method public final b()I
.locals 2
.line 1
iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 2
.line 3
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock;
.line 4
.line 5
.line 6
move-result-object v0
.line 7
invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V
.line 8
.line 9
.line 10
:try_start_0
iget v0, p0, Landroidx/emoji2/text/EmojiCompat;->c:I
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 11
.line 12
iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 13
.line 14
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock;
.line 15
.line 16
.line 17
move-result-object v1
.line 18
invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V
.line 19
.line 20
.line 21
return v0
.line 22
:catchall_0
move-exception v0
.line 23
iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 24
.line 25
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock;
.line 26
.line 27
.line 28
move-result-object v1
.line 29
invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V
.line 30
.line 31
.line 32
throw v0
.end method
.method public final e()V
.locals 3
.line 1
iget v0, p0, Landroidx/emoji2/text/EmojiCompat;->h:I
.line 2
.line 3
const/4 v1, 0x0
.line 4
const/4 v2, 0x1
.line 5
if-ne v0, v2, :cond_0
.line 6
.line 7
move v0, v2
.line 8
goto :goto_0
.line 9
:cond_0
move v0, v1
.line 10
:goto_0
if-eqz v0, :cond_3
.line 11
.line 12
invoke-virtual {p0}, Landroidx/emoji2/text/EmojiCompat;->b()I
.line 13
.line 14
.line 15
move-result v0
.line 16
if-ne v0, v2, :cond_1
.line 17
.line 18
return-void
.line 19
:cond_1
iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 20
.line 21
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
.line 22
.line 23
.line 24
move-result-object v0
.line 25
invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V
.line 26
.line 27
.line 28
:try_start_0
iget v0, p0, Landroidx/emoji2/text/EmojiCompat;->c:I
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_1
.line 29
.line 30
if-nez v0, :cond_2
.line 31
.line 32
iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 33
.line 34
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
.line 35
.line 36
.line 37
move-result-object v0
.line 38
invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V
.line 39
.line 40
.line 41
return-void
.line 42
:cond_2
:try_start_1
iput v1, p0, Landroidx/emoji2/text/EmojiCompat;->c:I
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_1
.line 43
.line 44
iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 45
.line 46
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
.line 47
.line 48
.line 49
move-result-object v0
.line 50
invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V
.line 51
.line 52
.line 53
iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->e:Landroidx/emoji2/text/EmojiCompat$CompatInternal19;
.line 54
.line 55
iget-object v1, v0, Landroidx/emoji2/text/EmojiCompat$CompatInternal;->a:Landroidx/emoji2/text/EmojiCompat;
.line 56
.line 57
:try_start_2
new-instance v2, Landroidx/emoji2/text/EmojiCompat$CompatInternal19$1;
.line 58
.line 59
invoke-direct {v2, v0}, Landroidx/emoji2/text/EmojiCompat$CompatInternal19$1;-><init>(Landroidx/emoji2/text/EmojiCompat$CompatInternal19;)V
.line 60
.line 61
.line 62
iget-object v0, v1, Landroidx/emoji2/text/EmojiCompat;->f:Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;
.line 63
.line 64
invoke-interface {v0, v2}, Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;->a(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;)V
:try_end_2
.catchall {:try_start_2 .. :try_end_2} :catchall_0
.line 65
.line 66
.line 67
return-void
.line 68
:catchall_0
move-exception v0
.line 69
invoke-virtual {v1, v0}, Landroidx/emoji2/text/EmojiCompat;->f(Ljava/lang/Throwable;)V
.line 70
.line 71
.line 72
return-void
.line 73
:catchall_1
move-exception v0
.line 74
iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 75
.line 76
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
.line 77
.line 78
.line 79
move-result-object v1
.line 80
invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V
.line 81
.line 82
.line 83
throw v0
.line 84
:cond_3
new-instance v0, Ljava/lang/IllegalStateException;
.line 85
.line 86
const-string v1, "Set metadataLoadStrategy to LOAD_STRATEGY_MANUAL to execute manual loading"
.line 87
.line 88
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
.line 89
.line 90
.line 91
throw v0
.end method
.method public final f(Ljava/lang/Throwable;)V
.locals 4
.line 1
new-instance v0, Ljava/util/ArrayList;
.line 2
.line 3
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 4
.line 5
.line 6
iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 7
.line 8
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
.line 9
.line 10
.line 11
move-result-object v1
.line 12
invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->lock()V
.line 13
.line 14
.line 15
const/4 v1, 0x2
.line 16
:try_start_0
iput v1, p0, Landroidx/emoji2/text/EmojiCompat;->c:I
.line 17
.line 18
iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->b:Landroidx/collection/ArraySet;
.line 19
.line 20
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->addAll(Ljava/util/Collection;)Z
.line 21
.line 22
.line 23
iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->b:Landroidx/collection/ArraySet;
.line 24
.line 25
invoke-virtual {v1}, Landroidx/collection/ArraySet;->clear()V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 26
.line 27
.line 28
iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 29
.line 30
invoke-virtual {v1}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
.line 31
.line 32
.line 33
move-result-object v1
.line 34
invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V
.line 35
.line 36
.line 37
iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->d:Landroid/os/Handler;
.line 38
.line 39
new-instance v2, Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher;
.line 40
.line 41
iget v3, p0, Landroidx/emoji2/text/EmojiCompat;->c:I
.line 42
.line 43
invoke-direct {v2, v0, v3, p1}, Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher;-><init>(Ljava/util/List;ILjava/lang/Throwable;)V
.line 44
.line 45
.line 46
invoke-virtual {v1, v2}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
.line 47
.line 48
.line 49
return-void
.line 50
:catchall_0
move-exception p1
.line 51
iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 52
.line 53
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
.line 54
.line 55
.line 56
move-result-object v0
.line 57
invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V
.line 58
.line 59
.line 60
throw p1
.end method
.method public final g(Ljava/lang/CharSequence;II)Ljava/lang/CharSequence;
.locals 10
.line 1
invoke-virtual {p0}, Landroidx/emoji2/text/EmojiCompat;->b()I
.line 2
.line 3
.line 4
move-result v0
.line 5
const/4 v1, 0x0
.line 6
const/4 v2, 0x1
.line 7
if-ne v0, v2, :cond_0
.line 8
.line 9
move v0, v2
.line 10
goto :goto_0
.line 11
:cond_0
move v0, v1
.line 12
:goto_0
if-eqz v0, :cond_15
.line 13
.line 14
if-ltz p2, :cond_14
.line 15
.line 16
if-ltz p3, :cond_13
.line 17
.line 18
if-gt p2, p3, :cond_1
.line 19
.line 20
move v0, v2
.line 21
goto :goto_1
.line 22
:cond_1
move v0, v1
.line 23
:goto_1
const-string v3, "start should be <= than end"
.line 24
.line 25
invoke-static {v3, v0}, Landroidx/core/util/Preconditions;->a(Ljava/lang/String;Z)V
.line 26
.line 27
.line 28
const/4 v0, 0x0
.line 29
if-nez p1, :cond_2
.line 30
.line 31
return-object v0
.line 32
:cond_2
invoke-interface {p1}, Ljava/lang/CharSequence;->length()I
.line 33
.line 34
.line 35
move-result v3
.line 36
if-gt p2, v3, :cond_3
.line 37
.line 38
move v3, v2
.line 39
goto :goto_2
.line 40
:cond_3
move v3, v1
.line 41
:goto_2
const-string v4, "start should be < than charSequence length"
.line 42
.line 43
invoke-static {v4, v3}, Landroidx/core/util/Preconditions;->a(Ljava/lang/String;Z)V
.line 44
.line 45
.line 46
invoke-interface {p1}, Ljava/lang/CharSequence;->length()I
.line 47
.line 48
.line 49
move-result v3
.line 50
if-gt p3, v3, :cond_4
.line 51
.line 52
goto :goto_3
.line 53
:cond_4
move v2, v1
.line 54
:goto_3
const-string v3, "end should be < than charSequence length"
.line 55
.line 56
invoke-static {v3, v2}, Landroidx/core/util/Preconditions;->a(Ljava/lang/String;Z)V
.line 57
.line 58
.line 59
invoke-interface {p1}, Ljava/lang/CharSequence;->length()I
.line 60
.line 61
.line 62
move-result v2
.line 63
if-eqz v2, :cond_5
.line 64
.line 65
if-ne p2, p3, :cond_6
.line 66
.line 67
:cond_5
move-object v4, p1
.line 68
goto/16 :goto_c
.line 69
.line 70
:cond_6
iget-object v2, p0, Landroidx/emoji2/text/EmojiCompat;->e:Landroidx/emoji2/text/EmojiCompat$CompatInternal19;
.line 71
.line 72
iget-object v3, v2, Landroidx/emoji2/text/EmojiCompat$CompatInternal19;->b:Landroidx/emoji2/text/EmojiProcessor;
.line 73
.line 74
invoke-virtual {v3}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
.line 75
.line 76
.line 77
instance-of v2, p1, Landroidx/emoji2/text/SpannableBuilder;
.line 78
.line 79
if-eqz v2, :cond_7
.line 80
.line 81
move-object v4, p1
.line 82
check-cast v4, Landroidx/emoji2/text/SpannableBuilder;
.line 83
.line 84
invoke-virtual {v4}, Landroidx/emoji2/text/SpannableBuilder;->a()V
.line 85
.line 86
.line 87
:cond_7
const-class v4, Landroidx/emoji2/text/EmojiSpan;
.line 88
.line 89
if-nez v2, :cond_9
.line 90
.line 91
:try_start_0
instance-of v5, p1, Landroid/text/Spannable;
.line 92
.line 93
if-eqz v5, :cond_8
.line 94
.line 95
goto :goto_5
.line 96
:cond_8
instance-of v5, p1, Landroid/text/Spanned;
.line 97
.line 98
if-eqz v5, :cond_a
.line 99
.line 100
move-object v5, p1
.line 101
check-cast v5, Landroid/text/Spanned;
.line 102
.line 103
add-int/lit8 v6, p2, -0x1
.line 104
.line 105
add-int/lit8 v7, p3, 0x1
.line 106
.line 107
invoke-interface {v5, v6, v7, v4}, Landroid/text/Spanned;->nextSpanTransition(IILjava/lang/Class;)I
.line 108
.line 109
.line 110
move-result v5
.line 111
if-gt v5, p3, :cond_a
.line 112
.line 113
new-instance v0, Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;
.line 114
.line 115
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
.line 116
.line 117
.line 118
iput-boolean v1, v0, Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;->c:Z
.line 119
.line 120
new-instance v5, Landroid/text/SpannableString;
.line 121
.line 122
invoke-direct {v5, p1}, Landroid/text/SpannableString;-><init>(Ljava/lang/CharSequence;)V
.line 123
.line 124
.line 125
iput-object v5, v0, Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;->f:Landroid/text/Spannable;
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 126
.line 127
goto :goto_6
.line 128
:goto_4
move-object v4, p1
.line 129
goto/16 :goto_b
.line 130
.line 131
:catchall_0
move-exception v0
.line 132
move-object p2, v0
.line 133
goto :goto_4
.line 134
:cond_9
:goto_5
:try_start_1
new-instance v0, Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;
.line 135
.line 136
move-object v5, p1
.line 137
check-cast v5, Landroid/text/Spannable;
.line 138
.line 139
invoke-direct {v0, v5}, Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;-><init>(Landroid/text/Spannable;)V
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_2
.line 140
.line 141
.line 142
:cond_a
:goto_6
if-eqz v0, :cond_c
.line 143
.line 144
:try_start_2
iget-object v5, v0, Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;->f:Landroid/text/Spannable;
.line 145
.line 146
invoke-interface {v5, p2, p3, v4}, Landroid/text/Spanned;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object;
.line 147
.line 148
.line 149
move-result-object v4
.line 150
check-cast v4, [Landroidx/emoji2/text/EmojiSpan;
.line 151
.line 152
if-eqz v4, :cond_c
.line 153
.line 154
array-length v5, v4
.line 155
if-lez v5, :cond_c
.line 156
.line 157
array-length v5, v4
.line 158
:goto_7
if-ge v1, v5, :cond_c
.line 159
.line 160
aget-object v6, v4, v1
.line 161
.line 162
iget-object v7, v0, Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;->f:Landroid/text/Spannable;
.line 163
.line 164
invoke-interface {v7, v6}, Landroid/text/Spanned;->getSpanStart(Ljava/lang/Object;)I
.line 165
.line 166
.line 167
move-result v7
.line 168
iget-object v8, v0, Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;->f:Landroid/text/Spannable;
.line 169
.line 170
invoke-interface {v8, v6}, Landroid/text/Spanned;->getSpanEnd(Ljava/lang/Object;)I
.line 171
.line 172
.line 173
move-result v8
.line 174
if-eq v7, p3, :cond_b
.line 175
.line 176
invoke-virtual {v0, v6}, Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;->removeSpan(Ljava/lang/Object;)V
.line 177
.line 178
.line 179
:cond_b
invoke-static {v7, p2}, Ljava/lang/Math;->min(II)I
.line 180
.line 181
.line 182
move-result p2
.line 183
invoke-static {v8, p3}, Ljava/lang/Math;->max(II)I
.line 184
.line 185
.line 186
move-result p3
:try_end_2
.catchall {:try_start_2 .. :try_end_2} :catchall_0
.line 187
add-int/lit8 v1, v1, 0x1
.line 188
.line 189
goto :goto_7
.line 190
:cond_c
move v5, p2
.line 191
move v6, p3
.line 192
if-eq v5, v6, :cond_d
.line 193
.line 194
:try_start_3
invoke-interface {p1}, Ljava/lang/CharSequence;->length()I
.line 195
.line 196
.line 197
move-result p2
.line 198
if-lt v5, p2, :cond_e
.line 199
.line 200
:cond_d
move-object v4, p1
.line 201
goto :goto_a
.line 202
:cond_e
new-instance v9, Landroidx/emoji2/text/EmojiProcessor$EmojiProcessAddSpanCallback;
.line 203
.line 204
iget-object p2, v3, Landroidx/emoji2/text/EmojiProcessor;->a:Landroidx/emoji2/text/EmojiCompat$SpanFactory;
.line 205
.line 206
invoke-direct {v9, v0, p2}, Landroidx/emoji2/text/EmojiProcessor$EmojiProcessAddSpanCallback;-><init>(Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;Landroidx/emoji2/text/EmojiCompat$SpanFactory;)V
:try_end_3
.catchall {:try_start_3 .. :try_end_3} :catchall_2
.line 207
.line 208
.line 209
const/4 v8, 0x0
.line 210
const v7, 0x7fffffff
.line 211
.line 212
.line 213
move-object v4, p1
.line 214
:try_start_4
invoke-virtual/range {v3 .. v9}, Landroidx/emoji2/text/EmojiProcessor;->c(Ljava/lang/CharSequence;IIIZLandroidx/emoji2/text/EmojiProcessor$EmojiProcessCallback;)Ljava/lang/Object;
.line 215
.line 216
.line 217
move-result-object p1
.line 218
check-cast p1, Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;
.line 219
.line 220
if-eqz p1, :cond_10
.line 221
.line 222
iget-object p1, p1, Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;->f:Landroid/text/Spannable;
:try_end_4
.catchall {:try_start_4 .. :try_end_4} :catchall_1
.line 223
.line 224
if-eqz v2, :cond_f
.line 225
.line 226
move-object p2, v4
.line 227
check-cast p2, Landroidx/emoji2/text/SpannableBuilder;
.line 228
.line 229
invoke-virtual {p2}, Landroidx/emoji2/text/SpannableBuilder;->b()V
.line 230
.line 231
.line 232
:cond_f
return-object p1
.line 233
:catchall_1
move-exception v0
.line 234
:goto_8
move-object p2, v0
.line 235
goto :goto_b
.line 236
:cond_10
if-eqz v2, :cond_12
.line 237
.line 238
:goto_9
move-object p1, v4
.line 239
check-cast p1, Landroidx/emoji2/text/SpannableBuilder;
.line 240
.line 241
invoke-virtual {p1}, Landroidx/emoji2/text/SpannableBuilder;->b()V
.line 242
.line 243
.line 244
return-object v4
.line 245
:catchall_2
move-exception v0
.line 246
move-object v4, p1
.line 247
goto :goto_8
.line 248
:goto_a
if-eqz v2, :cond_12
.line 249
.line 250
goto :goto_9
.line 251
:goto_b
if-eqz v2, :cond_11
.line 252
.line 253
move-object p1, v4
.line 254
check-cast p1, Landroidx/emoji2/text/SpannableBuilder;
.line 255
.line 256
invoke-virtual {p1}, Landroidx/emoji2/text/SpannableBuilder;->b()V
.line 257
.line 258
.line 259
:cond_11
throw p2
.line 260
:cond_12
:goto_c
return-object v4
.line 261
:cond_13
new-instance p1, Ljava/lang/IllegalArgumentException;
.line 262
.line 263
const-string p2, "end cannot be negative"
.line 264
.line 265
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
.line 266
.line 267
.line 268
throw p1
.line 269
:cond_14
new-instance p1, Ljava/lang/IllegalArgumentException;
.line 270
.line 271
const-string p2, "start cannot be negative"
.line 272
.line 273
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
.line 274
.line 275
.line 276
throw p1
.line 277
:cond_15
new-instance p1, Ljava/lang/IllegalStateException;
.line 278
.line 279
const-string p2, "Not initialized yet"
.line 280
.line 281
invoke-direct {p1, p2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
.line 282
.line 283
.line 284
throw p1
.end method
.method public final h(Landroidx/emoji2/text/EmojiCompat$InitCallback;)V
.locals 5
.line 1
const-string v0, "initCallback cannot be null"
.line 2
.line 3
invoke-static {p1, v0}, Landroidx/core/util/Preconditions;->c(Ljava/lang/Object;Ljava/lang/String;)V
.line 4
.line 5
.line 6
iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 7
.line 8
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
.line 9
.line 10
.line 11
move-result-object v0
.line 12
invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V
.line 13
.line 14
.line 15
:try_start_0
iget v0, p0, Landroidx/emoji2/text/EmojiCompat;->c:I
.line 16
.line 17
const/4 v1, 0x1
.line 18
if-eq v0, v1, :cond_1
.line 19
.line 20
iget v0, p0, Landroidx/emoji2/text/EmojiCompat;->c:I
.line 21
.line 22
const/4 v2, 0x2
.line 23
if-ne v0, v2, :cond_0
.line 24
.line 25
goto :goto_0
.line 26
:cond_0
iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->b:Landroidx/collection/ArraySet;
.line 27
.line 28
invoke-virtual {v0, p1}, Landroidx/collection/ArraySet;->add(Ljava/lang/Object;)Z
.line 29
.line 30
.line 31
goto :goto_1
.line 32
:catchall_0
move-exception p1
.line 33
goto :goto_2
.line 34
:cond_1
:goto_0
iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->d:Landroid/os/Handler;
.line 35
.line 36
new-instance v2, Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher;
.line 37
.line 38
iget v3, p0, Landroidx/emoji2/text/EmojiCompat;->c:I
.line 39
.line 40
new-array v1, v1, [Landroidx/emoji2/text/EmojiCompat$InitCallback;
.line 41
.line 42
const/4 v4, 0x0
.line 43
aput-object p1, v1, v4
.line 44
.line 45
invoke-static {v1}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
.line 46
.line 47
.line 48
move-result-object p1
.line 49
const/4 v1, 0x0
.line 50
invoke-direct {v2, p1, v3, v1}, Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher;-><init>(Ljava/util/List;ILjava/lang/Throwable;)V
.line 51
.line 52
.line 53
invoke-virtual {v0, v2}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 54
.line 55
.line 56
:goto_1
iget-object p1, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 57
.line 58
invoke-virtual {p1}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
.line 59
.line 60
.line 61
move-result-object p1
.line 62
invoke-interface {p1}, Ljava/util/concurrent/locks/Lock;->unlock()V
.line 63
.line 64
.line 65
return-void
.line 66
:goto_2
iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->a:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
.line 67
.line 68
invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
.line 69
.line 70
.line 71
move-result-object v0
.line 72
invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V
.line 73
.line 74
.line 75
throw p1
.end method
.method public final i(Landroid/view/inputmethod/EditorInfo;)V
.locals 5
.line 1
invoke-virtual {p0}, Landroidx/emoji2/text/EmojiCompat;->b()I
.line 2
.line 3
.line 4
move-result v0
.line 5
const/4 v1, 0x1
.line 6
if-ne v0, v1, :cond_3
.line 7
.line 8
if-nez p1, :cond_0
.line 9
.line 10
return-void
.line 11
:cond_0
iget-object v0, p1, Landroid/view/inputmethod/EditorInfo;->extras:Landroid/os/Bundle;
.line 12
.line 13
if-nez v0, :cond_1
.line 14
.line 15
new-instance v0, Landroid/os/Bundle;
.line 16
.line 17
invoke-direct {v0}, Landroid/os/Bundle;-><init>()V
.line 18
.line 19
.line 20
iput-object v0, p1, Landroid/view/inputmethod/EditorInfo;->extras:Landroid/os/Bundle;
.line 21
.line 22
:cond_1
iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->e:Landroidx/emoji2/text/EmojiCompat$CompatInternal19;
.line 23
.line 24
invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
.line 25
.line 26
.line 27
iget-object v1, p1, Landroid/view/inputmethod/EditorInfo;->extras:Landroid/os/Bundle;
.line 28
.line 29
iget-object v0, v0, Landroidx/emoji2/text/EmojiCompat$CompatInternal19;->c:Landroidx/emoji2/text/MetadataRepo;
.line 30
.line 31
iget-object v0, v0, Landroidx/emoji2/text/MetadataRepo;->a:Landroidx/emoji2/text/flatbuffer/MetadataList;
.line 32
.line 33
const/4 v2, 0x4
.line 34
invoke-virtual {v0, v2}, Landroidx/emoji2/text/flatbuffer/Table;->a(I)I
.line 35
.line 36
.line 37
move-result v2
.line 38
const/4 v3, 0x0
.line 39
if-eqz v2, :cond_2
.line 40
.line 41
iget-object v4, v0, Landroidx/emoji2/text/flatbuffer/Table;->b:Ljava/nio/ByteBuffer;
.line 42
.line 43
iget v0, v0, Landroidx/emoji2/text/flatbuffer/Table;->a:I
.line 44
.line 45
add-int/2addr v2, v0
.line 46
invoke-virtual {v4, v2}, Ljava/nio/ByteBuffer;->getInt(I)I
.line 47
.line 48
.line 49
move-result v0
.line 50
goto :goto_0
.line 51
:cond_2
move v0, v3
.line 52
:goto_0
const-string v2, "android.support.text.emoji.emojiCompat_metadataVersion"
.line 53
.line 54
invoke-virtual {v1, v2, v0}, Landroid/os/BaseBundle;->putInt(Ljava/lang/String;I)V
.line 55
.line 56
.line 57
iget-object p1, p1, Landroid/view/inputmethod/EditorInfo;->extras:Landroid/os/Bundle;
.line 58
.line 59
const-string v0, "android.support.text.emoji.emojiCompat_replaceAll"
.line 60
.line 61
invoke-virtual {p1, v0, v3}, Landroid/os/BaseBundle;->putBoolean(Ljava/lang/String;Z)V
.line 62
.line 63
.line 64
:cond_3
return-void
.end method