CustomTabsHelper.smali
.class public Lim/tpelyyftgw/messenger/support/customtabsclient/shared/CustomTabsHelper;
.super Ljava/lang/Object;
.source "CustomTabsHelper.java"
# static fields
.field private static final ACTION_CUSTOM_TABS_CONNECTION:Ljava/lang/String; = "android.support.customtabs.action.CustomTabsService"
.field static final BETA_PACKAGE:Ljava/lang/String; = "com.chrome.beta"
.field static final DEV_PACKAGE:Ljava/lang/String; = "com.chrome.dev"
.field private static final EXTRA_CUSTOM_TABS_KEEP_ALIVE:Ljava/lang/String; = "android.support.customtabs.extra.KEEP_ALIVE"
.field static final LOCAL_PACKAGE:Ljava/lang/String; = "com.google.android.apps.chrome"
.field static final STABLE_PACKAGE:Ljava/lang/String; = "com.android.chrome"
.field private static final TAG:Ljava/lang/String; = "CustomTabsHelper"
.field private static sPackageNameToUse:Ljava/lang/String;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method private constructor <init>()V
.registers 1
.line 49
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static addKeepAliveExtra(Landroid/content/Context;Landroid/content/Intent;)V
.registers 5
.param p0, "context" # Landroid/content/Context;
.param p1, "intent" # Landroid/content/Intent;
.line 52
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 53
invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
move-result-object v1
const-class v2, Lim/tpelyyftgw/messenger/support/customtabsclient/shared/KeepAliveService;
invoke-virtual {v2}, Ljava/lang/Class;->getCanonicalName()Ljava/lang/String;
move-result-object v2
.line 52
invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
move-result-object v0
.line 54
.local v0, "keepAliveIntent":Landroid/content/Intent;
const-string v1, "android.support.customtabs.extra.KEEP_ALIVE"
invoke-virtual {p1, v1, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;
.line 55
return-void
.end method
.method public static getPackageNameToUse(Landroid/content/Context;)Ljava/lang/String;
.registers 12
.param p0, "context" # Landroid/content/Context;
.line 68
sget-object v0, Lim/tpelyyftgw/messenger/support/customtabsclient/shared/CustomTabsHelper;->sPackageNameToUse:Ljava/lang/String;
if-eqz v0, :cond_5
return-object v0
.line 70
:cond_5
invoke-virtual {p0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
move-result-object v0
.line 72
.local v0, "pm":Landroid/content/pm/PackageManager;
new-instance v1, Landroid/content/Intent;
const-string v2, "http://www.example.com"
invoke-static {v2}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v2
const-string v3, "android.intent.action.VIEW"
invoke-direct {v1, v3, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
.line 73
.local v1, "activityIntent":Landroid/content/Intent;
const/4 v2, 0x0
invoke-virtual {v0, v1, v2}, Landroid/content/pm/PackageManager;->resolveActivity(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;
move-result-object v3
.line 74
.local v3, "defaultViewHandlerInfo":Landroid/content/pm/ResolveInfo;
const/4 v4, 0x0
.line 75
.local v4, "defaultViewHandlerPackageName":Ljava/lang/String;
if-eqz v3, :cond_22
.line 76
iget-object v5, v3, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
iget-object v4, v5, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
.line 80
:cond_22
invoke-virtual {v0, v1, v2}, Landroid/content/pm/PackageManager;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;
move-result-object v5
.line 81
.local v5, "resolvedActivityList":Ljava/util/List;, "Ljava/util/List<Landroid/content/pm/ResolveInfo;>;"
new-instance v6, Ljava/util/ArrayList;
invoke-direct {v6}, Ljava/util/ArrayList;-><init>()V
.line 82
.local v6, "packagesSupportingCustomTabs":Ljava/util/List;, "Ljava/util/List<Ljava/lang/String;>;"
invoke-interface {v5}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v7
:goto_2f
invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z
move-result v8
if-eqz v8, :cond_5a
invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v8
check-cast v8, Landroid/content/pm/ResolveInfo;
.line 83
.local v8, "info":Landroid/content/pm/ResolveInfo;
new-instance v9, Landroid/content/Intent;
invoke-direct {v9}, Landroid/content/Intent;-><init>()V
.line 84
.local v9, "serviceIntent":Landroid/content/Intent;
const-string v10, "android.support.customtabs.action.CustomTabsService"
invoke-virtual {v9, v10}, Landroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent;
.line 85
iget-object v10, v8, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
iget-object v10, v10, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
invoke-virtual {v9, v10}, Landroid/content/Intent;->setPackage(Ljava/lang/String;)Landroid/content/Intent;
.line 86
invoke-virtual {v0, v9, v2}, Landroid/content/pm/PackageManager;->resolveService(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;
move-result-object v10
if-eqz v10, :cond_59
.line 87
iget-object v10, v8, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
iget-object v10, v10, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
invoke-interface {v6, v10}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 89
.end local v8 # "info":Landroid/content/pm/ResolveInfo;
.end local v9 # "serviceIntent":Landroid/content/Intent;
:cond_59
goto :goto_2f
.line 93
:cond_5a
invoke-interface {v6}, Ljava/util/List;->isEmpty()Z
move-result v7
const/4 v8, 0x1
const-string v9, "com.android.chrome"
if-eqz v7, :cond_67
.line 94
const/4 v7, 0x0
sput-object v7, Lim/tpelyyftgw/messenger/support/customtabsclient/shared/CustomTabsHelper;->sPackageNameToUse:Ljava/lang/String;
goto :goto_b4
.line 95
:cond_67
invoke-interface {v6}, Ljava/util/List;->size()I
move-result v7
if-ne v7, v8, :cond_76
.line 96
invoke-interface {v6, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v7
check-cast v7, Ljava/lang/String;
sput-object v7, Lim/tpelyyftgw/messenger/support/customtabsclient/shared/CustomTabsHelper;->sPackageNameToUse:Ljava/lang/String;
goto :goto_b4
.line 97
:cond_76
invoke-static {v4}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v7
if-nez v7, :cond_8b
.line 98
invoke-static {p0, v1}, Lim/tpelyyftgw/messenger/support/customtabsclient/shared/CustomTabsHelper;->hasSpecializedHandlerIntents(Landroid/content/Context;Landroid/content/Intent;)Z
move-result v7
if-nez v7, :cond_8b
.line 99
invoke-interface {v6, v4}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v7
if-eqz v7, :cond_8b
.line 100
sput-object v4, Lim/tpelyyftgw/messenger/support/customtabsclient/shared/CustomTabsHelper;->sPackageNameToUse:Ljava/lang/String;
goto :goto_b4
.line 101
:cond_8b
invoke-interface {v6, v9}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v7
if-eqz v7, :cond_94
.line 102
sput-object v9, Lim/tpelyyftgw/messenger/support/customtabsclient/shared/CustomTabsHelper;->sPackageNameToUse:Ljava/lang/String;
goto :goto_b4
.line 103
:cond_94
const-string v7, "com.chrome.beta"
invoke-interface {v6, v7}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v10
if-eqz v10, :cond_9f
.line 104
sput-object v7, Lim/tpelyyftgw/messenger/support/customtabsclient/shared/CustomTabsHelper;->sPackageNameToUse:Ljava/lang/String;
goto :goto_b4
.line 105
:cond_9f
const-string v7, "com.chrome.dev"
invoke-interface {v6, v7}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v10
if-eqz v10, :cond_aa
.line 106
sput-object v7, Lim/tpelyyftgw/messenger/support/customtabsclient/shared/CustomTabsHelper;->sPackageNameToUse:Ljava/lang/String;
goto :goto_b4
.line 107
:cond_aa
const-string v7, "com.google.android.apps.chrome"
invoke-interface {v6, v7}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v10
if-eqz v10, :cond_b4
.line 108
sput-object v7, Lim/tpelyyftgw/messenger/support/customtabsclient/shared/CustomTabsHelper;->sPackageNameToUse:Ljava/lang/String;
.line 111
:cond_b4
:goto_b4
:try_start_b4
const-string v7, "com.sec.android.app.sbrowser"
sget-object v10, Lim/tpelyyftgw/messenger/support/customtabsclient/shared/CustomTabsHelper;->sPackageNameToUse:Ljava/lang/String;
invoke-virtual {v7, v10}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v7
if-eqz v7, :cond_d5
.line 112
sget-object v7, Lim/tpelyyftgw/messenger/ApplicationLoader;->applicationContext:Landroid/content/Context;
invoke-virtual {v7}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
move-result-object v7
move-object v0, v7
.line 113
invoke-virtual {v0, v9, v2}, Landroid/content/pm/PackageManager;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
move-result-object v2
.line 114
.local v2, "applicationInfo":Landroid/content/pm/ApplicationInfo;
if-eqz v2, :cond_d5
iget-boolean v7, v2, Landroid/content/pm/ApplicationInfo;->enabled:Z
if-eqz v7, :cond_d5
.line 115
invoke-virtual {v0, v9, v8}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
move-result-object v7
.line 116
.local v7, "packageInfo":Landroid/content/pm/PackageInfo;
sput-object v9, Lim/tpelyyftgw/messenger/support/customtabsclient/shared/CustomTabsHelper;->sPackageNameToUse:Ljava/lang/String;
:try_end_d5
.catchall {:try_start_b4 .. :try_end_d5} :catchall_d6
.line 121
.end local v2 # "applicationInfo":Landroid/content/pm/ApplicationInfo;
.end local v7 # "packageInfo":Landroid/content/pm/PackageInfo;
:cond_d5
goto :goto_d7
.line 119
:catchall_d6
move-exception v2
.line 122
:goto_d7
sget-object v2, Lim/tpelyyftgw/messenger/support/customtabsclient/shared/CustomTabsHelper;->sPackageNameToUse:Ljava/lang/String;
return-object v2
.end method
.method public static getPackages()[Ljava/lang/String;
.registers 5
.line 156
const-string v0, ""
const-string v1, "com.android.chrome"
const-string v2, "com.chrome.beta"
const-string v3, "com.chrome.dev"
const-string v4, "com.google.android.apps.chrome"
filled-new-array {v0, v1, v2, v3, v4}, [Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method private static hasSpecializedHandlerIntents(Landroid/content/Context;Landroid/content/Intent;)Z
.registers 9
.param p0, "context" # Landroid/content/Context;
.param p1, "intent" # Landroid/content/Intent;
.line 132
const/4 v0, 0x0
:try_start_1
invoke-virtual {p0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
move-result-object v1
.line 133
.local v1, "pm":Landroid/content/pm/PackageManager;
const/16 v2, 0x40
invoke-virtual {v1, p1, v2}, Landroid/content/pm/PackageManager;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;
move-result-object v2
.line 136
.local v2, "handlers":Ljava/util/List;, "Ljava/util/List<Landroid/content/pm/ResolveInfo;>;"
if-eqz v2, :cond_3e
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v3
if-nez v3, :cond_14
goto :goto_3e
.line 139
:cond_14
invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_18
:goto_18
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_3d
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Landroid/content/pm/ResolveInfo;
.line 140
.local v4, "resolveInfo":Landroid/content/pm/ResolveInfo;
iget-object v5, v4, Landroid/content/pm/ResolveInfo;->filter:Landroid/content/IntentFilter;
.line 141
.local v5, "filter":Landroid/content/IntentFilter;
if-nez v5, :cond_29
goto :goto_18
.line 142
:cond_29
invoke-virtual {v5}, Landroid/content/IntentFilter;->countDataAuthorities()I
move-result v6
if-eqz v6, :cond_18
invoke-virtual {v5}, Landroid/content/IntentFilter;->countDataPaths()I
move-result v6
if-nez v6, :cond_36
goto :goto_18
.line 143
:cond_36
iget-object v6, v4, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
:try_end_38
.catch Ljava/lang/RuntimeException; {:try_start_1 .. :try_end_38} :catch_3f
if-nez v6, :cond_3b
goto :goto_18
.line 144
:cond_3b
const/4 v0, 0x1
return v0
.line 148
.end local v1 # "pm":Landroid/content/pm/PackageManager;
.end local v2 # "handlers":Ljava/util/List;, "Ljava/util/List<Landroid/content/pm/ResolveInfo;>;"
.end local v4 # "resolveInfo":Landroid/content/pm/ResolveInfo;
.end local v5 # "filter":Landroid/content/IntentFilter;
:cond_3d
goto :goto_47
.line 137
.restart local v1 # "pm":Landroid/content/pm/PackageManager;
.restart local v2 # "handlers":Ljava/util/List;, "Ljava/util/List<Landroid/content/pm/ResolveInfo;>;"
:cond_3e
:goto_3e
return v0
.line 146
.end local v1 # "pm":Landroid/content/pm/PackageManager;
.end local v2 # "handlers":Ljava/util/List;, "Ljava/util/List<Landroid/content/pm/ResolveInfo;>;"
:catch_3f
move-exception v1
.line 147
.local v1, "e":Ljava/lang/RuntimeException;
const-string v2, "CustomTabsHelper"
const-string v3, "Runtime exception while getting specialized handlers"
invoke-static {v2, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 149
.end local v1 # "e":Ljava/lang/RuntimeException;
:goto_47
return v0
.end method