Files
vtosters/smali/smali_classes5/ru/mail/libverify/utils/VerificationService.smali
T
2022-06-20 00:31:48 +03:00

753 lines
19 KiB
Smali

.class public Lru/mail/libverify/utils/VerificationService;
.super Landroid/app/IntentService;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lru/mail/libverify/utils/VerificationService$a;
}
.end annotation
# static fields
.field private static final a:Ljava/util/concurrent/ConcurrentHashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/ConcurrentHashMap<",
"Ljava/lang/Object;",
"Lru/mail/libverify/utils/VerificationService$a;",
">;"
}
.end annotation
.end field
.field private static volatile b:J
.field private static c:Landroid/os/PowerManager$WakeLock;
# instance fields
.field private final d:J
# direct methods
.method static constructor <clinit>()V
.locals 2
new-instance v0, Ljava/util/concurrent/ConcurrentHashMap;
invoke-direct {v0}, Ljava/util/concurrent/ConcurrentHashMap;-><init>()V
sput-object v0, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
const-wide/16 v0, 0x0
sput-wide v0, Lru/mail/libverify/utils/VerificationService;->b:J
return-void
.end method
.method public constructor <init>()V
.locals 2
const-string v0, "VerificationService"
invoke-direct {p0, v0}, Landroid/app/IntentService;-><init>(Ljava/lang/String;)V
const/4 v0, 0x1
invoke-virtual {p0, v0}, Landroid/app/IntentService;->setIntentRedelivery(Z)V
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
iput-wide v0, p0, Lru/mail/libverify/utils/VerificationService;->d:J
return-void
.end method
.method public static a()V
.locals 2
const-string v0, "VerificationService"
const-string v1, "releaseAll"
invoke-static {v0, v1}, Lru/mail/libverify/utils/d;->c(Ljava/lang/String;Ljava/lang/String;)V
sget-object v0, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentHashMap;->clear()V
invoke-static {}, Lru/mail/libverify/utils/VerificationService;->b()V
sget-object v0, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
monitor-enter v0
:try_start_0
sget-object v1, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
invoke-virtual {v1}, Ljava/lang/Object;->notify()V
monitor-exit v0
return-void
:catchall_0
move-exception v1
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
throw v1
.end method
.method private static declared-synchronized a(Landroid/content/Context;)V
.locals 6
.param p0 # Landroid/content/Context;
.annotation build Landroidx/annotation/NonNull;
.end annotation
.end param
const-class v0, Lru/mail/libverify/utils/VerificationService;
monitor-enter v0
:try_start_0
sget-object v1, Lru/mail/libverify/utils/VerificationService;->c:Landroid/os/PowerManager$WakeLock;
if-eqz v1, :cond_1
sget-object v1, Lru/mail/libverify/utils/VerificationService;->c:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v1}, Landroid/os/PowerManager$WakeLock;->isHeld()Z
move-result v1
if-nez v1, :cond_0
goto :goto_0
:cond_0
const-string p0, "VerificationService"
const-string v1, "wake lock has been already acquired"
invoke-static {p0, v1}, Lru/mail/libverify/utils/d;->b(Ljava/lang/String;Ljava/lang/String;)V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
monitor-exit v0
return-void
:cond_1
:goto_0
:try_start_1
const-string v1, "power"
invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object p0
check-cast p0, Landroid/os/PowerManager;
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
if-nez p0, :cond_2
monitor-exit v0
return-void
:cond_2
:try_start_2
const-string v1, "VerificationService"
const/4 v2, 0x1
invoke-virtual {p0, v2, v1}, Landroid/os/PowerManager;->newWakeLock(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock;
move-result-object p0
sput-object p0, Lru/mail/libverify/utils/VerificationService;->c:Landroid/os/PowerManager$WakeLock;
const-wide/32 v3, 0xea60
invoke-virtual {p0, v3, v4}, Landroid/os/PowerManager$WakeLock;->acquire(J)V
sget-object p0, Lru/mail/libverify/utils/VerificationService;->c:Landroid/os/PowerManager$WakeLock;
const/4 v1, 0x0
invoke-virtual {p0, v1}, Landroid/os/PowerManager$WakeLock;->setReferenceCounted(Z)V
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v3
sput-wide v3, Lru/mail/libverify/utils/VerificationService;->b:J
const-string p0, "VerificationService"
const-string v3, "wake lock acquired (timestamp: %d)"
new-array v2, v2, [Ljava/lang/Object;
sget-wide v4, Lru/mail/libverify/utils/VerificationService;->b:J
invoke-static {v4, v5}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v4
aput-object v4, v2, v1
invoke-static {p0, v3, v2}, Lru/mail/libverify/utils/d;->b(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
:try_end_2
.catchall {:try_start_2 .. :try_end_2} :catchall_0
monitor-exit v0
return-void
:catchall_0
move-exception p0
:try_start_3
const-string v1, "VerificationService"
const-string v2, "failed to acquire wake lock"
invoke-static {v1, v2, p0}, Lru/mail/libverify/utils/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:try_end_3
.catchall {:try_start_3 .. :try_end_3} :catchall_1
monitor-exit v0
return-void
:catchall_1
move-exception p0
monitor-exit v0
throw p0
.end method
.method public static a(Landroid/content/Context;Ljava/lang/Object;Z)V
.locals 3
.param p0 # Landroid/content/Context;
.annotation build Landroidx/annotation/NonNull;
.end annotation
.end param
.param p1 # Ljava/lang/Object;
.annotation build Landroidx/annotation/NonNull;
.end annotation
.end param
invoke-static {p1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
const-string v1, "acquire "
invoke-virtual {v1, v0}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
const-string v1, "VerificationService"
invoke-static {v1, v0}, Lru/mail/libverify/utils/d;->c(Ljava/lang/String;Ljava/lang/String;)V
sget-object v0, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
invoke-virtual {v0, p1}, Ljava/util/concurrent/ConcurrentHashMap;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_1
new-instance v0, Lru/mail/libverify/utils/VerificationService$a;
const/4 v2, 0x0
invoke-direct {v0, p2, v2}, Lru/mail/libverify/utils/VerificationService$a;-><init>(ZB)V
sget-object p2, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
invoke-virtual {p2, p1, v0}, Ljava/util/concurrent/ConcurrentHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
iget-boolean p1, v0, Lru/mail/libverify/utils/VerificationService$a;->a:Z
if-eqz p1, :cond_0
invoke-static {p0}, Lru/mail/libverify/utils/VerificationService;->a(Landroid/content/Context;)V
:cond_0
:try_start_0
new-instance p1, Landroid/content/Intent;
const-class p2, Lru/mail/libverify/utils/VerificationService;
invoke-direct {p1, p0, p2}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
invoke-virtual {p0, p1}, Landroid/content/Context;->startService(Landroid/content/Intent;)Landroid/content/ComponentName;
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
return-void
:catchall_0
move-exception p0
const-string p1, "failed to start verification service"
invoke-static {v1, p1, p0}, Lru/mail/libverify/utils/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:cond_1
return-void
.end method
.method public static a(Ljava/lang/Object;)V
.locals 7
.param p0 # Ljava/lang/Object;
.annotation build Landroidx/annotation/NonNull;
.end annotation
.end param
sget-object v0, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
invoke-virtual {v0, p0}, Ljava/util/concurrent/ConcurrentHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lru/mail/libverify/utils/VerificationService$a;
const/4 v1, 0x2
new-array v2, v1, [Ljava/lang/Object;
const/4 v3, 0x0
aput-object p0, v2, v3
const/4 v4, 0x1
aput-object v0, v2, v4
const-string v5, "VerificationService"
const-string v6, "release %s, action %s"
invoke-static {v5, v6, v2}, Lru/mail/libverify/utils/d;->c(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
if-eqz v0, :cond_0
new-array v1, v1, [Ljava/lang/Object;
aput-object p0, v1, v3
aput-object v0, v1, v4
const-string p0, "VerificationService"
const-string v2, "release owner %s with action %s"
invoke-static {p0, v2, v1}, Lru/mail/libverify/utils/d;->c(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
sget-object p0, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
invoke-virtual {p0}, Ljava/util/concurrent/ConcurrentHashMap;->size()I
move-result p0
if-nez p0, :cond_1
sget-object p0, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
monitor-enter p0
:try_start_0
sget-object v1, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
invoke-virtual {v1}, Ljava/lang/Object;->notify()V
monitor-exit p0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
iget-boolean p0, v0, Lru/mail/libverify/utils/VerificationService$a;->a:Z
if-eqz p0, :cond_1
invoke-static {}, Lru/mail/libverify/utils/VerificationService;->b()V
return-void
:catchall_0
move-exception v0
:try_start_1
monitor-exit p0
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
throw v0
:cond_0
new-array v0, v4, [Ljava/lang/Object;
aput-object p0, v0, v3
const-string p0, "VerificationService"
const-string v1, "no actions to release for owner %s"
invoke-static {p0, v1, v0}, Lru/mail/libverify/utils/d;->a(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
:cond_1
return-void
.end method
.method private static declared-synchronized b()V
.locals 9
const-class v0, Lru/mail/libverify/utils/VerificationService;
monitor-enter v0
:try_start_0
sget-object v1, Lru/mail/libverify/utils/VerificationService;->c:Landroid/os/PowerManager$WakeLock;
if-eqz v1, :cond_1
sget-object v1, Lru/mail/libverify/utils/VerificationService;->c:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v1}, Landroid/os/PowerManager$WakeLock;->isHeld()Z
move-result v1
if-eqz v1, :cond_0
sget-object v1, Lru/mail/libverify/utils/VerificationService;->c:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v1}, Landroid/os/PowerManager$WakeLock;->release()V
sget-object v1, Lru/mail/libverify/utils/VerificationService;->c:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v1}, Landroid/os/PowerManager$WakeLock;->release()V
:cond_0
const-string v1, "VerificationService"
const-string v2, "wake lock released (held for time: %d)"
const/4 v3, 0x1
new-array v3, v3, [Ljava/lang/Object;
const/4 v4, 0x0
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v5
sget-wide v7, Lru/mail/libverify/utils/VerificationService;->b:J
sub-long/2addr v5, v7
invoke-static {v5, v6}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v5
aput-object v5, v3, v4
invoke-static {v1, v2, v3}, Lru/mail/libverify/utils/d;->b(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
const/4 v1, 0x0
sput-object v1, Lru/mail/libverify/utils/VerificationService;->c:Landroid/os/PowerManager$WakeLock;
const-wide/16 v1, 0x0
sput-wide v1, Lru/mail/libverify/utils/VerificationService;->b:J
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
:cond_1
monitor-exit v0
return-void
:catchall_0
move-exception v1
:try_start_1
const-string v2, "VerificationService"
const-string v3, "failed to release wake lock"
invoke-static {v2, v3, v1}, Lru/mail/libverify/utils/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_1
monitor-exit v0
return-void
:catchall_1
move-exception v1
monitor-exit v0
throw v1
.end method
.method private static declared-synchronized c()V
.locals 6
const-class v0, Lru/mail/libverify/utils/VerificationService;
monitor-enter v0
:try_start_0
sget-object v1, Lru/mail/libverify/utils/VerificationService;->c:Landroid/os/PowerManager$WakeLock;
if-eqz v1, :cond_1
sget-object v1, Lru/mail/libverify/utils/VerificationService;->c:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v1}, Landroid/os/PowerManager$WakeLock;->isHeld()Z
move-result v1
if-eqz v1, :cond_1
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v1
sget-wide v3, Lru/mail/libverify/utils/VerificationService;->b:J
sub-long/2addr v1, v3
const-wide/16 v3, 0x0
cmp-long v5, v1, v3
if-ltz v5, :cond_0
const-wide/32 v3, 0xea60
cmp-long v5, v1, v3
if-lez v5, :cond_1
:cond_0
invoke-static {}, Lru/mail/libverify/utils/VerificationService;->b()V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
:cond_1
monitor-exit v0
return-void
:catchall_0
move-exception v1
:try_start_1
const-string v2, "VerificationService"
const-string v3, "failed to check wake lock expiration"
invoke-static {v2, v3, v1}, Lru/mail/libverify/utils/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_1
monitor-exit v0
return-void
:catchall_1
move-exception v1
monitor-exit v0
throw v1
.end method
# virtual methods
.method public onDestroy()V
.locals 2
const-string v0, "VerificationService"
const-string v1, "service destroyed"
invoke-static {v0, v1}, Lru/mail/libverify/utils/d;->c(Ljava/lang/String;Ljava/lang/String;)V
sget-object v0, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentHashMap;->clear()V
invoke-static {}, Lru/mail/libverify/utils/VerificationService;->b()V
invoke-super {p0}, Landroid/app/IntentService;->onDestroy()V
return-void
.end method
.method protected onHandleIntent(Landroid/content/Intent;)V
.locals 4
const-string p1, "VerificationService"
const-string v0, "onHandleIntent started"
invoke-static {p1, v0}, Lru/mail/libverify/utils/d;->c(Ljava/lang/String;Ljava/lang/String;)V
:goto_0
sget-object p1, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
invoke-virtual {p1}, Ljava/util/concurrent/ConcurrentHashMap;->size()I
move-result p1
if-lez p1, :cond_2
new-instance p1, Ljava/lang/StringBuilder;
const-string v0, "onHandleIntent wait loop "
invoke-direct {p1, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
sget-object v0, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentHashMap;->size()I
move-result v0
invoke-static {v0}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
move-result-object v0
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
const-string v0, "VerificationService"
invoke-static {v0, p1}, Lru/mail/libverify/utils/d;->c(Ljava/lang/String;Ljava/lang/String;)V
:try_start_0
sget-object p1, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
monitor-enter p1
:try_end_0
.catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_0
:try_start_1
sget-object v0, Lru/mail/libverify/utils/VerificationService;->a:Ljava/util/concurrent/ConcurrentHashMap;
const-wide/16 v1, 0x7530
invoke-virtual {v0, v1, v2}, Ljava/lang/Object;->wait(J)V
monitor-exit p1
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
iget-wide v2, p0, Lru/mail/libverify/utils/VerificationService;->d:J
sub-long/2addr v0, v2
const-wide/16 v2, 0x0
cmp-long p1, v0, v2
if-ltz p1, :cond_1
const-wide/32 v2, 0x493e0
cmp-long p1, v0, v2
if-lez p1, :cond_0
goto :goto_1
:cond_0
invoke-static {}, Lru/mail/libverify/utils/VerificationService;->c()V
goto :goto_0
:cond_1
:goto_1
const-string p1, "VerificationService"
const-string v0, "onHandleIntent wait for keep alive operation expired"
invoke-static {p1, v0}, Lru/mail/libverify/utils/d;->c(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_2
:catchall_0
move-exception v0
:try_start_2
monitor-exit p1
:try_end_2
.catchall {:try_start_2 .. :try_end_2} :catchall_0
:try_start_3
throw v0
:try_end_3
.catch Ljava/lang/InterruptedException; {:try_start_3 .. :try_end_3} :catch_0
:catch_0
move-exception p1
const-string v0, "VerificationService"
const-string v1, "onHandleIntent wait failed"
invoke-static {v0, v1, p1}, Lru/mail/libverify/utils/d;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:cond_2
:goto_2
const-string p1, "VerificationService"
const-string v0, "onHandleIntent completed"
invoke-static {p1, v0}, Lru/mail/libverify/utils/d;->c(Ljava/lang/String;Ljava/lang/String;)V
return-void
.end method
.method public onStartCommand(Landroid/content/Intent;II)I
.locals 2
const-string v0, "VerificationService"
const-string v1, "onStartCommand"
invoke-static {v0, v1}, Lru/mail/libverify/utils/d;->c(Ljava/lang/String;Ljava/lang/String;)V
invoke-super {p0, p1, p2, p3}, Landroid/app/IntentService;->onStartCommand(Landroid/content/Intent;II)I
move-result p1
return p1
.end method