PMSInterceptHandler.smali
.class public Lcom/tencent/tinker/loader/hotplug/handler/PMSInterceptHandler;
.super Ljava/lang/Object;
# interfaces
.implements Lcom/tencent/tinker/loader/hotplug/interceptor/ServiceBinderInterceptor$BinderInvocationHandler;
# static fields
.field private static final TAG:Ljava/lang/String; = "Tinker.PMSIntrcptHndlr"
# direct methods
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private handleGetActivityInfo(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
.registers 10
const/4 v2, 0x0
invoke-virtual {p2}, Ljava/lang/reflect/Method;->getExceptionTypes()[Ljava/lang/Class;
move-result-object v3
:try_start_5
invoke-virtual {p2, p1, p3}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_c
:goto_b
return-object v0
:cond_c
const/4 v0, 0x0
:goto_d
array-length v1, p3
if-ge v0, v1, :cond_a4
aget-object v1, p3, v0
instance-of v1, v1, Landroid/content/ComponentName;
if-eqz v1, :cond_4e
const-string/jumbo v1, "Tinker.PMSIntrcptHndlr"
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
const-string/jumbo v5, "locate componentName field of "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {p2}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;
move-result-object v5
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
const-string/jumbo v5, " done at idx: "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
aget-object v0, p3, v0
check-cast v0, Landroid/content/ComponentName;
:goto_43
if-eqz v0, :cond_51
invoke-virtual {v0}, Landroid/content/ComponentName;->getClassName()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/tencent/tinker/loader/hotplug/IncrementComponentManager;->queryActivityInfo(Ljava/lang/String;)Landroid/content/pm/ActivityInfo;
move-result-object v0
goto :goto_b
:cond_4e
add-int/lit8 v0, v0, 0x1
goto :goto_d
:cond_51
const-string/jumbo v0, "Tinker.PMSIntrcptHndlr"
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string/jumbo v4, "failed to locate componentName field of "
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {p2}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;
move-result-object v4
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string/jumbo v4, ", notice any crashes or mistakes after resolve works."
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
:try_end_76
.catch Ljava/lang/reflect/InvocationTargetException; {:try_start_5 .. :try_end_76} :catch_78
.catch Ljava/lang/Throwable; {:try_start_5 .. :try_end_76} :catch_97
move-object v0, v2
goto :goto_b
:catch_78
move-exception v1
invoke-virtual {v1}, Ljava/lang/reflect/InvocationTargetException;->getTargetException()Ljava/lang/Throwable;
move-result-object v0
if-eqz v3, :cond_87
array-length v3, v3
if-lez v3, :cond_87
if-eqz v0, :cond_85
:goto_84
throw v0
:cond_85
move-object v0, v1
goto :goto_84
:cond_87
const-string/jumbo v3, "Tinker.PMSIntrcptHndlr"
const-string/jumbo v4, "unexpected exception."
if-eqz v0, :cond_95
:goto_8f
invoke-static {v3, v4, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
move-object v0, v2
goto/16 :goto_b
:cond_95
move-object v0, v1
goto :goto_8f
:catch_97
move-exception v0
const-string/jumbo v1, "Tinker.PMSIntrcptHndlr"
const-string/jumbo v3, "unexpected exception."
invoke-static {v1, v3, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
move-object v0, v2
goto/16 :goto_b
:cond_a4
move-object v0, v2
goto :goto_43
.end method
.method private handleResolveIntent(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
.registers 10
const/4 v2, 0x0
invoke-virtual {p2}, Ljava/lang/reflect/Method;->getExceptionTypes()[Ljava/lang/Class;
move-result-object v3
:try_start_5
invoke-virtual {p2, p1, p3}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_c
:goto_b
return-object v0
:cond_c
const-string/jumbo v0, "Tinker.PMSIntrcptHndlr"
const-string/jumbo v1, "failed to resolve activity in base package, try again in patch package."
invoke-static {v0, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
const/4 v0, 0x0
:goto_16
array-length v1, p3
if-ge v0, v1, :cond_a9
aget-object v1, p3, v0
instance-of v1, v1, Landroid/content/Intent;
if-eqz v1, :cond_53
const-string/jumbo v1, "Tinker.PMSIntrcptHndlr"
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
const-string/jumbo v5, "locate intent field of "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {p2}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;
move-result-object v5
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
const-string/jumbo v5, " done at idx: "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-static {v1, v4}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
aget-object v0, p3, v0
check-cast v0, Landroid/content/Intent;
:goto_4c
if-eqz v0, :cond_56
invoke-static {v0}, Lcom/tencent/tinker/loader/hotplug/IncrementComponentManager;->resolveIntent(Landroid/content/Intent;)Landroid/content/pm/ResolveInfo;
move-result-object v0
goto :goto_b
:cond_53
add-int/lit8 v0, v0, 0x1
goto :goto_16
:cond_56
const-string/jumbo v0, "Tinker.PMSIntrcptHndlr"
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string/jumbo v4, "failed to locate intent field of "
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {p2}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;
move-result-object v4
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string/jumbo v4, ", notice any crashes or mistakes after resolve works."
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
:try_end_7b
.catch Ljava/lang/reflect/InvocationTargetException; {:try_start_5 .. :try_end_7b} :catch_7d
.catch Ljava/lang/Throwable; {:try_start_5 .. :try_end_7b} :catch_9c
move-object v0, v2
goto :goto_b
:catch_7d
move-exception v1
invoke-virtual {v1}, Ljava/lang/reflect/InvocationTargetException;->getTargetException()Ljava/lang/Throwable;
move-result-object v0
if-eqz v3, :cond_8c
array-length v3, v3
if-lez v3, :cond_8c
if-eqz v0, :cond_8a
:goto_89
throw v0
:cond_8a
move-object v0, v1
goto :goto_89
:cond_8c
const-string/jumbo v3, "Tinker.PMSIntrcptHndlr"
const-string/jumbo v4, "unexpected exception."
if-eqz v0, :cond_9a
:goto_94
invoke-static {v3, v4, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
move-object v0, v2
goto/16 :goto_b
:cond_9a
move-object v0, v1
goto :goto_94
:catch_9c
move-exception v0
const-string/jumbo v1, "Tinker.PMSIntrcptHndlr"
const-string/jumbo v3, "unexpected exception."
invoke-static {v1, v3, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
move-object v0, v2
goto/16 :goto_b
:cond_a9
move-object v0, v2
goto :goto_4c
.end method
# virtual methods
.method public invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
.registers 6
invoke-virtual {p2}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;
move-result-object v0
const-string/jumbo v1, "getActivityInfo"
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_12
invoke-direct {p0, p1, p2, p3}, Lcom/tencent/tinker/loader/hotplug/handler/PMSInterceptHandler;->handleGetActivityInfo(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
:goto_11
return-object v0
:cond_12
const-string/jumbo v1, "resolveIntent"
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_20
invoke-direct {p0, p1, p2, p3}, Lcom/tencent/tinker/loader/hotplug/handler/PMSInterceptHandler;->handleResolveIntent(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
goto :goto_11
:cond_20
invoke-virtual {p2, p1, p3}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
goto :goto_11
.end method