.class public Landroidx/emoji2/text/EmojiCompat; .super Ljava/lang/Object; .source "EmojiCompat.java" # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Landroidx/emoji2/text/EmojiCompat$CompatInternal19;, Landroidx/emoji2/text/EmojiCompat$CompatInternal;, Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher;, Landroidx/emoji2/text/EmojiCompat$Config;, Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;, Landroidx/emoji2/text/EmojiCompat$GlyphChecker;, Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;, Landroidx/emoji2/text/EmojiCompat$InitCallback;, Landroidx/emoji2/text/EmojiCompat$SpanFactory;, Landroidx/emoji2/text/EmojiCompat$CodepointSequenceMatchResult;, Landroidx/emoji2/text/EmojiCompat$LoadStrategy;, Landroidx/emoji2/text/EmojiCompat$ReplaceStrategy; } .end annotation # static fields .field private static final CONFIG_LOCK:Ljava/lang/Object; .field public static final EDITOR_INFO_METAVERSION_KEY:Ljava/lang/String; = "android.support.text.emoji.emojiCompat_metadataVersion" .field public static final EDITOR_INFO_REPLACE_ALL_KEY:Ljava/lang/String; = "android.support.text.emoji.emojiCompat_replaceAll" .field static final EMOJI_COUNT_UNLIMITED:I = 0x7fffffff .field public static final EMOJI_FALLBACK:I = 0x2 .field public static final EMOJI_SUPPORTED:I = 0x1 .field public static final EMOJI_UNSUPPORTED:I = 0x0 .field private static final INSTANCE_LOCK:Ljava/lang/Object; .field public static final LOAD_STATE_DEFAULT:I = 0x3 .field public static final LOAD_STATE_FAILED:I = 0x2 .field public static final LOAD_STATE_LOADING:I = 0x0 .field public static final LOAD_STATE_SUCCEEDED:I = 0x1 .field public static final LOAD_STRATEGY_DEFAULT:I = 0x0 .field public static final LOAD_STRATEGY_MANUAL:I = 0x1 .field private static final NOT_INITIALIZED_ERROR_TEXT:Ljava/lang/String; = "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." .field public static final REPLACE_STRATEGY_ALL:I = 0x1 .field public static final REPLACE_STRATEGY_DEFAULT:I = 0x0 .field public static final REPLACE_STRATEGY_NON_EXISTENT:I = 0x2 .field private static volatile sHasDoneDefaultConfigLookup:Z .field private static volatile sInstance:Landroidx/emoji2/text/EmojiCompat; # instance fields .field final mEmojiAsDefaultStyleExceptions:[I .field private final mEmojiSpanIndicatorColor:I .field private final mEmojiSpanIndicatorEnabled:Z .field private final mGlyphChecker:Landroidx/emoji2/text/EmojiCompat$GlyphChecker; .field private final mHelper:Landroidx/emoji2/text/EmojiCompat$CompatInternal; .field private final mInitCallbacks:Ljava/util/Set; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Set<", "Landroidx/emoji2/text/EmojiCompat$InitCallback;", ">;" } .end annotation .end field .field private final mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; .field private volatile mLoadState:I .field private final mMainHandler:Landroid/os/Handler; .field private final mMetadataLoadStrategy:I .field final mMetadataLoader:Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader; .field final mReplaceAll:Z .field final mUseEmojiAsDefaultStyle:Z # direct methods .method static constructor ()V .locals 1 .line 349 new-instance v0, Ljava/lang/Object; invoke-direct {v0}, Ljava/lang/Object;->()V sput-object v0, Landroidx/emoji2/text/EmojiCompat;->INSTANCE_LOCK:Ljava/lang/Object; .line 350 new-instance v0, Ljava/lang/Object; invoke-direct {v0}, Ljava/lang/Object;->()V sput-object v0, Landroidx/emoji2/text/EmojiCompat;->CONFIG_LOCK:Ljava/lang/Object; return-void .end method .method private constructor (Landroidx/emoji2/text/EmojiCompat$Config;)V .locals 2 .line 459 invoke-direct {p0}, Ljava/lang/Object;->()V .line 460 new-instance v0, Ljava/util/concurrent/locks/ReentrantReadWriteLock; invoke-direct {v0}, Ljava/util/concurrent/locks/ReentrantReadWriteLock;->()V iput-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; const/4 v0, 0x3 .line 461 iput v0, p0, Landroidx/emoji2/text/EmojiCompat;->mLoadState:I .line 462 iget-boolean v0, p1, Landroidx/emoji2/text/EmojiCompat$Config;->mReplaceAll:Z iput-boolean v0, p0, Landroidx/emoji2/text/EmojiCompat;->mReplaceAll:Z .line 463 iget-boolean v0, p1, Landroidx/emoji2/text/EmojiCompat$Config;->mUseEmojiAsDefaultStyle:Z iput-boolean v0, p0, Landroidx/emoji2/text/EmojiCompat;->mUseEmojiAsDefaultStyle:Z .line 464 iget-object v0, p1, Landroidx/emoji2/text/EmojiCompat$Config;->mEmojiAsDefaultStyleExceptions:[I iput-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mEmojiAsDefaultStyleExceptions:[I .line 465 iget-boolean v0, p1, Landroidx/emoji2/text/EmojiCompat$Config;->mEmojiSpanIndicatorEnabled:Z iput-boolean v0, p0, Landroidx/emoji2/text/EmojiCompat;->mEmojiSpanIndicatorEnabled:Z .line 466 iget v0, p1, Landroidx/emoji2/text/EmojiCompat$Config;->mEmojiSpanIndicatorColor:I iput v0, p0, Landroidx/emoji2/text/EmojiCompat;->mEmojiSpanIndicatorColor:I .line 467 iget-object v0, p1, Landroidx/emoji2/text/EmojiCompat$Config;->mMetadataLoader:Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader; iput-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mMetadataLoader:Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader; .line 468 iget v0, p1, Landroidx/emoji2/text/EmojiCompat$Config;->mMetadataLoadStrategy:I iput v0, p0, Landroidx/emoji2/text/EmojiCompat;->mMetadataLoadStrategy:I .line 469 iget-object v0, p1, Landroidx/emoji2/text/EmojiCompat$Config;->mGlyphChecker:Landroidx/emoji2/text/EmojiCompat$GlyphChecker; iput-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mGlyphChecker:Landroidx/emoji2/text/EmojiCompat$GlyphChecker; .line 470 new-instance v0, Landroid/os/Handler; invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper; move-result-object v1 invoke-direct {v0, v1}, Landroid/os/Handler;->(Landroid/os/Looper;)V iput-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mMainHandler:Landroid/os/Handler; .line 471 new-instance v0, Landroidx/collection/ArraySet; invoke-direct {v0}, Landroidx/collection/ArraySet;->()V iput-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitCallbacks:Ljava/util/Set; .line 472 iget-object v1, p1, Landroidx/emoji2/text/EmojiCompat$Config;->mInitCallbacks:Ljava/util/Set; if-eqz v1, :cond_0 iget-object v1, p1, Landroidx/emoji2/text/EmojiCompat$Config;->mInitCallbacks:Ljava/util/Set; invoke-interface {v1}, Ljava/util/Set;->isEmpty()Z move-result v1 if-nez v1, :cond_0 .line 473 iget-object p1, p1, Landroidx/emoji2/text/EmojiCompat$Config;->mInitCallbacks:Ljava/util/Set; invoke-interface {v0, p1}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z .line 475 :cond_0 new-instance p1, Landroidx/emoji2/text/EmojiCompat$CompatInternal19; invoke-direct {p1, p0}, Landroidx/emoji2/text/EmojiCompat$CompatInternal19;->(Landroidx/emoji2/text/EmojiCompat;)V iput-object p1, p0, Landroidx/emoji2/text/EmojiCompat;->mHelper:Landroidx/emoji2/text/EmojiCompat$CompatInternal; .line 477 invoke-direct {p0}, Landroidx/emoji2/text/EmojiCompat;->loadMetadata()V return-void .end method .method static synthetic access$000(Landroidx/emoji2/text/EmojiCompat;)Landroidx/emoji2/text/EmojiCompat$GlyphChecker; .locals 0 .line 111 iget-object p0, p0, Landroidx/emoji2/text/EmojiCompat;->mGlyphChecker:Landroidx/emoji2/text/EmojiCompat$GlyphChecker; return-object p0 .end method .method public static get()Landroidx/emoji2/text/EmojiCompat; .locals 4 .line 648 sget-object v0, Landroidx/emoji2/text/EmojiCompat;->INSTANCE_LOCK:Ljava/lang/Object; monitor-enter v0 .line 649 :try_start_0 sget-object v1, Landroidx/emoji2/text/EmojiCompat;->sInstance:Landroidx/emoji2/text/EmojiCompat; if-eqz v1, :cond_0 const/4 v2, 0x1 goto :goto_0 :cond_0 const/4 v2, 0x0 .line 650 :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." invoke-static {v2, v3}, Landroidx/core/util/Preconditions;->checkState(ZLjava/lang/String;)V .line 651 monitor-exit v0 return-object v1 :catchall_0 move-exception v1 .line 652 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw v1 .end method .method public static handleDeleteSurroundingText(Landroid/view/inputmethod/InputConnection;Landroid/text/Editable;IIZ)Z .locals 0 .line 868 invoke-static {p0, p1, p2, p3, p4}, Landroidx/emoji2/text/EmojiProcessor;->handleDeleteSurroundingText(Landroid/view/inputmethod/InputConnection;Landroid/text/Editable;IIZ)Z move-result p0 return p0 .end method .method public static handleOnKeyDown(Landroid/text/Editable;ILandroid/view/KeyEvent;)Z .locals 0 .line 839 invoke-static {p0, p1, p2}, Landroidx/emoji2/text/EmojiProcessor;->handleOnKeyDown(Landroid/text/Editable;ILandroid/view/KeyEvent;)Z move-result p0 return p0 .end method .method public static init(Landroid/content/Context;)Landroidx/emoji2/text/EmojiCompat; .locals 1 const/4 v0, 0x0 .line 497 invoke-static {p0, v0}, Landroidx/emoji2/text/EmojiCompat;->init(Landroid/content/Context;Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;)Landroidx/emoji2/text/EmojiCompat; move-result-object p0 return-object p0 .end method .method public static init(Landroid/content/Context;Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;)Landroidx/emoji2/text/EmojiCompat; .locals 1 .line 509 sget-boolean v0, Landroidx/emoji2/text/EmojiCompat;->sHasDoneDefaultConfigLookup:Z if-eqz v0, :cond_0 .line 514 sget-object p0, Landroidx/emoji2/text/EmojiCompat;->sInstance:Landroidx/emoji2/text/EmojiCompat; return-object p0 :cond_0 if-eqz p1, :cond_1 goto :goto_0 .line 518 :cond_1 new-instance p1, Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory; const/4 v0, 0x0 invoke-direct {p1, v0}, Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->(Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper;)V .line 519 :goto_0 invoke-virtual {p1, p0}, Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->create(Landroid/content/Context;)Landroidx/emoji2/text/EmojiCompat$Config; move-result-object p0 .line 521 sget-object p1, Landroidx/emoji2/text/EmojiCompat;->CONFIG_LOCK:Ljava/lang/Object; monitor-enter p1 .line 522 :try_start_0 sget-boolean v0, Landroidx/emoji2/text/EmojiCompat;->sHasDoneDefaultConfigLookup:Z if-nez v0, :cond_3 if-eqz p0, :cond_2 .line 526 invoke-static {p0}, Landroidx/emoji2/text/EmojiCompat;->init(Landroidx/emoji2/text/EmojiCompat$Config;)Landroidx/emoji2/text/EmojiCompat; :cond_2 const/4 p0, 0x1 .line 529 sput-boolean p0, Landroidx/emoji2/text/EmojiCompat;->sHasDoneDefaultConfigLookup:Z .line 532 :cond_3 sget-object p0, Landroidx/emoji2/text/EmojiCompat;->sInstance:Landroidx/emoji2/text/EmojiCompat; monitor-exit p1 return-object p0 :catchall_0 move-exception p0 .line 533 monitor-exit p1 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p0 .end method .method public static init(Landroidx/emoji2/text/EmojiCompat$Config;)Landroidx/emoji2/text/EmojiCompat; .locals 2 .line 549 sget-object v0, Landroidx/emoji2/text/EmojiCompat;->sInstance:Landroidx/emoji2/text/EmojiCompat; if-nez v0, :cond_1 .line 551 sget-object v1, Landroidx/emoji2/text/EmojiCompat;->INSTANCE_LOCK:Ljava/lang/Object; monitor-enter v1 .line 552 :try_start_0 sget-object v0, Landroidx/emoji2/text/EmojiCompat;->sInstance:Landroidx/emoji2/text/EmojiCompat; if-nez v0, :cond_0 .line 554 new-instance v0, Landroidx/emoji2/text/EmojiCompat; invoke-direct {v0, p0}, Landroidx/emoji2/text/EmojiCompat;->(Landroidx/emoji2/text/EmojiCompat$Config;)V .line 555 sput-object v0, Landroidx/emoji2/text/EmojiCompat;->sInstance:Landroidx/emoji2/text/EmojiCompat; .line 557 :cond_0 monitor-exit v1 goto :goto_0 :catchall_0 move-exception p0 monitor-exit v1 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p0 :cond_1 :goto_0 return-object v0 .end method .method public static isConfigured()Z .locals 1 .line 593 sget-object v0, Landroidx/emoji2/text/EmojiCompat;->sInstance:Landroidx/emoji2/text/EmojiCompat; if-eqz v0, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return v0 .end method .method private isInitialized()Z .locals 2 .line 795 invoke-virtual {p0}, Landroidx/emoji2/text/EmojiCompat;->getLoadState()I move-result v0 const/4 v1, 0x1 if-ne v0, v1, :cond_0 goto :goto_0 :cond_0 const/4 v1, 0x0 :goto_0 return v1 .end method .method private loadMetadata()V .locals 2 .line 688 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v0 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V .line 690 :try_start_0 iget v0, p0, Landroidx/emoji2/text/EmojiCompat;->mMetadataLoadStrategy:I if-nez v0, :cond_0 const/4 v0, 0x0 .line 691 iput v0, p0, Landroidx/emoji2/text/EmojiCompat;->mLoadState:I :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 694 :cond_0 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v0 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V .line 697 invoke-virtual {p0}, Landroidx/emoji2/text/EmojiCompat;->getLoadState()I move-result v0 if-nez v0, :cond_1 .line 698 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mHelper:Landroidx/emoji2/text/EmojiCompat$CompatInternal; invoke-virtual {v0}, Landroidx/emoji2/text/EmojiCompat$CompatInternal;->loadMetadata()V :cond_1 return-void :catchall_0 move-exception v0 .line 694 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v1 invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V .line 695 throw v0 .end method .method public static reset(Landroidx/emoji2/text/EmojiCompat$Config;)Landroidx/emoji2/text/EmojiCompat; .locals 2 .line 605 sget-object v0, Landroidx/emoji2/text/EmojiCompat;->INSTANCE_LOCK:Ljava/lang/Object; monitor-enter v0 .line 606 :try_start_0 new-instance v1, Landroidx/emoji2/text/EmojiCompat; invoke-direct {v1, p0}, Landroidx/emoji2/text/EmojiCompat;->(Landroidx/emoji2/text/EmojiCompat$Config;)V .line 607 sput-object v1, Landroidx/emoji2/text/EmojiCompat;->sInstance:Landroidx/emoji2/text/EmojiCompat; .line 608 monitor-exit v0 return-object v1 :catchall_0 move-exception p0 .line 609 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p0 .end method .method public static reset(Landroidx/emoji2/text/EmojiCompat;)Landroidx/emoji2/text/EmojiCompat; .locals 1 .line 620 sget-object v0, Landroidx/emoji2/text/EmojiCompat;->INSTANCE_LOCK:Ljava/lang/Object; monitor-enter v0 .line 621 :try_start_0 sput-object p0, Landroidx/emoji2/text/EmojiCompat;->sInstance:Landroidx/emoji2/text/EmojiCompat; .line 622 sget-object p0, Landroidx/emoji2/text/EmojiCompat;->sInstance:Landroidx/emoji2/text/EmojiCompat; monitor-exit v0 return-object p0 :catchall_0 move-exception p0 .line 623 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p0 .end method .method public static skipDefaultConfigurationLookup(Z)V .locals 1 .line 633 sget-object v0, Landroidx/emoji2/text/EmojiCompat;->CONFIG_LOCK:Ljava/lang/Object; monitor-enter v0 .line 634 :try_start_0 sput-boolean p0, Landroidx/emoji2/text/EmojiCompat;->sHasDoneDefaultConfigLookup:Z .line 635 monitor-exit v0 return-void :catchall_0 move-exception p0 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p0 .end method # virtual methods .method public getAssetSignature()Ljava/lang/String; .locals 2 .line 1118 invoke-direct {p0}, Landroidx/emoji2/text/EmojiCompat;->isInitialized()Z move-result v0 const-string v1, "Not initialized yet" invoke-static {v0, v1}, Landroidx/core/util/Preconditions;->checkState(ZLjava/lang/String;)V .line 1119 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mHelper:Landroidx/emoji2/text/EmojiCompat$CompatInternal; invoke-virtual {v0}, Landroidx/emoji2/text/EmojiCompat$CompatInternal;->getAssetSignature()Ljava/lang/String; move-result-object v0 return-object v0 .end method .method public getEmojiMatch(Ljava/lang/CharSequence;I)I .locals 2 .line 934 invoke-direct {p0}, Landroidx/emoji2/text/EmojiCompat;->isInitialized()Z move-result v0 const-string v1, "Not initialized yet" invoke-static {v0, v1}, Landroidx/core/util/Preconditions;->checkState(ZLjava/lang/String;)V .line 935 const-string v0, "sequence cannot be null" invoke-static {p1, v0}, Landroidx/core/util/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .line 936 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mHelper:Landroidx/emoji2/text/EmojiCompat$CompatInternal; invoke-virtual {v0, p1, p2}, Landroidx/emoji2/text/EmojiCompat$CompatInternal;->getEmojiMatch(Ljava/lang/CharSequence;I)I move-result p1 return p1 .end method .method public getEmojiSpanIndicatorColor()I .locals 1 .line 813 iget v0, p0, Landroidx/emoji2/text/EmojiCompat;->mEmojiSpanIndicatorColor:I return v0 .end method .method public getLoadState()I .locals 2 .line 783 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock; move-result-object v0 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V .line 785 :try_start_0 iget v0, p0, Landroidx/emoji2/text/EmojiCompat;->mLoadState:I :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 787 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock; move-result-object v1 invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V return v0 :catchall_0 move-exception v0 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock; move-result-object v1 invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V .line 788 throw v0 .end method .method public hasEmojiGlyph(Ljava/lang/CharSequence;)Z .locals 2 .annotation runtime Ljava/lang/Deprecated; .end annotation .line 889 invoke-direct {p0}, Landroidx/emoji2/text/EmojiCompat;->isInitialized()Z move-result v0 const-string v1, "Not initialized yet" invoke-static {v0, v1}, Landroidx/core/util/Preconditions;->checkState(ZLjava/lang/String;)V .line 890 const-string v0, "sequence cannot be null" invoke-static {p1, v0}, Landroidx/core/util/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .line 891 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mHelper:Landroidx/emoji2/text/EmojiCompat$CompatInternal; invoke-virtual {v0, p1}, Landroidx/emoji2/text/EmojiCompat$CompatInternal;->hasEmojiGlyph(Ljava/lang/CharSequence;)Z move-result p1 return p1 .end method .method public hasEmojiGlyph(Ljava/lang/CharSequence;I)Z .locals 2 .annotation runtime Ljava/lang/Deprecated; .end annotation .line 911 invoke-direct {p0}, Landroidx/emoji2/text/EmojiCompat;->isInitialized()Z move-result v0 const-string v1, "Not initialized yet" invoke-static {v0, v1}, Landroidx/core/util/Preconditions;->checkState(ZLjava/lang/String;)V .line 912 const-string v0, "sequence cannot be null" invoke-static {p1, v0}, Landroidx/core/util/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .line 913 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mHelper:Landroidx/emoji2/text/EmojiCompat$CompatInternal; invoke-virtual {v0, p1, p2}, Landroidx/emoji2/text/EmojiCompat$CompatInternal;->hasEmojiGlyph(Ljava/lang/CharSequence;I)Z move-result p1 return p1 .end method .method public isEmojiSpanIndicatorEnabled()Z .locals 1 .line 804 iget-boolean v0, p0, Landroidx/emoji2/text/EmojiCompat;->mEmojiSpanIndicatorEnabled:Z return v0 .end method .method public load()V .locals 3 .line 672 iget v0, p0, Landroidx/emoji2/text/EmojiCompat;->mMetadataLoadStrategy:I const/4 v1, 0x0 const/4 v2, 0x1 if-ne v0, v2, :cond_0 goto :goto_0 :cond_0 move v2, v1 :goto_0 const-string v0, "Set metadataLoadStrategy to LOAD_STRATEGY_MANUAL to execute manual loading" invoke-static {v2, v0}, Landroidx/core/util/Preconditions;->checkState(ZLjava/lang/String;)V .line 674 invoke-direct {p0}, Landroidx/emoji2/text/EmojiCompat;->isInitialized()Z move-result v0 if-eqz v0, :cond_1 return-void .line 676 :cond_1 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v0 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V .line 678 :try_start_0 iget v0, p0, Landroidx/emoji2/text/EmojiCompat;->mLoadState:I :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 if-nez v0, :cond_2 .line 681 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v0 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V return-void .line 679 :cond_2 :try_start_1 iput v1, p0, Landroidx/emoji2/text/EmojiCompat;->mLoadState:I :try_end_1 .catchall {:try_start_1 .. :try_end_1} :catchall_0 .line 681 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v0 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V .line 684 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mHelper:Landroidx/emoji2/text/EmojiCompat$CompatInternal; invoke-virtual {v0}, Landroidx/emoji2/text/EmojiCompat$CompatInternal;->loadMetadata()V return-void :catchall_0 move-exception v0 .line 681 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v1 invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V .line 682 throw v0 .end method .method onMetadataLoadFailed(Ljava/lang/Throwable;)V .locals 4 .line 719 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;->()V .line 720 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v1 invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->lock()V const/4 v1, 0x2 .line 722 :try_start_0 iput v1, p0, Landroidx/emoji2/text/EmojiCompat;->mLoadState:I .line 723 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitCallbacks:Ljava/util/Set; invoke-interface {v0, v1}, Ljava/util/Collection;->addAll(Ljava/util/Collection;)Z .line 724 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitCallbacks:Ljava/util/Set; invoke-interface {v1}, Ljava/util/Set;->clear()V :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 726 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v1 invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V .line 728 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mMainHandler:Landroid/os/Handler; new-instance v2, Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher; iget v3, p0, Landroidx/emoji2/text/EmojiCompat;->mLoadState:I invoke-direct {v2, v0, v3, p1}, Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher;->(Ljava/util/Collection;ILjava/lang/Throwable;)V invoke-virtual {v1, v2}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z return-void :catchall_0 move-exception p1 .line 726 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v0 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V .line 727 throw p1 .end method .method onMetadataLoadSuccess()V .locals 4 .line 704 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;->()V .line 705 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v1 invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->lock()V const/4 v1, 0x1 .line 707 :try_start_0 iput v1, p0, Landroidx/emoji2/text/EmojiCompat;->mLoadState:I .line 708 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitCallbacks:Ljava/util/Set; invoke-interface {v0, v1}, Ljava/util/Collection;->addAll(Ljava/util/Collection;)Z .line 709 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitCallbacks:Ljava/util/Set; invoke-interface {v1}, Ljava/util/Set;->clear()V :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 711 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v1 invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V .line 714 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mMainHandler:Landroid/os/Handler; new-instance v2, Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher; iget v3, p0, Landroidx/emoji2/text/EmojiCompat;->mLoadState:I invoke-direct {v2, v0, v3}, Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher;->(Ljava/util/Collection;I)V invoke-virtual {v1, v2}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z return-void :catchall_0 move-exception v0 .line 711 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v1}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v1 invoke-interface {v1}, Ljava/util/concurrent/locks/Lock;->unlock()V .line 712 throw v0 .end method .method public process(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; .locals 2 const/4 v0, 0x0 if-nez p1, :cond_0 move v1, v0 goto :goto_0 .line 956 :cond_0 invoke-interface {p1}, Ljava/lang/CharSequence;->length()I move-result v1 .line 957 :goto_0 invoke-virtual {p0, p1, v0, v1}, Landroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;II)Ljava/lang/CharSequence; move-result-object p1 return-object p1 .end method .method public process(Ljava/lang/CharSequence;II)Ljava/lang/CharSequence; .locals 1 const v0, 0x7fffffff .line 991 invoke-virtual {p0, p1, p2, p3, v0}, Landroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;III)Ljava/lang/CharSequence; move-result-object p1 return-object p1 .end method .method public process(Ljava/lang/CharSequence;III)Ljava/lang/CharSequence; .locals 6 const/4 v5, 0x0 move-object v0, p0 move-object v1, p1 move v2, p2 move v3, p3 move v4, p4 .line 1029 invoke-virtual/range {v0 .. v5}, Landroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;IIII)Ljava/lang/CharSequence; move-result-object p1 return-object p1 .end method .method public process(Ljava/lang/CharSequence;IIII)Ljava/lang/CharSequence; .locals 7 .line 1071 invoke-direct {p0}, Landroidx/emoji2/text/EmojiCompat;->isInitialized()Z move-result v0 const-string v1, "Not initialized yet" invoke-static {v0, v1}, Landroidx/core/util/Preconditions;->checkState(ZLjava/lang/String;)V .line 1072 const-string v0, "start cannot be negative" invoke-static {p2, v0}, Landroidx/core/util/Preconditions;->checkArgumentNonnegative(ILjava/lang/String;)I .line 1073 const-string v0, "end cannot be negative" invoke-static {p3, v0}, Landroidx/core/util/Preconditions;->checkArgumentNonnegative(ILjava/lang/String;)I .line 1074 const-string v0, "maxEmojiCount cannot be negative" invoke-static {p4, v0}, Landroidx/core/util/Preconditions;->checkArgumentNonnegative(ILjava/lang/String;)I const/4 v0, 0x0 const/4 v1, 0x1 if-gt p2, p3, :cond_0 move v2, v1 goto :goto_0 :cond_0 move v2, v0 .line 1075 :goto_0 const-string v3, "start should be <= than end" invoke-static {v2, v3}, Landroidx/core/util/Preconditions;->checkArgument(ZLjava/lang/Object;)V if-nez p1, :cond_1 const/4 p1, 0x0 return-object p1 .line 1082 :cond_1 invoke-interface {p1}, Ljava/lang/CharSequence;->length()I move-result v2 if-gt p2, v2, :cond_2 move v2, v1 goto :goto_1 :cond_2 move v2, v0 :goto_1 const-string v3, "start should be < than charSequence length" invoke-static {v2, v3}, Landroidx/core/util/Preconditions;->checkArgument(ZLjava/lang/Object;)V .line 1084 invoke-interface {p1}, Ljava/lang/CharSequence;->length()I move-result v2 if-gt p3, v2, :cond_3 move v2, v1 goto :goto_2 :cond_3 move v2, v0 :goto_2 const-string v3, "end should be < than charSequence length" invoke-static {v2, v3}, Landroidx/core/util/Preconditions;->checkArgument(ZLjava/lang/Object;)V .line 1088 invoke-interface {p1}, Ljava/lang/CharSequence;->length()I move-result v2 if-eqz v2, :cond_7 if-ne p2, p3, :cond_4 goto :goto_4 :cond_4 if-eq p5, v1, :cond_6 const/4 v1, 0x2 if-eq p5, v1, :cond_5 .line 1102 iget-boolean v0, p0, Landroidx/emoji2/text/EmojiCompat;->mReplaceAll:Z :cond_5 move v6, v0 goto :goto_3 :cond_6 move v6, v1 .line 1106 :goto_3 iget-object v1, p0, Landroidx/emoji2/text/EmojiCompat;->mHelper:Landroidx/emoji2/text/EmojiCompat$CompatInternal; move-object v2, p1 move v3, p2 move v4, p3 move v5, p4 invoke-virtual/range {v1 .. v6}, Landroidx/emoji2/text/EmojiCompat$CompatInternal;->process(Ljava/lang/CharSequence;IIIZ)Ljava/lang/CharSequence; move-result-object p1 :cond_7 :goto_4 return-object p1 .end method .method public registerInitCallback(Landroidx/emoji2/text/EmojiCompat$InitCallback;)V .locals 3 .line 746 const-string v0, "initCallback cannot be null" invoke-static {p1, v0}, Landroidx/core/util/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .line 748 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v0 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V .line 750 :try_start_0 iget v0, p0, Landroidx/emoji2/text/EmojiCompat;->mLoadState:I const/4 v1, 0x1 if-eq v0, v1, :cond_1 iget v0, p0, Landroidx/emoji2/text/EmojiCompat;->mLoadState:I const/4 v1, 0x2 if-ne v0, v1, :cond_0 goto :goto_0 .line 753 :cond_0 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitCallbacks:Ljava/util/Set; invoke-interface {v0, p1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z goto :goto_1 .line 751 :cond_1 :goto_0 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mMainHandler:Landroid/os/Handler; new-instance v1, Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher; iget v2, p0, Landroidx/emoji2/text/EmojiCompat;->mLoadState:I invoke-direct {v1, p1, v2}, Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher;->(Landroidx/emoji2/text/EmojiCompat$InitCallback;I)V invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 756 :goto_1 iget-object p1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {p1}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object p1 invoke-interface {p1}, Ljava/util/concurrent/locks/Lock;->unlock()V return-void :catchall_0 move-exception p1 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v0 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V .line 757 throw p1 .end method .method public unregisterInitCallback(Landroidx/emoji2/text/EmojiCompat$InitCallback;)V .locals 1 .line 766 const-string v0, "initCallback cannot be null" invoke-static {p1, v0}, Landroidx/core/util/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .line 767 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v0 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->lock()V .line 769 :try_start_0 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitCallbacks:Ljava/util/Set; invoke-interface {v0, p1}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 771 iget-object p1, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {p1}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object p1 invoke-interface {p1}, Ljava/util/concurrent/locks/Lock;->unlock()V return-void :catchall_0 move-exception p1 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mInitLock:Ljava/util/concurrent/locks/ReadWriteLock; invoke-interface {v0}, Ljava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; move-result-object v0 invoke-interface {v0}, Ljava/util/concurrent/locks/Lock;->unlock()V .line 772 throw p1 .end method .method public updateEditorInfo(Landroid/view/inputmethod/EditorInfo;)V .locals 1 .line 1143 invoke-direct {p0}, Landroidx/emoji2/text/EmojiCompat;->isInitialized()Z move-result v0 if-eqz v0, :cond_2 if-nez p1, :cond_0 goto :goto_0 .line 1146 :cond_0 iget-object v0, p1, Landroid/view/inputmethod/EditorInfo;->extras:Landroid/os/Bundle; if-nez v0, :cond_1 .line 1147 new-instance v0, Landroid/os/Bundle; invoke-direct {v0}, Landroid/os/Bundle;->()V iput-object v0, p1, Landroid/view/inputmethod/EditorInfo;->extras:Landroid/os/Bundle; .line 1149 :cond_1 iget-object v0, p0, Landroidx/emoji2/text/EmojiCompat;->mHelper:Landroidx/emoji2/text/EmojiCompat$CompatInternal; invoke-virtual {v0, p1}, Landroidx/emoji2/text/EmojiCompat$CompatInternal;->updateEditorInfoAttrs(Landroid/view/inputmethod/EditorInfo;)V :cond_2 :goto_0 return-void .end method