HandlerMessageInterceptor.smali
.class public Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;
.super Lcom/tencent/tinker/loader/hotplug/interceptor/Interceptor;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor$CallbackWrapper;,
Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor$MessageHandler;
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/tencent/tinker/loader/hotplug/interceptor/Interceptor",
"<",
"Landroid/os/Handler$Callback;",
">;"
}
.end annotation
# static fields
.field private static sMCallbackField:Ljava/lang/reflect/Field;
# instance fields
.field private final mMessageHandler:Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor$MessageHandler;
.field private final mTarget:Landroid/os/Handler;
# direct methods
.method static constructor <clinit>()V
.registers 3
const/4 v0, 0x0
sput-object v0, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;->sMCallbackField:Ljava/lang/reflect/Field;
const-class v1, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;
monitor-enter v1
:try_start_6
sget-object v0, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;->sMCallbackField:Ljava/lang/reflect/Field;
:try_end_8
.catchall {:try_start_6 .. :try_end_8} :catchall_17
if-nez v0, :cond_15
:try_start_a
const-class v0, Landroid/os/Handler;
const-string/jumbo v2, "mCallback"
invoke-static {v0, v2}, Lcom/tencent/tinker/loader/shareutil/ShareReflectUtil;->findField(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
move-result-object v0
sput-object v0, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;->sMCallbackField:Ljava/lang/reflect/Field;
:try_end_15
.catch Ljava/lang/Throwable; {:try_start_a .. :try_end_15} :catch_1a
.catchall {:try_start_a .. :try_end_15} :catchall_17
:cond_15
:goto_15
:try_start_15
monitor-exit v1
return-void
:catchall_17
move-exception v0
monitor-exit v1
:try_end_19
.catchall {:try_start_15 .. :try_end_19} :catchall_17
throw v0
:catch_1a
move-exception v0
goto :goto_15
.end method
.method public constructor <init>(Landroid/os/Handler;Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor$MessageHandler;)V
.registers 3
invoke-direct {p0}, Lcom/tencent/tinker/loader/hotplug/interceptor/Interceptor;-><init>()V
iput-object p1, p0, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;->mTarget:Landroid/os/Handler;
iput-object p2, p0, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;->mMessageHandler:Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor$MessageHandler;
return-void
.end method
# virtual methods
.method protected decorate(Landroid/os/Handler$Callback;)Landroid/os/Handler$Callback;
.registers 4
.param p1 # Landroid/os/Handler$Callback;
.annotation build Landroid/support/annotation/Nullable;
.end annotation
.end param
.annotation build Landroid/support/annotation/NonNull;
.end annotation
if-eqz p1, :cond_f
const-class v0, Lcom/tencent/tinker/loader/hotplug/interceptor/Interceptor$ITinkerHotplugProxy;
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_f
:goto_e
return-object p1
:cond_f
new-instance v0, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor$CallbackWrapper;
iget-object v1, p0, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;->mMessageHandler:Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor$MessageHandler;
invoke-direct {v0, v1, p1}, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor$CallbackWrapper;-><init>(Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor$MessageHandler;Landroid/os/Handler$Callback;)V
move-object p1, v0
goto :goto_e
.end method
.method protected bridge synthetic decorate(Ljava/lang/Object;)Ljava/lang/Object;
.registers 3
.param p1 # Ljava/lang/Object;
.annotation build Landroid/support/annotation/Nullable;
.end annotation
.end param
.annotation build Landroid/support/annotation/NonNull;
.end annotation
check-cast p1, Landroid/os/Handler$Callback;
invoke-virtual {p0, p1}, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;->decorate(Landroid/os/Handler$Callback;)Landroid/os/Handler$Callback;
move-result-object v0
return-object v0
.end method
.method protected fetchTarget()Landroid/os/Handler$Callback;
.registers 3
.annotation build Landroid/support/annotation/Nullable;
.end annotation
sget-object v0, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;->sMCallbackField:Ljava/lang/reflect/Field;
iget-object v1, p0, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;->mTarget:Landroid/os/Handler;
invoke-virtual {v0, v1}, Ljava/lang/reflect/Field;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/os/Handler$Callback;
return-object v0
.end method
.method protected bridge synthetic fetchTarget()Ljava/lang/Object;
.registers 2
.annotation build Landroid/support/annotation/Nullable;
.end annotation
invoke-virtual {p0}, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;->fetchTarget()Landroid/os/Handler$Callback;
move-result-object v0
return-object v0
.end method
.method protected inject(Landroid/os/Handler$Callback;)V
.registers 4
.param p1 # Landroid/os/Handler$Callback;
.annotation build Landroid/support/annotation/Nullable;
.end annotation
.end param
sget-object v0, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;->sMCallbackField:Ljava/lang/reflect/Field;
iget-object v1, p0, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;->mTarget:Landroid/os/Handler;
invoke-virtual {v0, v1, p1}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V
return-void
.end method
.method protected bridge synthetic inject(Ljava/lang/Object;)V
.registers 2
.param p1 # Ljava/lang/Object;
.annotation build Landroid/support/annotation/Nullable;
.end annotation
.end param
check-cast p1, Landroid/os/Handler$Callback;
invoke-virtual {p0, p1}, Lcom/tencent/tinker/loader/hotplug/interceptor/HandlerMessageInterceptor;->inject(Landroid/os/Handler$Callback;)V
return-void
.end method