EarlyTraceEvent.smali
.class public Laegon/chrome/base/EarlyTraceEvent;
.super Ljava/lang/Object;
# annotations
.annotation runtime Laegon/chrome/base/annotations/JNINamespace;
value = "base::android"
.end annotation
.annotation build Laegon/chrome/base/annotations/MainDex;
.end annotation
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;,
Laegon/chrome/base/EarlyTraceEvent$Event;
}
.end annotation
# static fields
.field private static final BACKGROUND_STARTUP_TRACING_ENABLED_KEY:Ljava/lang/String; = "bg_startup_tracing"
.field static final STATE_DISABLED:I = 0x0
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
.end field
.field static final STATE_ENABLED:I = 0x1
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
.end field
.field static final STATE_FINISHED:I = 0x3
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
.end field
.field static final STATE_FINISHING:I = 0x2
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
.end field
.field private static final TRACE_CONFIG_FILENAME:Ljava/lang/String; = "/data/local/chrome-trace-config.json"
.field static sAsyncEvents:Ljava/util/List;
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List",
"<",
"Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;",
">;"
}
.end annotation
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "sLock"
.end annotation
.end field
.field private static sCachedBackgroundStartupTracingFlag:Z
.field static sCompletedEvents:Ljava/util/List;
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List",
"<",
"Laegon/chrome/base/EarlyTraceEvent$Event;",
">;"
}
.end annotation
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "sLock"
.end annotation
.end field
.field private static final sLock:Ljava/lang/Object;
.field static sPendingAsyncEvents:Ljava/util/List;
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List",
"<",
"Ljava/lang/String;",
">;"
}
.end annotation
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "sLock"
.end annotation
.end field
.field static sPendingEventByKey:Ljava/util/Map;
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map",
"<",
"Ljava/lang/String;",
"Laegon/chrome/base/EarlyTraceEvent$Event;",
">;"
}
.end annotation
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "sLock"
.end annotation
.end field
.field static volatile sState:I
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 1
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
sput-object v0, Laegon/chrome/base/EarlyTraceEvent;->sLock:Ljava/lang/Object;
const/4 v0, 0x0
sput v0, Laegon/chrome/base/EarlyTraceEvent;->sState:I
return-void
.end method
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static begin(Ljava/lang/String;)V
.registers 5
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->enabled()Z
move-result v0
if-nez v0, :cond_7
:cond_6
:goto_6
return-void
:cond_7
new-instance v0, Laegon/chrome/base/EarlyTraceEvent$Event;
invoke-direct {v0, p0}, Laegon/chrome/base/EarlyTraceEvent$Event;-><init>(Ljava/lang/String;)V
sget-object v1, Laegon/chrome/base/EarlyTraceEvent;->sLock:Ljava/lang/Object;
monitor-enter v1
:try_start_f
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->enabled()Z
move-result v2
if-nez v2, :cond_1a
monitor-exit v1
goto :goto_6
:catchall_17
move-exception v0
monitor-exit v1
:try_end_19
.catchall {:try_start_f .. :try_end_19} :catchall_17
throw v0
:cond_1a
:try_start_1a
sget-object v2, Laegon/chrome/base/EarlyTraceEvent;->sPendingEventByKey:Ljava/util/Map;
invoke-static {p0}, Laegon/chrome/base/EarlyTraceEvent;->makeEventKeyForCurrentThread(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
invoke-interface {v2, v3, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Laegon/chrome/base/EarlyTraceEvent$Event;
monitor-exit v1
:try_end_27
.catchall {:try_start_1a .. :try_end_27} :catchall_17
if-eqz v0, :cond_6
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Multiple pending trace events can\'t have the same name: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p0}, 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-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method static disable()V
.registers 2
sget-object v1, Laegon/chrome/base/EarlyTraceEvent;->sLock:Ljava/lang/Object;
monitor-enter v1
:try_start_3
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->enabled()Z
move-result v0
if-nez v0, :cond_b
monitor-exit v1
:goto_a
return-void
:cond_b
const/4 v0, 0x2
sput v0, Laegon/chrome/base/EarlyTraceEvent;->sState:I
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->maybeFinishLocked()V
monitor-exit v1
goto :goto_a
:catchall_13
move-exception v0
monitor-exit v1
:try_end_15
.catchall {:try_start_3 .. :try_end_15} :catchall_13
throw v0
.end method
.method private static dumpAsyncEvents(Ljava/util/List;)V
.registers 11
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;",
">;)V"
}
.end annotation
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->getOffsetNanos()J
move-result-wide v2
invoke-interface {p0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_8
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_2e
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;
iget-boolean v4, v0, Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;->mIsStart:Z
if-eqz v4, :cond_23
iget-object v4, v0, Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;->mName:Ljava/lang/String;
iget-wide v6, v0, Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;->mId:J
iget-wide v8, v0, Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;->mTimestampNanos:J
add-long/2addr v8, v2
invoke-static {v4, v6, v7, v8, v9}, Laegon/chrome/base/EarlyTraceEvent;->nativeRecordEarlyStartAsyncEvent(Ljava/lang/String;JJ)V
goto :goto_8
:cond_23
iget-object v4, v0, Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;->mName:Ljava/lang/String;
iget-wide v6, v0, Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;->mId:J
iget-wide v8, v0, Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;->mTimestampNanos:J
add-long/2addr v8, v2
invoke-static {v4, v6, v7, v8, v9}, Laegon/chrome/base/EarlyTraceEvent;->nativeRecordEarlyFinishAsyncEvent(Ljava/lang/String;JJ)V
goto :goto_8
:cond_2e
return-void
.end method
.method private static dumpEvents(Ljava/util/List;)V
.registers 17
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Laegon/chrome/base/EarlyTraceEvent$Event;",
">;)V"
}
.end annotation
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->getOffsetNanos()J
move-result-wide v10
invoke-interface/range {p0 .. p0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v9
:goto_8
invoke-interface {v9}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_28
invoke-interface {v9}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Laegon/chrome/base/EarlyTraceEvent$Event;
iget-object v1, v0, Laegon/chrome/base/EarlyTraceEvent$Event;->mName:Ljava/lang/String;
iget-wide v2, v0, Laegon/chrome/base/EarlyTraceEvent$Event;->mBeginTimeNanos:J
add-long/2addr v2, v10
iget-wide v4, v0, Laegon/chrome/base/EarlyTraceEvent$Event;->mEndTimeNanos:J
add-long/2addr v4, v10
iget v6, v0, Laegon/chrome/base/EarlyTraceEvent$Event;->mThreadId:I
iget-wide v12, v0, Laegon/chrome/base/EarlyTraceEvent$Event;->mEndThreadTimeMillis:J
iget-wide v14, v0, Laegon/chrome/base/EarlyTraceEvent$Event;->mBeginThreadTimeMillis:J
sub-long v7, v12, v14
invoke-static/range {v1 .. v8}, Laegon/chrome/base/EarlyTraceEvent;->nativeRecordEarlyEvent(Ljava/lang/String;JJIJ)V
goto :goto_8
:cond_28
return-void
.end method
.method static enable()V
.registers 2
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
sget-object v1, Laegon/chrome/base/EarlyTraceEvent;->sLock:Ljava/lang/Object;
monitor-enter v1
:try_start_3
sget v0, Laegon/chrome/base/EarlyTraceEvent;->sState:I
if-eqz v0, :cond_9
monitor-exit v1
:goto_8
return-void
:cond_9
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
sput-object v0, Laegon/chrome/base/EarlyTraceEvent;->sCompletedEvents:Ljava/util/List;
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
sput-object v0, Laegon/chrome/base/EarlyTraceEvent;->sPendingEventByKey:Ljava/util/Map;
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
sput-object v0, Laegon/chrome/base/EarlyTraceEvent;->sAsyncEvents:Ljava/util/List;
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
sput-object v0, Laegon/chrome/base/EarlyTraceEvent;->sPendingAsyncEvents:Ljava/util/List;
const/4 v0, 0x1
sput v0, Laegon/chrome/base/EarlyTraceEvent;->sState:I
monitor-exit v1
goto :goto_8
:catchall_2a
move-exception v0
monitor-exit v1
:try_end_2c
.catchall {:try_start_3 .. :try_end_2c} :catchall_2a
throw v0
.end method
.method static enabled()Z
.registers 2
const/4 v0, 0x1
sget v1, Laegon/chrome/base/EarlyTraceEvent;->sState:I
if-ne v1, v0, :cond_6
:goto_5
return v0
:cond_6
const/4 v0, 0x0
goto :goto_5
.end method
.method public static end(Ljava/lang/String;)V
.registers 4
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->isActive()Z
move-result v0
if-nez v0, :cond_7
:goto_6
return-void
:cond_7
sget-object v1, Laegon/chrome/base/EarlyTraceEvent;->sLock:Ljava/lang/Object;
monitor-enter v1
:try_start_a
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->isActive()Z
move-result v0
if-nez v0, :cond_15
monitor-exit v1
goto :goto_6
:catchall_12
move-exception v0
monitor-exit v1
:try_end_14
.catchall {:try_start_a .. :try_end_14} :catchall_12
throw v0
:cond_15
:try_start_15
sget-object v0, Laegon/chrome/base/EarlyTraceEvent;->sPendingEventByKey:Ljava/util/Map;
invoke-static {p0}, Laegon/chrome/base/EarlyTraceEvent;->makeEventKeyForCurrentThread(Ljava/lang/String;)Ljava/lang/String;
move-result-object v2
invoke-interface {v0, v2}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Laegon/chrome/base/EarlyTraceEvent$Event;
if-nez v0, :cond_25
monitor-exit v1
goto :goto_6
:cond_25
invoke-virtual {v0}, Laegon/chrome/base/EarlyTraceEvent$Event;->end()V
sget-object v2, Laegon/chrome/base/EarlyTraceEvent;->sCompletedEvents:Ljava/util/List;
invoke-interface {v2, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
sget v0, Laegon/chrome/base/EarlyTraceEvent;->sState:I
const/4 v2, 0x2
if-ne v0, v2, :cond_35
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->maybeFinishLocked()V
:cond_35
monitor-exit v1
:try_end_36
.catchall {:try_start_15 .. :try_end_36} :catchall_12
goto :goto_6
.end method
.method public static finishAsync(Ljava/lang/String;J)V
.registers 6
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->isActive()Z
move-result v0
if-nez v0, :cond_7
:goto_6
return-void
:cond_7
new-instance v0, Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;
const/4 v1, 0x0
invoke-direct {v0, p0, p1, p2, v1}, Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;-><init>(Ljava/lang/String;JZ)V
sget-object v1, Laegon/chrome/base/EarlyTraceEvent;->sLock:Ljava/lang/Object;
monitor-enter v1
:try_start_10
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->isActive()Z
move-result v2
if-nez v2, :cond_1b
monitor-exit v1
goto :goto_6
:catchall_18
move-exception v0
monitor-exit v1
:try_end_1a
.catchall {:try_start_10 .. :try_end_1a} :catchall_18
throw v0
:cond_1b
:try_start_1b
sget-object v2, Laegon/chrome/base/EarlyTraceEvent;->sPendingAsyncEvents:Ljava/util/List;
invoke-interface {v2, p0}, Ljava/util/List;->remove(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_25
monitor-exit v1
goto :goto_6
:cond_25
sget-object v2, Laegon/chrome/base/EarlyTraceEvent;->sAsyncEvents:Ljava/util/List;
invoke-interface {v2, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
sget v0, Laegon/chrome/base/EarlyTraceEvent;->sState:I
const/4 v2, 0x2
if-ne v0, v2, :cond_32
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->maybeFinishLocked()V
:cond_32
monitor-exit v1
:try_end_33
.catchall {:try_start_1b .. :try_end_33} :catchall_18
goto :goto_6
.end method
.method public static getBackgroundStartupTracingFlag()Z
.registers 1
.annotation build Laegon/chrome/base/annotations/CalledByNative;
.end annotation
sget-boolean v0, Laegon/chrome/base/EarlyTraceEvent;->sCachedBackgroundStartupTracingFlag:Z
return v0
.end method
.method private static getOffsetNanos()J
.registers 4
invoke-static {}, Laegon/chrome/base/TimeUtils;->nativeGetTimeTicksNowUs()J
move-result-wide v0
const-wide/16 v2, 0x3e8
mul-long/2addr v0, v2
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent$Event;->elapsedRealtimeNanos()J
move-result-wide v2
sub-long/2addr v0, v2
return-wide v0
.end method
.method static isActive()Z
.registers 3
const/4 v0, 0x1
sget v1, Laegon/chrome/base/EarlyTraceEvent;->sState:I
if-eq v1, v0, :cond_8
const/4 v2, 0x2
if-ne v1, v2, :cond_9
:cond_8
:goto_8
return v0
:cond_9
const/4 v0, 0x0
goto :goto_8
.end method
.method static makeEventKeyForCurrentThread(Ljava/lang/String;)Ljava/lang/String;
.registers 3
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "@"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-static {}, Landroid/os/Process;->myTid()I
move-result v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method static maybeEnable()V
.registers 6
const/4 v1, 0x1
const/4 v0, 0x0
invoke-static {}, Laegon/chrome/base/ThreadUtils;->assertOnUiThread()V
sget v2, Laegon/chrome/base/EarlyTraceEvent;->sState:I
if-eqz v2, :cond_a
:cond_9
:goto_9
return-void
:cond_a
invoke-static {}, Landroid/os/StrictMode;->allowThreadDiskReads()Landroid/os/StrictMode$ThreadPolicy;
move-result-object v2
:try_start_e
invoke-static {}, Laegon/chrome/base/CommandLine;->getInstance()Laegon/chrome/base/CommandLine;
move-result-object v3
const-string v4, "trace-startup"
invoke-virtual {v3, v4}, Laegon/chrome/base/CommandLine;->hasSwitch(Ljava/lang/String;)Z
move-result v3
if-eqz v3, :cond_3a
move v0, v1
:goto_1b
invoke-static {}, Laegon/chrome/base/ContextUtils;->getAppSharedPreferences()Landroid/content/SharedPreferences;
move-result-object v3
const-string v4, "bg_startup_tracing"
const/4 v5, 0x0
invoke-interface {v3, v4, v5}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z
move-result v3
if-eqz v3, :cond_31
if-eqz v0, :cond_46
const/4 v1, 0x0
invoke-static {v1}, Laegon/chrome/base/EarlyTraceEvent;->setBackgroundStartupTracingFlag(Z)V
const/4 v1, 0x0
sput-boolean v1, Laegon/chrome/base/EarlyTraceEvent;->sCachedBackgroundStartupTracingFlag:Z
:try_end_31
.catchall {:try_start_e .. :try_end_31} :catchall_4b
:cond_31
:goto_31
invoke-static {v2}, Landroid/os/StrictMode;->setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V
if-eqz v0, :cond_9
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->enable()V
goto :goto_9
:cond_3a
:try_start_3a
new-instance v3, Ljava/io/File;
const-string v4, "/data/local/chrome-trace-config.json"
invoke-direct {v3, v4}, Ljava/io/File;-><init>(Ljava/lang/String;)V
invoke-virtual {v3}, Ljava/io/File;->exists()Z
:try_end_44
.catch Ljava/lang/SecurityException; {:try_start_3a .. :try_end_44} :catch_50
.catchall {:try_start_3a .. :try_end_44} :catchall_4b
move-result v0
goto :goto_1b
:cond_46
const/4 v0, 0x1
:try_start_47
sput-boolean v0, Laegon/chrome/base/EarlyTraceEvent;->sCachedBackgroundStartupTracingFlag:Z
:try_end_49
.catchall {:try_start_47 .. :try_end_49} :catchall_4b
move v0, v1
goto :goto_31
:catchall_4b
move-exception v0
invoke-static {v2}, Landroid/os/StrictMode;->setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V
throw v0
:catch_50
move-exception v3
goto :goto_1b
.end method
.method private static maybeFinishLocked()V
.registers 2
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "sLock"
.end annotation
const/4 v1, 0x0
sget-object v0, Laegon/chrome/base/EarlyTraceEvent;->sCompletedEvents:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->isEmpty()Z
move-result v0
if-nez v0, :cond_13
sget-object v0, Laegon/chrome/base/EarlyTraceEvent;->sCompletedEvents:Ljava/util/List;
invoke-static {v0}, Laegon/chrome/base/EarlyTraceEvent;->dumpEvents(Ljava/util/List;)V
sget-object v0, Laegon/chrome/base/EarlyTraceEvent;->sCompletedEvents:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->clear()V
:cond_13
sget-object v0, Laegon/chrome/base/EarlyTraceEvent;->sAsyncEvents:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->isEmpty()Z
move-result v0
if-nez v0, :cond_25
sget-object v0, Laegon/chrome/base/EarlyTraceEvent;->sAsyncEvents:Ljava/util/List;
invoke-static {v0}, Laegon/chrome/base/EarlyTraceEvent;->dumpAsyncEvents(Ljava/util/List;)V
sget-object v0, Laegon/chrome/base/EarlyTraceEvent;->sAsyncEvents:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->clear()V
:cond_25
sget-object v0, Laegon/chrome/base/EarlyTraceEvent;->sPendingEventByKey:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->isEmpty()Z
move-result v0
if-eqz v0, :cond_40
sget-object v0, Laegon/chrome/base/EarlyTraceEvent;->sPendingAsyncEvents:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->isEmpty()Z
move-result v0
if-eqz v0, :cond_40
const/4 v0, 0x3
sput v0, Laegon/chrome/base/EarlyTraceEvent;->sState:I
sput-object v1, Laegon/chrome/base/EarlyTraceEvent;->sPendingEventByKey:Ljava/util/Map;
sput-object v1, Laegon/chrome/base/EarlyTraceEvent;->sCompletedEvents:Ljava/util/List;
sput-object v1, Laegon/chrome/base/EarlyTraceEvent;->sPendingAsyncEvents:Ljava/util/List;
sput-object v1, Laegon/chrome/base/EarlyTraceEvent;->sAsyncEvents:Ljava/util/List;
:cond_40
return-void
.end method
.method private static native nativeRecordEarlyEvent(Ljava/lang/String;JJIJ)V
.end method
.method private static native nativeRecordEarlyFinishAsyncEvent(Ljava/lang/String;JJ)V
.end method
.method private static native nativeRecordEarlyStartAsyncEvent(Ljava/lang/String;JJ)V
.end method
.method static resetForTesting()V
.registers 2
.annotation build Laegon/chrome/base/VisibleForTesting;
.end annotation
sget-object v1, Laegon/chrome/base/EarlyTraceEvent;->sLock:Ljava/lang/Object;
monitor-enter v1
const/4 v0, 0x0
:try_start_4
sput v0, Laegon/chrome/base/EarlyTraceEvent;->sState:I
const/4 v0, 0x0
sput-object v0, Laegon/chrome/base/EarlyTraceEvent;->sCompletedEvents:Ljava/util/List;
const/4 v0, 0x0
sput-object v0, Laegon/chrome/base/EarlyTraceEvent;->sPendingEventByKey:Ljava/util/Map;
const/4 v0, 0x0
sput-object v0, Laegon/chrome/base/EarlyTraceEvent;->sAsyncEvents:Ljava/util/List;
const/4 v0, 0x0
sput-object v0, Laegon/chrome/base/EarlyTraceEvent;->sPendingAsyncEvents:Ljava/util/List;
monitor-exit v1
return-void
:catchall_14
move-exception v0
monitor-exit v1
:try_end_16
.catchall {:try_start_4 .. :try_end_16} :catchall_14
throw v0
.end method
.method static setBackgroundStartupTracingFlag(Z)V
.registers 3
.annotation build Laegon/chrome/base/annotations/CalledByNative;
.end annotation
invoke-static {}, Laegon/chrome/base/ContextUtils;->getAppSharedPreferences()Landroid/content/SharedPreferences;
move-result-object v0
invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;
move-result-object v0
const-string v1, "bg_startup_tracing"
invoke-interface {v0, v1, p0}, Landroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor;
move-result-object v0
invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->apply()V
return-void
.end method
.method public static startAsync(Ljava/lang/String;J)V
.registers 6
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->enabled()Z
move-result v0
if-nez v0, :cond_7
:goto_6
return-void
:cond_7
new-instance v0, Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;
const/4 v1, 0x1
invoke-direct {v0, p0, p1, p2, v1}, Laegon/chrome/base/EarlyTraceEvent$AsyncEvent;-><init>(Ljava/lang/String;JZ)V
sget-object v1, Laegon/chrome/base/EarlyTraceEvent;->sLock:Ljava/lang/Object;
monitor-enter v1
:try_start_10
invoke-static {}, Laegon/chrome/base/EarlyTraceEvent;->enabled()Z
move-result v2
if-nez v2, :cond_1b
monitor-exit v1
goto :goto_6
:catchall_18
move-exception v0
monitor-exit v1
:try_end_1a
.catchall {:try_start_10 .. :try_end_1a} :catchall_18
throw v0
:cond_1b
:try_start_1b
sget-object v2, Laegon/chrome/base/EarlyTraceEvent;->sAsyncEvents:Ljava/util/List;
invoke-interface {v2, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
sget-object v0, Laegon/chrome/base/EarlyTraceEvent;->sPendingAsyncEvents:Ljava/util/List;
invoke-interface {v0, p0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
monitor-exit v1
:try_end_26
.catchall {:try_start_1b .. :try_end_26} :catchall_18
goto :goto_6
.end method