JavaExceptionReporter.smali
.class public Laegon/chrome/base/JavaExceptionReporter;
.super Ljava/lang/Object;
# interfaces
.implements Ljava/lang/Thread$UncaughtExceptionHandler;
# annotations
.annotation runtime Laegon/chrome/base/annotations/JNINamespace;
value = "base::android"
.end annotation
.annotation build Laegon/chrome/base/annotations/MainDex;
.end annotation
# static fields
.field static final synthetic $assertionsDisabled:Z
# instance fields
.field private final mCrashAfterReport:Z
.field private mHandlingException:Z
.field private final mParent:Ljava/lang/Thread$UncaughtExceptionHandler;
# direct methods
.method static constructor <clinit>()V
.registers 1
const-class v0, Laegon/chrome/base/JavaExceptionReporter;
invoke-virtual {v0}, Ljava/lang/Class;->desiredAssertionStatus()Z
move-result v0
if-nez v0, :cond_c
const/4 v0, 0x1
:goto_9
sput-boolean v0, Laegon/chrome/base/JavaExceptionReporter;->$assertionsDisabled:Z
return-void
:cond_c
const/4 v0, 0x0
goto :goto_9
.end method
.method private constructor <init>(Ljava/lang/Thread$UncaughtExceptionHandler;Z)V
.registers 3
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-object p1, p0, Laegon/chrome/base/JavaExceptionReporter;->mParent:Ljava/lang/Thread$UncaughtExceptionHandler;
iput-boolean p2, p0, Laegon/chrome/base/JavaExceptionReporter;->mCrashAfterReport:Z
return-void
.end method
.method private static installHandler(Z)V
.registers 3
.annotation build Laegon/chrome/base/annotations/CalledByNative;
.end annotation
new-instance v0, Laegon/chrome/base/JavaExceptionReporter;
invoke-static {}, Ljava/lang/Thread;->getDefaultUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler;
move-result-object v1
invoke-direct {v0, v1, p0}, Laegon/chrome/base/JavaExceptionReporter;-><init>(Ljava/lang/Thread$UncaughtExceptionHandler;Z)V
invoke-static {v0}, Ljava/lang/Thread;->setDefaultUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V
return-void
.end method
.method private static native nativeReportJavaException(ZLjava/lang/Throwable;)V
.end method
.method private static native nativeReportJavaStackTrace(Ljava/lang/String;)V
.end method
.method public static reportStackTrace(Ljava/lang/String;)V
.registers 2
.annotation build Landroid/support/annotation/UiThread;
.end annotation
sget-boolean v0, Laegon/chrome/base/JavaExceptionReporter;->$assertionsDisabled:Z
if-nez v0, :cond_10
invoke-static {}, Laegon/chrome/base/ThreadUtils;->runningOnUiThread()Z
move-result v0
if-nez v0, :cond_10
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
:cond_10
invoke-static {p0}, Laegon/chrome/base/PiiElider;->sanitizeStacktrace(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Laegon/chrome/base/JavaExceptionReporter;->nativeReportJavaStackTrace(Ljava/lang/String;)V
return-void
.end method
# virtual methods
.method public uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V
.registers 4
iget-boolean v0, p0, Laegon/chrome/base/JavaExceptionReporter;->mHandlingException:Z
if-nez v0, :cond_c
const/4 v0, 0x1
iput-boolean v0, p0, Laegon/chrome/base/JavaExceptionReporter;->mHandlingException:Z
iget-boolean v0, p0, Laegon/chrome/base/JavaExceptionReporter;->mCrashAfterReport:Z
invoke-static {v0, p2}, Laegon/chrome/base/JavaExceptionReporter;->nativeReportJavaException(ZLjava/lang/Throwable;)V
:cond_c
iget-object v0, p0, Laegon/chrome/base/JavaExceptionReporter;->mParent:Ljava/lang/Thread$UncaughtExceptionHandler;
if-eqz v0, :cond_15
iget-object v0, p0, Laegon/chrome/base/JavaExceptionReporter;->mParent:Ljava/lang/Thread$UncaughtExceptionHandler;
invoke-interface {v0, p1, p2}, Ljava/lang/Thread$UncaughtExceptionHandler;->uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V
:cond_15
return-void
.end method