Logging.smali

.class public Lorg/webrtc/ali/Logging;
.super Ljava/lang/Object;
.source "Logging.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lorg/webrtc/ali/Logging$Severity;,
        Lorg/webrtc/ali/Logging$TraceLevel;,
        Lorg/webrtc/ali/Logging$NativeLibStatus;
    }
.end annotation


# static fields
.field private static final fallbackLogger:Ljava/util/logging/Logger;

.field private static volatile loggingEnabled:Z

.field private static volatile nativeLibStatus:Lorg/webrtc/ali/Logging$NativeLibStatus;

.field private static volatile tracingEnabled:Z


# direct methods
.method static constructor <clinit>()V
    .registers 1

    .line 30
    invoke-static {}, Lorg/webrtc/ali/Logging;->createFallbackLogger()Ljava/util/logging/Logger;

    move-result-object v0

    sput-object v0, Lorg/webrtc/ali/Logging;->fallbackLogger:Ljava/util/logging/Logger;

    .line 34
    sget-object v0, Lorg/webrtc/ali/Logging$NativeLibStatus;->UNINITIALIZED:Lorg/webrtc/ali/Logging$NativeLibStatus;

    sput-object v0, Lorg/webrtc/ali/Logging;->nativeLibStatus:Lorg/webrtc/ali/Logging$NativeLibStatus;

    return-void
.end method

.method public constructor <init>()V
    .registers 1

    .line 29
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method private static createFallbackLogger()Ljava/util/logging/Logger;
    .registers 2

    .line 37
    const-string v0, "org.webrtc.Logging"

    invoke-static {v0}, Ljava/util/logging/Logger;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;

    move-result-object v0

    .line 38
    .local v0, "fallbackLogger":Ljava/util/logging/Logger;
    sget-object v1, Ljava/util/logging/Level;->ALL:Ljava/util/logging/Level;

    invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->setLevel(Ljava/util/logging/Level;)V

    .line 39
    return-object v0
.end method

.method public static d(Ljava/lang/String;Ljava/lang/String;)V
    .registers 3
    .param p0, "tag"    # Ljava/lang/String;
    .param p1, "message"    # Ljava/lang/String;

    .line 158
    sget-object v0, Lorg/webrtc/ali/Logging$Severity;->LS_INFO:Lorg/webrtc/ali/Logging$Severity;

    invoke-static {v0, p0, p1}, Lorg/webrtc/ali/Logging;->log(Lorg/webrtc/ali/Logging$Severity;Ljava/lang/String;Ljava/lang/String;)V

    .line 159
    return-void
.end method

.method public static e(Ljava/lang/String;Ljava/lang/String;)V
    .registers 3
    .param p0, "tag"    # Ljava/lang/String;
    .param p1, "message"    # Ljava/lang/String;

    .line 162
    sget-object v0, Lorg/webrtc/ali/Logging$Severity;->LS_ERROR:Lorg/webrtc/ali/Logging$Severity;

    invoke-static {v0, p0, p1}, Lorg/webrtc/ali/Logging;->log(Lorg/webrtc/ali/Logging$Severity;Ljava/lang/String;Ljava/lang/String;)V

    .line 163
    return-void
.end method

.method public static e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
    .registers 5
    .param p0, "tag"    # Ljava/lang/String;
    .param p1, "message"    # Ljava/lang/String;
    .param p2, "e"    # Ljava/lang/Throwable;

    .line 170
    sget-object v0, Lorg/webrtc/ali/Logging$Severity;->LS_ERROR:Lorg/webrtc/ali/Logging$Severity;

    invoke-static {v0, p0, p1}, Lorg/webrtc/ali/Logging;->log(Lorg/webrtc/ali/Logging$Severity;Ljava/lang/String;Ljava/lang/String;)V

    .line 171
    sget-object v0, Lorg/webrtc/ali/Logging$Severity;->LS_ERROR:Lorg/webrtc/ali/Logging$Severity;

    invoke-virtual {p2}, Ljava/lang/Throwable;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-static {v0, p0, v1}, Lorg/webrtc/ali/Logging;->log(Lorg/webrtc/ali/Logging$Severity;Ljava/lang/String;Ljava/lang/String;)V

    .line 172
    sget-object v0, Lorg/webrtc/ali/Logging$Severity;->LS_ERROR:Lorg/webrtc/ali/Logging$Severity;

    invoke-static {p2}, Lorg/webrtc/ali/Logging;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;

    move-result-object v1

    invoke-static {v0, p0, v1}, Lorg/webrtc/ali/Logging;->log(Lorg/webrtc/ali/Logging$Severity;Ljava/lang/String;Ljava/lang/String;)V

    .line 173
    return-void
.end method

.method public static enableLogThreads()V
    .registers 3

    .line 84
    invoke-static {}, Lorg/webrtc/ali/Logging;->loadNativeLibrary()Z

    move-result v0

    if-nez v0, :cond_10

    .line 85
    sget-object v0, Lorg/webrtc/ali/Logging;->fallbackLogger:Ljava/util/logging/Logger;

    sget-object v1, Ljava/util/logging/Level;->WARNING:Ljava/util/logging/Level;

    const-string v2, "Cannot enable log thread because native lib not loaded."

    invoke-virtual {v0, v1, v2}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V

    .line 86
    return-void

    .line 88
    :cond_10
    invoke-static {}, Lorg/webrtc/ali/Logging;->nativeEnableLogThreads()V

    .line 89
    return-void
.end method

.method public static enableLogTimeStamps()V
    .registers 3

    .line 92
    invoke-static {}, Lorg/webrtc/ali/Logging;->loadNativeLibrary()Z

    move-result v0

    if-nez v0, :cond_10

    .line 93
    sget-object v0, Lorg/webrtc/ali/Logging;->fallbackLogger:Ljava/util/logging/Logger;

    sget-object v1, Ljava/util/logging/Level;->WARNING:Ljava/util/logging/Level;

    const-string v2, "Cannot enable log timestamps because native lib not loaded."

    invoke-virtual {v0, v1, v2}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V

    .line 95
    return-void

    .line 97
    :cond_10
    invoke-static {}, Lorg/webrtc/ali/Logging;->nativeEnableLogTimeStamps()V

    .line 98
    return-void
.end method

.method public static declared-synchronized enableLogToDebugOutput(Lorg/webrtc/ali/Logging$Severity;)V
    .registers 5
    .param p0, "severity"    # Lorg/webrtc/ali/Logging$Severity;

    const-class v0, Lorg/webrtc/ali/Logging;

    monitor-enter v0

    .line 124
    :try_start_3
    invoke-static {}, Lorg/webrtc/ali/Logging;->loadNativeLibrary()Z

    move-result v1

    if-nez v1, :cond_14

    .line 125
    sget-object v1, Lorg/webrtc/ali/Logging;->fallbackLogger:Ljava/util/logging/Logger;

    sget-object v2, Ljava/util/logging/Level;->WARNING:Ljava/util/logging/Level;

    const-string v3, "Cannot enable logging because native lib not loaded."

    invoke-virtual {v1, v2, v3}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V
    :try_end_12
    .catchall {:try_start_3 .. :try_end_12} :catchall_20

    .line 126
    monitor-exit v0

    return-void

    .line 128
    :cond_14
    :try_start_14
    invoke-virtual {p0}, Lorg/webrtc/ali/Logging$Severity;->ordinal()I

    move-result v1

    invoke-static {v1}, Lorg/webrtc/ali/Logging;->nativeEnableLogToDebugOutput(I)V

    .line 129
    const/4 v1, 0x1

    sput-boolean v1, Lorg/webrtc/ali/Logging;->loggingEnabled:Z
    :try_end_1e
    .catchall {:try_start_14 .. :try_end_1e} :catchall_20

    .line 130
    monitor-exit v0

    return-void

    .line 123
    .end local p0    # "severity":Lorg/webrtc/ali/Logging$Severity;
    :catchall_20
    move-exception p0

    monitor-exit v0

    throw p0
.end method

.method public static declared-synchronized enableTracing(Ljava/lang/String;Ljava/util/EnumSet;)V
    .registers 7
    .param p0, "path"    # Ljava/lang/String;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/String;",
            "Ljava/util/EnumSet<",
            "Lorg/webrtc/ali/Logging$TraceLevel;",
            ">;)V"
        }
    .end annotation

    .local p1, "levels":Ljava/util/EnumSet;, "Ljava/util/EnumSet<Lorg/webrtc/ali/Logging$TraceLevel;>;"
    const-class v0, Lorg/webrtc/ali/Logging;

    monitor-enter v0

    .line 104
    :try_start_3
    invoke-static {}, Lorg/webrtc/ali/Logging;->loadNativeLibrary()Z

    move-result v1

    if-nez v1, :cond_14

    .line 105
    sget-object v1, Lorg/webrtc/ali/Logging;->fallbackLogger:Ljava/util/logging/Logger;

    sget-object v2, Ljava/util/logging/Level;->WARNING:Ljava/util/logging/Level;

    const-string v3, "Cannot enable tracing because native lib not loaded."

    invoke-virtual {v1, v2, v3}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V
    :try_end_12
    .catchall {:try_start_3 .. :try_end_12} :catchall_37

    .line 106
    monitor-exit v0

    return-void

    .line 109
    :cond_14
    :try_start_14
    sget-boolean v1, Lorg/webrtc/ali/Logging;->tracingEnabled:Z
    :try_end_16
    .catchall {:try_start_14 .. :try_end_16} :catchall_37

    if-eqz v1, :cond_1a

    .line 110
    monitor-exit v0

    return-void

    .line 112
    :cond_1a
    const/4 v1, 0x0

    .line 113
    .local v1, "nativeLevel":I
    :try_start_1b
    invoke-virtual {p1}, Ljava/util/EnumSet;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :goto_1f
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v3

    if-eqz v3, :cond_2f

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Lorg/webrtc/ali/Logging$TraceLevel;

    .line 114
    .local v3, "level":Lorg/webrtc/ali/Logging$TraceLevel;
    iget v4, v3, Lorg/webrtc/ali/Logging$TraceLevel;->level:I

    or-int/2addr v1, v4

    .line 115
    .end local v3    # "level":Lorg/webrtc/ali/Logging$TraceLevel;
    goto :goto_1f

    .line 116
    :cond_2f
    invoke-static {p0, v1}, Lorg/webrtc/ali/Logging;->nativeEnableTracing(Ljava/lang/String;I)V

    .line 117
    const/4 v2, 0x1

    sput-boolean v2, Lorg/webrtc/ali/Logging;->tracingEnabled:Z
    :try_end_35
    .catchall {:try_start_1b .. :try_end_35} :catchall_37

    .line 118
    monitor-exit v0

    return-void

    .line 103
    .end local v1    # "nativeLevel":I
    .end local p0    # "path":Ljava/lang/String;
    .end local p1    # "levels":Ljava/util/EnumSet;, "Ljava/util/EnumSet<Lorg/webrtc/ali/Logging$TraceLevel;>;"
    :catchall_37
    move-exception p0

    monitor-exit v0

    goto :goto_3b

    :goto_3a
    throw p0

    :goto_3b
    goto :goto_3a
.end method

.method private static getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;
    .registers 4
    .param p0, "e"    # Ljava/lang/Throwable;

    .line 186
    if-nez p0, :cond_5

    .line 187
    const-string v0, ""

    return-object v0

    .line 190
    :cond_5
    new-instance v0, Ljava/io/StringWriter;

    invoke-direct {v0}, Ljava/io/StringWriter;-><init>()V

    .line 191
    .local v0, "sw":Ljava/io/StringWriter;
    new-instance v1, Ljava/io/PrintWriter;

    invoke-direct {v1, v0}, Ljava/io/PrintWriter;-><init>(Ljava/io/Writer;)V

    .line 192
    .local v1, "pw":Ljava/io/PrintWriter;
    invoke-virtual {p0, v1}, Ljava/lang/Throwable;->printStackTrace(Ljava/io/PrintWriter;)V

    .line 193
    invoke-virtual {v0}, Ljava/io/StringWriter;->toString()Ljava/lang/String;

    move-result-object v2

    return-object v2
.end method

.method private static loadNativeLibrary()Z
    .registers 4

    .line 43
    sget-object v0, Lorg/webrtc/ali/Logging;->nativeLibStatus:Lorg/webrtc/ali/Logging$NativeLibStatus;

    sget-object v1, Lorg/webrtc/ali/Logging$NativeLibStatus;->UNINITIALIZED:Lorg/webrtc/ali/Logging$NativeLibStatus;

    if-ne v0, v1, :cond_19

    .line 47
    :try_start_6
    sget-object v0, Lorg/webrtc/ali/Logging$NativeLibStatus;->FAILED:Lorg/webrtc/ali/Logging$NativeLibStatus;

    sput-object v0, Lorg/webrtc/ali/Logging;->nativeLibStatus:Lorg/webrtc/ali/Logging$NativeLibStatus;
    :try_end_a
    .catch Ljava/lang/UnsatisfiedLinkError; {:try_start_6 .. :try_end_a} :catch_b

    .line 51
    goto :goto_19

    .line 48
    :catch_b
    move-exception v0

    .line 49
    .local v0, "t":Ljava/lang/UnsatisfiedLinkError;
    sget-object v1, Lorg/webrtc/ali/Logging$NativeLibStatus;->FAILED:Lorg/webrtc/ali/Logging$NativeLibStatus;

    sput-object v1, Lorg/webrtc/ali/Logging;->nativeLibStatus:Lorg/webrtc/ali/Logging$NativeLibStatus;

    .line 50
    sget-object v1, Lorg/webrtc/ali/Logging;->fallbackLogger:Ljava/util/logging/Logger;

    sget-object v2, Ljava/util/logging/Level;->WARNING:Ljava/util/logging/Level;

    const-string v3, "Failed to load jingle_peerconnection_so: "

    invoke-virtual {v1, v2, v3, v0}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 53
    .end local v0    # "t":Ljava/lang/UnsatisfiedLinkError;
    :cond_19
    :goto_19
    sget-object v0, Lorg/webrtc/ali/Logging;->nativeLibStatus:Lorg/webrtc/ali/Logging$NativeLibStatus;

    sget-object v1, Lorg/webrtc/ali/Logging$NativeLibStatus;->LOADED:Lorg/webrtc/ali/Logging$NativeLibStatus;

    if-ne v0, v1, :cond_21

    const/4 v0, 0x1

    goto :goto_22

    :cond_21
    const/4 v0, 0x0

    :goto_22
    return v0
.end method

.method public static log(Lorg/webrtc/ali/Logging$Severity;Ljava/lang/String;Ljava/lang/String;)V
    .registers 7
    .param p0, "severity"    # Lorg/webrtc/ali/Logging$Severity;
    .param p1, "tag"    # Ljava/lang/String;
    .param p2, "message"    # Ljava/lang/String;

    .line 133
    sget-boolean v0, Lorg/webrtc/ali/Logging;->loggingEnabled:Z

    if-eqz v0, :cond_c

    .line 134
    invoke-virtual {p0}, Lorg/webrtc/ali/Logging$Severity;->ordinal()I

    move-result v0

    invoke-static {v0, p1, p2}, Lorg/webrtc/ali/Logging;->nativeLog(ILjava/lang/String;Ljava/lang/String;)V

    .line 135
    return-void

    .line 140
    :cond_c
    sget-object v0, Lorg/webrtc/ali/Logging$1;->$SwitchMap$org$webrtc$ali$Logging$Severity:[I

    invoke-virtual {p0}, Lorg/webrtc/ali/Logging$Severity;->ordinal()I

    move-result v1

    aget v0, v0, v1

    const/4 v1, 0x1

    if-eq v0, v1, :cond_26

    const/4 v1, 0x2

    if-eq v0, v1, :cond_23

    const/4 v1, 0x3

    if-eq v0, v1, :cond_20

    .line 151
    sget-object v0, Ljava/util/logging/Level;->FINE:Ljava/util/logging/Level;

    .local v0, "level":Ljava/util/logging/Level;
    goto :goto_29

    .line 148
    .end local v0    # "level":Ljava/util/logging/Level;
    :cond_20
    sget-object v0, Ljava/util/logging/Level;->INFO:Ljava/util/logging/Level;

    .line 149
    .restart local v0    # "level":Ljava/util/logging/Level;
    goto :goto_29

    .line 145
    .end local v0    # "level":Ljava/util/logging/Level;
    :cond_23
    sget-object v0, Ljava/util/logging/Level;->WARNING:Ljava/util/logging/Level;

    .line 146
    .restart local v0    # "level":Ljava/util/logging/Level;
    goto :goto_29

    .line 142
    .end local v0    # "level":Ljava/util/logging/Level;
    :cond_26
    sget-object v0, Ljava/util/logging/Level;->SEVERE:Ljava/util/logging/Level;

    .line 143
    .restart local v0    # "level":Ljava/util/logging/Level;
    nop

    .line 154
    :goto_29
    sget-object v1, Lorg/webrtc/ali/Logging;->fallbackLogger:Ljava/util/logging/Logger;

    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v3, ": "

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v1, v0, v2}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V

    .line 155
    return-void
.end method

.method private static native nativeEnableLogThreads()V
.end method

.method private static native nativeEnableLogTimeStamps()V
.end method

.method private static native nativeEnableLogToDebugOutput(I)V
.end method

.method private static native nativeEnableTracing(Ljava/lang/String;I)V
.end method

.method private static native nativeLog(ILjava/lang/String;Ljava/lang/String;)V
.end method

.method public static v(Ljava/lang/String;Ljava/lang/String;)V
    .registers 3
    .param p0, "tag"    # Ljava/lang/String;
    .param p1, "message"    # Ljava/lang/String;

    .line 182
    sget-object v0, Lorg/webrtc/ali/Logging$Severity;->LS_VERBOSE:Lorg/webrtc/ali/Logging$Severity;

    invoke-static {v0, p0, p1}, Lorg/webrtc/ali/Logging;->log(Lorg/webrtc/ali/Logging$Severity;Ljava/lang/String;Ljava/lang/String;)V

    .line 183
    return-void
.end method

.method public static w(Ljava/lang/String;Ljava/lang/String;)V
    .registers 3
    .param p0, "tag"    # Ljava/lang/String;
    .param p1, "message"    # Ljava/lang/String;

    .line 166
    sget-object v0, Lorg/webrtc/ali/Logging$Severity;->LS_WARNING:Lorg/webrtc/ali/Logging$Severity;

    invoke-static {v0, p0, p1}, Lorg/webrtc/ali/Logging;->log(Lorg/webrtc/ali/Logging$Severity;Ljava/lang/String;Ljava/lang/String;)V

    .line 167
    return-void
.end method

.method public static w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
    .registers 5
    .param p0, "tag"    # Ljava/lang/String;
    .param p1, "message"    # Ljava/lang/String;
    .param p2, "e"    # Ljava/lang/Throwable;

    .line 176
    sget-object v0, Lorg/webrtc/ali/Logging$Severity;->LS_WARNING:Lorg/webrtc/ali/Logging$Severity;

    invoke-static {v0, p0, p1}, Lorg/webrtc/ali/Logging;->log(Lorg/webrtc/ali/Logging$Severity;Ljava/lang/String;Ljava/lang/String;)V

    .line 177
    sget-object v0, Lorg/webrtc/ali/Logging$Severity;->LS_WARNING:Lorg/webrtc/ali/Logging$Severity;

    invoke-virtual {p2}, Ljava/lang/Throwable;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-static {v0, p0, v1}, Lorg/webrtc/ali/Logging;->log(Lorg/webrtc/ali/Logging$Severity;Ljava/lang/String;Ljava/lang/String;)V

    .line 178
    sget-object v0, Lorg/webrtc/ali/Logging$Severity;->LS_WARNING:Lorg/webrtc/ali/Logging$Severity;

    invoke-static {p2}, Lorg/webrtc/ali/Logging;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;

    move-result-object v1

    invoke-static {v0, p0, v1}, Lorg/webrtc/ali/Logging;->log(Lorg/webrtc/ali/Logging$Severity;Ljava/lang/String;Ljava/lang/String;)V

    .line 179
    return-void
.end method