.class Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController; .super Ljava/lang/Object; .source "CrashlyticsController.java" # static fields .field public static final APP_EXCEPTION_MARKER_FILTER:Ljava/io/FilenameFilter; .field public static final APP_EXCEPTION_MARKER_PREFIX:Ljava/lang/String; = ".ae" .field public static final FIREBASE_APPLICATION_EXCEPTION:Ljava/lang/String; = "_ae" .field public static final FIREBASE_CRASH_TYPE:Ljava/lang/String; = "fatal" .field public static final FIREBASE_CRASH_TYPE_FATAL:I = 0x1 .field public static final FIREBASE_TIMESTAMP:Ljava/lang/String; = "timestamp" .field private static final GENERATOR_FORMAT:Ljava/lang/String; = "Crashlytics Android SDK/%s" .field public static final NATIVE_SESSION_DIR:Ljava/lang/String; = "native-sessions" # instance fields .field private final analyticsEventLogger:Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger; .field private final appData:Lcom/google/firebase/crashlytics/internal/common/AppData; .field private final backgroundWorker:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker; .field public final checkForUnsentReportsCalled:Ljava/util/concurrent/atomic/AtomicBoolean; .field private final context:Landroid/content/Context; .field private crashHandler:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler; .field private final crashMarker:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker; .field private final dataCollectionArbiter:Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter; .field private final fileStore:Lcom/google/firebase/crashlytics/internal/persistence/FileStore; .field private final idManager:Lcom/google/firebase/crashlytics/internal/common/IdManager; .field private final logFileManager:Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager; .field private final nativeComponent:Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent; .field public final reportActionProvided:Lcom/google/android/gms/tasks/TaskCompletionSource; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/google/android/gms/tasks/TaskCompletionSource<", "Ljava/lang/Boolean;", ">;" } .end annotation .end field .field private final reportingCoordinator:Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; .field public final unsentReportsAvailable:Lcom/google/android/gms/tasks/TaskCompletionSource; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/google/android/gms/tasks/TaskCompletionSource<", "Ljava/lang/Boolean;", ">;" } .end annotation .end field .field public final unsentReportsHandled:Lcom/google/android/gms/tasks/TaskCompletionSource; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/google/android/gms/tasks/TaskCompletionSource<", "Ljava/lang/Void;", ">;" } .end annotation .end field .field private final userMetadata:Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata; # direct methods .method public static constructor ()V .locals 1 .line 1 sget-object v0, Lcom/google/firebase/crashlytics/internal/common/a;->a:Lcom/google/firebase/crashlytics/internal/common/a; sput-object v0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->APP_EXCEPTION_MARKER_FILTER:Ljava/io/FilenameFilter; return-void .end method .method public constructor (Landroid/content/Context;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;Lcom/google/firebase/crashlytics/internal/common/AppData;Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager;Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent;Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger;)V .locals 2 .line 1 invoke-direct {p0}, Ljava/lang/Object;->()V .line 2 new-instance v0, Lcom/google/android/gms/tasks/TaskCompletionSource; invoke-direct {v0}, Lcom/google/android/gms/tasks/TaskCompletionSource;->()V iput-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->unsentReportsAvailable:Lcom/google/android/gms/tasks/TaskCompletionSource; .line 3 new-instance v0, Lcom/google/android/gms/tasks/TaskCompletionSource; invoke-direct {v0}, Lcom/google/android/gms/tasks/TaskCompletionSource;->()V iput-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->reportActionProvided:Lcom/google/android/gms/tasks/TaskCompletionSource; .line 4 new-instance v0, Lcom/google/android/gms/tasks/TaskCompletionSource; invoke-direct {v0}, Lcom/google/android/gms/tasks/TaskCompletionSource;->()V iput-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->unsentReportsHandled:Lcom/google/android/gms/tasks/TaskCompletionSource; .line 5 new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean; const/4 v1, 0x0 invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->(Z)V iput-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->checkForUnsentReportsCalled:Ljava/util/concurrent/atomic/AtomicBoolean; .line 6 iput-object p1, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->context:Landroid/content/Context; .line 7 iput-object p2, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->backgroundWorker:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker; .line 8 iput-object p3, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->idManager:Lcom/google/firebase/crashlytics/internal/common/IdManager; .line 9 iput-object p4, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->dataCollectionArbiter:Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter; .line 10 iput-object p5, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->fileStore:Lcom/google/firebase/crashlytics/internal/persistence/FileStore; .line 11 iput-object p6, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->crashMarker:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker; .line 12 iput-object p7, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->appData:Lcom/google/firebase/crashlytics/internal/common/AppData; .line 13 iput-object p8, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->userMetadata:Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata; .line 14 iput-object p9, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->logFileManager:Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager; .line 15 iput-object p11, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->nativeComponent:Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent; .line 16 iput-object p12, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->analyticsEventLogger:Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger; .line 17 iput-object p10, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->reportingCoordinator:Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; return-void .end method .method public static synthetic a(Ljava/io/File;Ljava/lang/String;)Z .locals 0 invoke-static {p0, p1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->lambda$static$0(Ljava/io/File;Ljava/lang/String;)Z move-result p0 return p0 .end method .method public static synthetic access$000(J)J .locals 0 .line 1 invoke-static {p0, p1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getTimestampSeconds(J)J move-result-wide p0 return-wide p0 .end method .method public static synthetic access$100(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)Ljava/lang/String; .locals 0 .line 1 invoke-direct {p0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getCurrentSessionId()Ljava/lang/String; move-result-object p0 return-object p0 .end method .method public static synthetic access$1000(Ljava/util/List;)V .locals 0 .line 1 invoke-static {p0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->deleteFiles(Ljava/util/List;)V return-void .end method .method public static synthetic access$1100(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager; .locals 0 .line 1 iget-object p0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->logFileManager:Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager; return-object p0 .end method .method public static synthetic access$1200(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger; .locals 0 .line 1 iget-object p0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->analyticsEventLogger:Lcom/google/firebase/crashlytics/internal/analytics/AnalyticsEventLogger; return-object p0 .end method .method public static synthetic access$200(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker; .locals 0 .line 1 iget-object p0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->crashMarker:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker; return-object p0 .end method .method public static synthetic access$300(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; .locals 0 .line 1 iget-object p0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->reportingCoordinator:Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; return-object p0 .end method .method public static synthetic access$400(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;J)V .locals 0 .line 1 invoke-direct {p0, p1, p2}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->doWriteAppExceptionMarker(J)V return-void .end method .method public static synthetic access$500(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)Lcom/google/firebase/crashlytics/internal/common/IdManager; .locals 0 .line 1 iget-object p0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->idManager:Lcom/google/firebase/crashlytics/internal/common/IdManager; return-object p0 .end method .method public static synthetic access$600(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;Ljava/lang/String;)V .locals 0 .line 1 invoke-direct {p0, p1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->doOpenSession(Ljava/lang/String;)V return-void .end method .method public static synthetic access$700(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter; .locals 0 .line 1 iget-object p0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->dataCollectionArbiter:Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter; return-object p0 .end method .method public static synthetic access$800(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker; .locals 0 .line 1 iget-object p0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->backgroundWorker:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker; return-object p0 .end method .method public static synthetic access$900(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)Lcom/google/android/gms/tasks/Task; .locals 0 .line 1 invoke-direct {p0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->logAnalyticsAppExceptionEvents()Lcom/google/android/gms/tasks/Task; move-result-object p0 return-object p0 .end method .method private static createAppData(Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/common/AppData;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData; .locals 6 .line 1 invoke-virtual {p0}, Lcom/google/firebase/crashlytics/internal/common/IdManager;->getAppIdentifier()Ljava/lang/String; move-result-object v0 iget-object v1, p1, Lcom/google/firebase/crashlytics/internal/common/AppData;->versionCode:Ljava/lang/String; iget-object v2, p1, Lcom/google/firebase/crashlytics/internal/common/AppData;->versionName:Ljava/lang/String; .line 2 invoke-virtual {p0}, Lcom/google/firebase/crashlytics/internal/common/IdManager;->getCrashlyticsInstallId()Ljava/lang/String; move-result-object v3 iget-object p0, p1, Lcom/google/firebase/crashlytics/internal/common/AppData;->installerPackageName:Ljava/lang/String; .line 3 invoke-static {p0}, Lcom/google/firebase/crashlytics/internal/common/DeliveryMechanism;->determineFrom(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/common/DeliveryMechanism; move-result-object p0 invoke-virtual {p0}, Lcom/google/firebase/crashlytics/internal/common/DeliveryMechanism;->getId()I move-result v4 iget-object v5, p1, Lcom/google/firebase/crashlytics/internal/common/AppData;->developmentPlatformProvider:Lcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider; .line 4 invoke-static/range {v0 .. v5}, Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData;->create(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILcom/google/firebase/crashlytics/internal/DevelopmentPlatformProvider;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData; move-result-object p0 return-object p0 .end method .method private static createDeviceData(Landroid/content/Context;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData; .locals 16 .line 1 new-instance v0, Landroid/os/StatFs; invoke-static {}, Landroid/os/Environment;->getDataDirectory()Ljava/io/File; move-result-object v1 invoke-virtual {v1}, Ljava/io/File;->getPath()Ljava/lang/String; move-result-object v1 invoke-direct {v0, v1}, Landroid/os/StatFs;->(Ljava/lang/String;)V .line 2 invoke-virtual {v0}, Landroid/os/StatFs;->getBlockCount()I move-result v1 int-to-long v1, v1 invoke-virtual {v0}, Landroid/os/StatFs;->getBlockSize()I move-result v0 int-to-long v3, v0 mul-long v10, v1, v3 .line 3 invoke-static {}, Lcom/google/firebase/crashlytics/internal/common/CommonUtils;->getCpuArchitectureInt()I move-result v5 sget-object v6, Landroid/os/Build;->MODEL:Ljava/lang/String; .line 4 invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime; move-result-object v0 invoke-virtual {v0}, Ljava/lang/Runtime;->availableProcessors()I move-result v7 .line 5 invoke-static {}, Lcom/google/firebase/crashlytics/internal/common/CommonUtils;->getTotalRamInBytes()J move-result-wide v8 .line 6 invoke-static/range {p0 .. p0}, Lcom/google/firebase/crashlytics/internal/common/CommonUtils;->isEmulator(Landroid/content/Context;)Z move-result v12 .line 7 invoke-static/range {p0 .. p0}, Lcom/google/firebase/crashlytics/internal/common/CommonUtils;->getDeviceState(Landroid/content/Context;)I move-result v13 sget-object v14, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String; sget-object v15, Landroid/os/Build;->PRODUCT:Ljava/lang/String; .line 8 invoke-static/range {v5 .. v15}, Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData;->create(ILjava/lang/String;IJJZILjava/lang/String;Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData; move-result-object v0 return-object v0 .end method .method private static createOsData(Landroid/content/Context;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData; .locals 2 .line 1 sget-object v0, Landroid/os/Build$VERSION;->RELEASE:Ljava/lang/String; sget-object v1, Landroid/os/Build$VERSION;->CODENAME:Ljava/lang/String; .line 2 invoke-static {p0}, Lcom/google/firebase/crashlytics/internal/common/CommonUtils;->isRooted(Landroid/content/Context;)Z move-result p0 .line 3 invoke-static {v0, v1, p0}, Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData;->create(Ljava/lang/String;Ljava/lang/String;Z)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData; move-result-object p0 return-object p0 .end method .method private static deleteFiles(Ljava/util/List;)V .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/util/List<", "Ljava/io/File;", ">;)V" } .end annotation .line 1 invoke-interface {p0}, Ljava/util/List;->iterator()Ljava/util/Iterator; move-result-object p0 :goto_0 invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z move-result v0 if-eqz v0, :cond_0 invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v0 check-cast v0, Ljava/io/File; .line 2 invoke-virtual {v0}, Ljava/io/File;->delete()Z goto :goto_0 :cond_0 return-void .end method .method private doCloseSessions(ZLcom/google/firebase/crashlytics/internal/settings/SettingsDataProvider;)V .locals 3 .line 2 new-instance v0, Ljava/util/ArrayList; iget-object v1, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->reportingCoordinator:Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; .line 3 invoke-virtual {v1}, Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->listSortedOpenSessionIds()Ljava/util/SortedSet; move-result-object v1 invoke-direct {v0, v1}, Ljava/util/ArrayList;->(Ljava/util/Collection;)V .line 4 invoke-virtual {v0}, Ljava/util/ArrayList;->size()I move-result v1 if-gt v1, p1, :cond_0 .line 5 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object p1 const-string p2, "No open sessions to be closed." invoke-virtual {p1, p2}, Lcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;)V return-void .line 6 :cond_0 invoke-virtual {v0, p1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; move-result-object v1 check-cast v1, Ljava/lang/String; .line 7 invoke-interface {p2}, Lcom/google/firebase/crashlytics/internal/settings/SettingsDataProvider;->getSettings()Lcom/google/firebase/crashlytics/internal/settings/model/Settings; move-result-object p2 invoke-interface {p2}, Lcom/google/firebase/crashlytics/internal/settings/model/Settings;->getFeaturesData()Lcom/google/firebase/crashlytics/internal/settings/model/FeaturesSettingsData; move-result-object p2 iget-boolean p2, p2, Lcom/google/firebase/crashlytics/internal/settings/model/FeaturesSettingsData;->collectAnrs:Z if-eqz p2, :cond_1 .line 8 invoke-direct {p0, v1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->writeApplicationExitInfoEventIfRelevant(Ljava/lang/String;)V goto :goto_0 .line 9 :cond_1 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object p2 const-string v2, "ANR feature disabled." invoke-virtual {p2, v2}, Lcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;)V .line 10 :goto_0 iget-object p2, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->nativeComponent:Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent; invoke-interface {p2, v1}, Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent;->hasCrashDataForSession(Ljava/lang/String;)Z move-result p2 if-eqz p2, :cond_2 .line 11 invoke-direct {p0, v1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->finalizePreviousNativeSession(Ljava/lang/String;)V :cond_2 const/4 p2, 0x0 if-eqz p1, :cond_3 const/4 p1, 0x0 .line 12 invoke-virtual {v0, p1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; move-result-object p1 move-object p2, p1 check-cast p2, Ljava/lang/String; .line 13 :cond_3 iget-object p1, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->reportingCoordinator:Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; invoke-static {}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getCurrentTimestampSeconds()J move-result-wide v0 invoke-virtual {p1, v0, v1, p2}, Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->finalizeSessions(JLjava/lang/String;)V return-void .end method .method private doOpenSession(Ljava/lang/String;)V .locals 8 .line 1 invoke-static {}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getCurrentTimestampSeconds()J move-result-wide v6 .line 2 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v0 new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V const-string v2, "Opening a new session with ID " invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Lcom/google/firebase/crashlytics/internal/Logger;->d(Ljava/lang/String;)V .line 3 sget-object v0, Ljava/util/Locale;->US:Ljava/util/Locale; const/4 v1, 0x1 new-array v1, v1, [Ljava/lang/Object; .line 4 invoke-static {}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsCore;->getVersion()Ljava/lang/String; move-result-object v2 const/4 v3, 0x0 aput-object v2, v1, v3 const-string v2, "Crashlytics Android SDK/%s" invoke-static {v0, v2, v1}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; move-result-object v2 .line 5 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->idManager:Lcom/google/firebase/crashlytics/internal/common/IdManager; iget-object v1, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->appData:Lcom/google/firebase/crashlytics/internal/common/AppData; invoke-static {v0, v1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->createAppData(Lcom/google/firebase/crashlytics/internal/common/IdManager;Lcom/google/firebase/crashlytics/internal/common/AppData;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData; move-result-object v0 .line 6 invoke-direct {p0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getContext()Landroid/content/Context; move-result-object v1 invoke-static {v1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->createOsData(Landroid/content/Context;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData; move-result-object v1 .line 7 invoke-direct {p0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getContext()Landroid/content/Context; move-result-object v3 invoke-static {v3}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->createDeviceData(Landroid/content/Context;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData; move-result-object v3 .line 8 iget-object v4, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->nativeComponent:Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent; .line 9 invoke-static {v0, v1, v3}, Lcom/google/firebase/crashlytics/internal/model/StaticSessionData;->create(Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$AppData;Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$OsData;Lcom/google/firebase/crashlytics/internal/model/StaticSessionData$DeviceData;)Lcom/google/firebase/crashlytics/internal/model/StaticSessionData; move-result-object v5 move-object v0, v4 move-object v1, p1 move-wide v3, v6 .line 10 invoke-interface/range {v0 .. v5}, Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent;->prepareNativeSession(Ljava/lang/String;Ljava/lang/String;JLcom/google/firebase/crashlytics/internal/model/StaticSessionData;)V .line 11 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->logFileManager:Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager; invoke-virtual {v0, p1}, Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->setCurrentSession(Ljava/lang/String;)V .line 12 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->reportingCoordinator:Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; invoke-virtual {v0, p1, v6, v7}, Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->onBeginSession(Ljava/lang/String;J)V return-void .end method .method private doWriteAppExceptionMarker(J)V .locals 3 .line 1 :try_start_0 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->fileStore:Lcom/google/firebase/crashlytics/internal/persistence/FileStore; new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V const-string v2, ".ae" invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1, p1, p2}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p1 invoke-virtual {v0, p1}, Lcom/google/firebase/crashlytics/internal/persistence/FileStore;->getCommonFile(Ljava/lang/String;)Ljava/io/File; move-result-object p1 invoke-virtual {p1}, Ljava/io/File;->createNewFile()Z move-result p1 if-eqz p1, :cond_0 goto :goto_0 .line 2 :cond_0 new-instance p1, Ljava/io/IOException; const-string p2, "Create new file failed." invoke-direct {p1, p2}, Ljava/io/IOException;->(Ljava/lang/String;)V throw p1 :try_end_0 .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 :catch_0 move-exception p1 .line 3 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object p2 const-string v0, "Could not create app exception marker file." invoke-virtual {p2, v0, p1}, Lcom/google/firebase/crashlytics/internal/Logger;->w(Ljava/lang/String;Ljava/lang/Throwable;)V :goto_0 return-void .end method .method private finalizePreviousNativeSession(Ljava/lang/String;)V .locals 6 .line 1 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v0 new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V const-string v2, "Finalizing native report for session " invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Lcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;)V .line 2 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->nativeComponent:Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent; .line 3 invoke-interface {v0, p1}, Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent;->getSessionFileProvider(Ljava/lang/String;)Lcom/google/firebase/crashlytics/internal/NativeSessionFileProvider; move-result-object v0 .line 4 invoke-interface {v0}, Lcom/google/firebase/crashlytics/internal/NativeSessionFileProvider;->getMinidumpFile()Ljava/io/File; move-result-object v1 if-eqz v1, :cond_2 .line 5 invoke-virtual {v1}, Ljava/io/File;->exists()Z move-result v2 if-nez v2, :cond_0 goto :goto_0 .line 6 :cond_0 invoke-virtual {v1}, Ljava/io/File;->lastModified()J move-result-wide v1 .line 7 new-instance v3, Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager; iget-object v4, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->fileStore:Lcom/google/firebase/crashlytics/internal/persistence/FileStore; invoke-direct {v3, v4, p1}, Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->(Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Ljava/lang/String;)V .line 8 iget-object v4, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->fileStore:Lcom/google/firebase/crashlytics/internal/persistence/FileStore; invoke-virtual {v4, p1}, Lcom/google/firebase/crashlytics/internal/persistence/FileStore;->getNativeSessionDir(Ljava/lang/String;)Ljava/io/File; move-result-object v4 .line 9 invoke-virtual {v4}, Ljava/io/File;->isDirectory()Z move-result v5 if-nez v5, :cond_1 .line 10 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object p1 const-string v0, "Couldn\'t create directory to store native session files, aborting." invoke-virtual {p1, v0}, Lcom/google/firebase/crashlytics/internal/Logger;->w(Ljava/lang/String;)V return-void .line 11 :cond_1 invoke-direct {p0, v1, v2}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->doWriteAppExceptionMarker(J)V .line 12 iget-object v1, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->fileStore:Lcom/google/firebase/crashlytics/internal/persistence/FileStore; .line 13 invoke-virtual {v3}, Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->getBytesForLog()[B move-result-object v2 .line 14 invoke-static {v0, p1, v1, v2}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getNativeSessionFiles(Lcom/google/firebase/crashlytics/internal/NativeSessionFileProvider;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;[B)Ljava/util/List; move-result-object v0 .line 15 invoke-static {v4, v0}, Lcom/google/firebase/crashlytics/internal/common/NativeSessionFileGzipper;->processNativeSessions(Ljava/io/File;Ljava/util/List;)V .line 16 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v1 const-string v2, "CrashlyticsController#finalizePreviousNativeSession" invoke-virtual {v1, v2}, Lcom/google/firebase/crashlytics/internal/Logger;->d(Ljava/lang/String;)V .line 17 iget-object v1, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->reportingCoordinator:Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; invoke-virtual {v1, p1, v0}, Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->finalizeSessionWithNativeEvent(Ljava/lang/String;Ljava/util/List;)V .line 18 invoke-virtual {v3}, Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->clearLog()V return-void .line 19 :cond_2 :goto_0 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v0 new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V const-string v2, "No minidump data found for session " invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p1 invoke-virtual {v0, p1}, Lcom/google/firebase/crashlytics/internal/Logger;->w(Ljava/lang/String;)V return-void .end method .method private static firebaseCrashExists()Z .locals 1 const/4 v0, 0x1 return v0 .end method .method private getContext()Landroid/content/Context; .locals 1 .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->context:Landroid/content/Context; return-object v0 .end method .method private getCurrentSessionId()Ljava/lang/String; .locals 2 .annotation build Landroidx/annotation/Nullable; .end annotation .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->reportingCoordinator:Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; invoke-virtual {v0}, Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->listSortedOpenSessionIds()Ljava/util/SortedSet; move-result-object v0 .line 2 invoke-interface {v0}, Ljava/util/SortedSet;->isEmpty()Z move-result v1 if-nez v1, :cond_0 invoke-interface {v0}, Ljava/util/SortedSet;->first()Ljava/lang/Object; move-result-object v0 check-cast v0, Ljava/lang/String; goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return-object v0 .end method .method private static getCurrentTimestampSeconds()J .locals 2 .line 1 invoke-static {}, Ljava/lang/System;->currentTimeMillis()J move-result-wide v0 invoke-static {v0, v1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getTimestampSeconds(J)J move-result-wide v0 return-wide v0 .end method .method public static getNativeSessionFiles(Lcom/google/firebase/crashlytics/internal/NativeSessionFileProvider;Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;[B)Ljava/util/List; .locals 5 .annotation build Landroidx/annotation/NonNull; .end annotation .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/firebase/crashlytics/internal/NativeSessionFileProvider;", "Ljava/lang/String;", "Lcom/google/firebase/crashlytics/internal/persistence/FileStore;", "[B)", "Ljava/util/List<", "Lcom/google/firebase/crashlytics/internal/common/NativeSessionFile;", ">;" } .end annotation const-string v0, "user-data" .line 1 invoke-virtual {p2, p1, v0}, Lcom/google/firebase/crashlytics/internal/persistence/FileStore;->getSessionFile(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File; move-result-object v0 const-string v1, "keys" .line 2 invoke-virtual {p2, p1, v1}, Lcom/google/firebase/crashlytics/internal/persistence/FileStore;->getSessionFile(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File; move-result-object p1 .line 3 new-instance p2, Ljava/util/ArrayList; invoke-direct {p2}, Ljava/util/ArrayList;->()V .line 4 new-instance v2, Lcom/google/firebase/crashlytics/internal/common/BytesBackedNativeSessionFile; const-string v3, "logs_file" const-string v4, "logs" invoke-direct {v2, v3, v4, p3}, Lcom/google/firebase/crashlytics/internal/common/BytesBackedNativeSessionFile;->(Ljava/lang/String;Ljava/lang/String;[B)V invoke-virtual {p2, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z .line 5 new-instance p3, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile; .line 6 invoke-interface {p0}, Lcom/google/firebase/crashlytics/internal/NativeSessionFileProvider;->getMetadataFile()Ljava/io/File; move-result-object v2 const-string v3, "crash_meta_file" const-string v4, "metadata" invoke-direct {p3, v3, v4, v2}, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile;->(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)V .line 7 invoke-virtual {p2, p3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z .line 8 new-instance p3, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile; .line 9 invoke-interface {p0}, Lcom/google/firebase/crashlytics/internal/NativeSessionFileProvider;->getSessionFile()Ljava/io/File; move-result-object v2 const-string v3, "session_meta_file" const-string v4, "session" invoke-direct {p3, v3, v4, v2}, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile;->(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)V .line 10 invoke-virtual {p2, p3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z .line 11 new-instance p3, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile; .line 12 invoke-interface {p0}, Lcom/google/firebase/crashlytics/internal/NativeSessionFileProvider;->getAppFile()Ljava/io/File; move-result-object v2 const-string v3, "app_meta_file" const-string v4, "app" invoke-direct {p3, v3, v4, v2}, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile;->(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)V .line 13 invoke-virtual {p2, p3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z .line 14 new-instance p3, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile; .line 15 invoke-interface {p0}, Lcom/google/firebase/crashlytics/internal/NativeSessionFileProvider;->getDeviceFile()Ljava/io/File; move-result-object v2 const-string v3, "device_meta_file" const-string v4, "device" invoke-direct {p3, v3, v4, v2}, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile;->(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)V .line 16 invoke-virtual {p2, p3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z .line 17 new-instance p3, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile; .line 18 invoke-interface {p0}, Lcom/google/firebase/crashlytics/internal/NativeSessionFileProvider;->getOsFile()Ljava/io/File; move-result-object v2 const-string v3, "os_meta_file" const-string v4, "os" invoke-direct {p3, v3, v4, v2}, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile;->(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)V .line 19 invoke-virtual {p2, p3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z .line 20 new-instance p3, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile; .line 21 invoke-interface {p0}, Lcom/google/firebase/crashlytics/internal/NativeSessionFileProvider;->getMinidumpFile()Ljava/io/File; move-result-object p0 const-string v2, "minidump_file" const-string v3, "minidump" invoke-direct {p3, v2, v3, p0}, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile;->(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)V .line 22 invoke-virtual {p2, p3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z .line 23 new-instance p0, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile; const-string p3, "user_meta_file" const-string v2, "user" invoke-direct {p0, p3, v2, v0}, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile;->(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)V invoke-virtual {p2, p0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z .line 24 new-instance p0, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile; const-string p3, "keys_file" invoke-direct {p0, p3, v1, p1}, Lcom/google/firebase/crashlytics/internal/common/FileBackedNativeSessionFile;->(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)V invoke-virtual {p2, p0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z return-object p2 .end method .method private static getTimestampSeconds(J)J .locals 2 const-wide/16 v0, 0x3e8 .line 1 div-long/2addr p0, v0 return-wide p0 .end method .method private static synthetic lambda$static$0(Ljava/io/File;Ljava/lang/String;)Z .locals 0 const-string p0, ".ae" .line 1 invoke-virtual {p1, p0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result p0 return p0 .end method .method private logAnalyticsAppExceptionEvent(J)Lcom/google/android/gms/tasks/Task; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(J)", "Lcom/google/android/gms/tasks/Task<", "Ljava/lang/Void;", ">;" } .end annotation .line 1 invoke-static {}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->firebaseCrashExists()Z move-result v0 if-eqz v0, :cond_0 .line 2 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object p1 const-string p2, "Skipping logging Crashlytics event to Firebase, FirebaseCrash exists" invoke-virtual {p1, p2}, Lcom/google/firebase/crashlytics/internal/Logger;->w(Ljava/lang/String;)V const/4 p1, 0x0 .line 3 invoke-static {p1}, Lcom/google/android/gms/tasks/Tasks;->forResult(Ljava/lang/Object;)Lcom/google/android/gms/tasks/Task; move-result-object p1 return-object p1 .line 4 :cond_0 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v0 const-string v1, "Logging app exception event to Firebase Analytics" invoke-virtual {v0, v1}, Lcom/google/firebase/crashlytics/internal/Logger;->d(Ljava/lang/String;)V .line 5 new-instance v0, Ljava/util/concurrent/ScheduledThreadPoolExecutor; const/4 v1, 0x1 invoke-direct {v0, v1}, Ljava/util/concurrent/ScheduledThreadPoolExecutor;->(I)V .line 6 new-instance v1, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$8; invoke-direct {v1, p0, p1, p2}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$8;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;J)V invoke-static {v0, v1}, Lcom/google/android/gms/tasks/Tasks;->call(Ljava/util/concurrent/Executor;Ljava/util/concurrent/Callable;)Lcom/google/android/gms/tasks/Task; move-result-object p1 return-object p1 .end method .method private logAnalyticsAppExceptionEvents()Lcom/google/android/gms/tasks/Task; .locals 6 .annotation system Ldalvik/annotation/Signature; value = { "()", "Lcom/google/android/gms/tasks/Task<", "Ljava/lang/Void;", ">;" } .end annotation .line 1 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;->()V .line 2 invoke-virtual {p0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->listAppExceptionMarkerFiles()Ljava/util/List; move-result-object v1 .line 3 invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator; move-result-object v1 :goto_0 invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z move-result v2 if-eqz v2, :cond_0 invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v2 check-cast v2, Ljava/io/File; .line 4 :try_start_0 invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; move-result-object v3 const/4 v4, 0x3 invoke-virtual {v3, v4}, Ljava/lang/String;->substring(I)Ljava/lang/String; move-result-object v3 invoke-static {v3}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J move-result-wide v3 .line 5 invoke-direct {p0, v3, v4}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->logAnalyticsAppExceptionEvent(J)Lcom/google/android/gms/tasks/Task; move-result-object v3 invoke-virtual {v0, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z :try_end_0 .catch Ljava/lang/NumberFormatException; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_1 .line 6 :catch_0 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v3 const-string v4, "Could not parse app exception timestamp from file " invoke-static {v4}, Landroid/support/v4/media/d;->a(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v4 .line 7 invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String; move-result-object v5 invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v4 invoke-virtual {v3, v4}, Lcom/google/firebase/crashlytics/internal/Logger;->w(Ljava/lang/String;)V .line 8 :goto_1 invoke-virtual {v2}, Ljava/io/File;->delete()Z goto :goto_0 .line 9 :cond_0 invoke-static {v0}, Lcom/google/android/gms/tasks/Tasks;->whenAll(Ljava/util/Collection;)Lcom/google/android/gms/tasks/Task; move-result-object v0 return-object v0 .end method .method private waitForReportAction()Lcom/google/android/gms/tasks/Task; .locals 3 .annotation system Ldalvik/annotation/Signature; value = { "()", "Lcom/google/android/gms/tasks/Task<", "Ljava/lang/Boolean;", ">;" } .end annotation .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->dataCollectionArbiter:Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter; invoke-virtual {v0}, Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->isAutomaticDataCollectionEnabled()Z move-result v0 if-eqz v0, :cond_0 .line 2 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v0 const-string v1, "Automatic data collection is enabled. Allowing upload." invoke-virtual {v0, v1}, Lcom/google/firebase/crashlytics/internal/Logger;->d(Ljava/lang/String;)V .line 3 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->unsentReportsAvailable:Lcom/google/android/gms/tasks/TaskCompletionSource; sget-object v1, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean; invoke-virtual {v0, v1}, Lcom/google/android/gms/tasks/TaskCompletionSource;->trySetResult(Ljava/lang/Object;)Z .line 4 sget-object v0, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean; invoke-static {v0}, Lcom/google/android/gms/tasks/Tasks;->forResult(Ljava/lang/Object;)Lcom/google/android/gms/tasks/Task; move-result-object v0 return-object v0 .line 5 :cond_0 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v0 const-string v1, "Automatic data collection is disabled." invoke-virtual {v0, v1}, Lcom/google/firebase/crashlytics/internal/Logger;->d(Ljava/lang/String;)V .line 6 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v0 const-string v1, "Notifying that unsent reports are available." invoke-virtual {v0, v1}, Lcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;)V .line 7 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->unsentReportsAvailable:Lcom/google/android/gms/tasks/TaskCompletionSource; sget-object v1, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean; invoke-virtual {v0, v1}, Lcom/google/android/gms/tasks/TaskCompletionSource;->trySetResult(Ljava/lang/Object;)Z .line 8 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->dataCollectionArbiter:Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter; .line 9 invoke-virtual {v0}, Lcom/google/firebase/crashlytics/internal/common/DataCollectionArbiter;->waitForAutomaticDataCollectionEnabled()Lcom/google/android/gms/tasks/Task; move-result-object v0 new-instance v1, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$3; invoke-direct {v1, p0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$3;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)V .line 10 invoke-virtual {v0, v1}, Lcom/google/android/gms/tasks/Task;->onSuccessTask(Lcom/google/android/gms/tasks/SuccessContinuation;)Lcom/google/android/gms/tasks/Task; move-result-object v0 .line 11 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v1 const-string v2, "Waiting for send/deleteUnsentReports to be called." invoke-virtual {v1, v2}, Lcom/google/firebase/crashlytics/internal/Logger;->d(Ljava/lang/String;)V .line 12 iget-object v1, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->reportActionProvided:Lcom/google/android/gms/tasks/TaskCompletionSource; invoke-virtual {v1}, Lcom/google/android/gms/tasks/TaskCompletionSource;->getTask()Lcom/google/android/gms/tasks/Task; move-result-object v1 invoke-static {v0, v1}, Lcom/google/firebase/crashlytics/internal/common/Utils;->race(Lcom/google/android/gms/tasks/Task;Lcom/google/android/gms/tasks/Task;)Lcom/google/android/gms/tasks/Task; move-result-object v0 return-object v0 .end method .method private writeApplicationExitInfoEventIfRelevant(Ljava/lang/String;)V .locals 4 .line 1 sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x1e if-lt v0, v1, :cond_1 .line 2 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->context:Landroid/content/Context; const-string v1, "activity" .line 3 invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object v0 check-cast v0, Landroid/app/ActivityManager; const/4 v1, 0x0 const/4 v2, 0x0 .line 4 invoke-virtual {v0, v1, v2, v2}, Landroid/app/ActivityManager;->getHistoricalProcessExitReasons(Ljava/lang/String;II)Ljava/util/List; move-result-object v0 .line 5 invoke-interface {v0}, Ljava/util/List;->size()I move-result v1 if-eqz v1, :cond_0 .line 6 new-instance v1, Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager; iget-object v2, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->fileStore:Lcom/google/firebase/crashlytics/internal/persistence/FileStore; invoke-direct {v1, v2, p1}, Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager;->(Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Ljava/lang/String;)V .line 7 iget-object v2, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->fileStore:Lcom/google/firebase/crashlytics/internal/persistence/FileStore; iget-object v3, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->backgroundWorker:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker; .line 8 invoke-static {p1, v2, v3}, Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;->loadFromExistingSession(Ljava/lang/String;Lcom/google/firebase/crashlytics/internal/persistence/FileStore;Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;)Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata; move-result-object v2 .line 9 iget-object v3, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->reportingCoordinator:Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; invoke-virtual {v3, p1, v0, v1, v2}, Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->persistRelevantAppExitInfoEvent(Ljava/lang/String;Ljava/util/List;Lcom/google/firebase/crashlytics/internal/metadata/LogFileManager;Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;)V goto :goto_0 .line 10 :cond_0 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v0 new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V const-string v2, "No ApplicationExitInfo available. Session: " invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p1 invoke-virtual {v0, p1}, Lcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;)V goto :goto_0 .line 11 :cond_1 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object p1 new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V const-string v2, "ANR feature enabled, but device is API " invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 .line 12 invoke-virtual {p1, v0}, Lcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;)V :goto_0 return-void .end method # virtual methods .method public checkForUnsentReports()Lcom/google/android/gms/tasks/Task; .locals 3 .annotation build Landroidx/annotation/NonNull; .end annotation .annotation system Ldalvik/annotation/Signature; value = { "()", "Lcom/google/android/gms/tasks/Task<", "Ljava/lang/Boolean;", ">;" } .end annotation .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->checkForUnsentReportsCalled:Ljava/util/concurrent/atomic/AtomicBoolean; const/4 v1, 0x0 const/4 v2, 0x1 invoke-virtual {v0, v1, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z move-result v0 if-nez v0, :cond_0 .line 2 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v0 const-string v1, "checkForUnsentReports should only be called once per execution." invoke-virtual {v0, v1}, Lcom/google/firebase/crashlytics/internal/Logger;->w(Ljava/lang/String;)V .line 3 sget-object v0, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean; invoke-static {v0}, Lcom/google/android/gms/tasks/Tasks;->forResult(Ljava/lang/Object;)Lcom/google/android/gms/tasks/Task; move-result-object v0 return-object v0 .line 4 :cond_0 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->unsentReportsAvailable:Lcom/google/android/gms/tasks/TaskCompletionSource; invoke-virtual {v0}, Lcom/google/android/gms/tasks/TaskCompletionSource;->getTask()Lcom/google/android/gms/tasks/Task; move-result-object v0 return-object v0 .end method .method public deleteUnsentReports()Lcom/google/android/gms/tasks/Task; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "()", "Lcom/google/android/gms/tasks/Task<", "Ljava/lang/Void;", ">;" } .end annotation .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->reportActionProvided:Lcom/google/android/gms/tasks/TaskCompletionSource; sget-object v1, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean; invoke-virtual {v0, v1}, Lcom/google/android/gms/tasks/TaskCompletionSource;->trySetResult(Ljava/lang/Object;)Z .line 2 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->unsentReportsHandled:Lcom/google/android/gms/tasks/TaskCompletionSource; invoke-virtual {v0}, Lcom/google/android/gms/tasks/TaskCompletionSource;->getTask()Lcom/google/android/gms/tasks/Task; move-result-object v0 return-object v0 .end method .method public didCrashOnPreviousExecution()Z .locals 3 .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->crashMarker:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker; invoke-virtual {v0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;->isPresent()Z move-result v0 const/4 v1, 0x1 if-nez v0, :cond_1 .line 2 invoke-direct {p0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->getCurrentSessionId()Ljava/lang/String; move-result-object v0 if-eqz v0, :cond_0 .line 3 iget-object v2, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->nativeComponent:Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent; invoke-interface {v2, v0}, Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent;->hasCrashDataForSession(Ljava/lang/String;)Z move-result v0 if-eqz v0, :cond_0 goto :goto_0 :cond_0 const/4 v1, 0x0 :goto_0 return v1 .line 4 :cond_1 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v0 const-string v2, "Found previous crash marker." invoke-virtual {v0, v2}, Lcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;)V .line 5 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->crashMarker:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker; invoke-virtual {v0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsFileMarker;->remove()Z return v1 .end method .method public doCloseSessions(Lcom/google/firebase/crashlytics/internal/settings/SettingsDataProvider;)V .locals 1 const/4 v0, 0x0 .line 1 invoke-direct {p0, v0, p1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->doCloseSessions(ZLcom/google/firebase/crashlytics/internal/settings/SettingsDataProvider;)V return-void .end method .method public enableExceptionHandling(Ljava/lang/String;Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/google/firebase/crashlytics/internal/settings/SettingsDataProvider;)V .locals 2 .line 1 invoke-virtual {p0, p1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->openSession(Ljava/lang/String;)V .line 2 new-instance p1, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$1; invoke-direct {p1, p0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$1;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;)V .line 3 new-instance v0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler; iget-object v1, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->nativeComponent:Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent; invoke-direct {v0, p1, p3, p2, v1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler$CrashListener;Lcom/google/firebase/crashlytics/internal/settings/SettingsDataProvider;Ljava/lang/Thread$UncaughtExceptionHandler;Lcom/google/firebase/crashlytics/internal/CrashlyticsNativeComponent;)V iput-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->crashHandler:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler; .line 4 invoke-static {v0}, Ljava/lang/Thread;->setDefaultUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V return-void .end method .method public finalizeSessions(Lcom/google/firebase/crashlytics/internal/settings/SettingsDataProvider;)Z .locals 3 .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->backgroundWorker:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker; invoke-virtual {v0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->checkRunningOnThread()V .line 2 invoke-virtual {p0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->isHandlingException()Z move-result v0 const/4 v1, 0x0 if-eqz v0, :cond_0 .line 3 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object p1 const-string v0, "Skipping session finalization because a crash has already occurred." invoke-virtual {p1, v0}, Lcom/google/firebase/crashlytics/internal/Logger;->w(Ljava/lang/String;)V return v1 .line 4 :cond_0 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v0 const-string v2, "Finalizing previously open sessions." invoke-virtual {v0, v2}, Lcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;)V const/4 v0, 0x1 .line 5 :try_start_0 invoke-direct {p0, v0, p1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->doCloseSessions(ZLcom/google/firebase/crashlytics/internal/settings/SettingsDataProvider;)V :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 .line 6 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object p1 const-string v1, "Closed all previously open sessions." invoke-virtual {p1, v1}, Lcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;)V return v0 :catch_0 move-exception p1 .line 7 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v0 const-string v2, "Unable to finalize previously open sessions." invoke-virtual {v0, v2, p1}, Lcom/google/firebase/crashlytics/internal/Logger;->e(Ljava/lang/String;Ljava/lang/Throwable;)V return v1 .end method .method public getUserMetadata()Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata; .locals 1 .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->userMetadata:Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata; return-object v0 .end method .method public declared-synchronized handleUncaughtException(Lcom/google/firebase/crashlytics/internal/settings/SettingsDataProvider;Ljava/lang/Thread;Ljava/lang/Throwable;)V .locals 9 .param p1 # Lcom/google/firebase/crashlytics/internal/settings/SettingsDataProvider; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Ljava/lang/Thread; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p3 # Ljava/lang/Throwable; .annotation build Landroidx/annotation/NonNull; .end annotation .end param monitor-enter p0 .line 1 :try_start_0 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v0 new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V const-string v2, "Handling uncaught exception \"" invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; const-string v2, "\" from thread " invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; .line 2 invoke-virtual {p2}, Ljava/lang/Thread;->getName()Ljava/lang/String; move-result-object v2 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Lcom/google/firebase/crashlytics/internal/Logger;->d(Ljava/lang/String;)V .line 3 invoke-static {}, Ljava/lang/System;->currentTimeMillis()J move-result-wide v4 .line 4 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->backgroundWorker:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker; new-instance v1, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$2; move-object v2, v1 move-object v3, p0 move-object v6, p3 move-object v7, p2 move-object v8, p1 invoke-direct/range {v2 .. v8}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$2;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;JLjava/lang/Throwable;Ljava/lang/Thread;Lcom/google/firebase/crashlytics/internal/settings/SettingsDataProvider;)V .line 5 invoke-virtual {v0, v1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->submitTask(Ljava/util/concurrent/Callable;)Lcom/google/android/gms/tasks/Task; move-result-object p1 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 6 :try_start_1 invoke-static {p1}, Lcom/google/firebase/crashlytics/internal/common/Utils;->awaitEvenIfOnMainThread(Lcom/google/android/gms/tasks/Task;)Ljava/lang/Object; :try_end_1 .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0 .catchall {:try_start_1 .. :try_end_1} :catchall_0 goto :goto_0 :catch_0 move-exception p1 .line 7 :try_start_2 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object p2 const-string p3, "Error handling uncaught exception" invoke-virtual {p2, p3, p1}, Lcom/google/firebase/crashlytics/internal/Logger;->e(Ljava/lang/String;Ljava/lang/Throwable;)V :try_end_2 .catchall {:try_start_2 .. :try_end_2} :catchall_0 .line 8 :goto_0 monitor-exit p0 return-void :catchall_0 move-exception p1 monitor-exit p0 throw p1 .end method .method public isHandlingException()Z .locals 1 .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->crashHandler:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler; if-eqz v0, :cond_0 invoke-virtual {v0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsUncaughtExceptionHandler;->isHandlingException()Z move-result v0 if-eqz v0, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return v0 .end method .method public listAppExceptionMarkerFiles()Ljava/util/List; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "()", "Ljava/util/List<", "Ljava/io/File;", ">;" } .end annotation .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->fileStore:Lcom/google/firebase/crashlytics/internal/persistence/FileStore; sget-object v1, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->APP_EXCEPTION_MARKER_FILTER:Ljava/io/FilenameFilter; invoke-virtual {v0, v1}, Lcom/google/firebase/crashlytics/internal/persistence/FileStore;->getCommonFiles(Ljava/io/FilenameFilter;)Ljava/util/List; move-result-object v0 return-object v0 .end method .method public openSession(Ljava/lang/String;)V .locals 2 .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->backgroundWorker:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker; new-instance v1, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$7; invoke-direct {v1, p0, p1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$7;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;Ljava/lang/String;)V invoke-virtual {v0, v1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->submit(Ljava/util/concurrent/Callable;)Lcom/google/android/gms/tasks/Task; return-void .end method .method public sendUnsentReports()Lcom/google/android/gms/tasks/Task; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "()", "Lcom/google/android/gms/tasks/Task<", "Ljava/lang/Void;", ">;" } .end annotation .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->reportActionProvided:Lcom/google/android/gms/tasks/TaskCompletionSource; sget-object v1, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean; invoke-virtual {v0, v1}, Lcom/google/android/gms/tasks/TaskCompletionSource;->trySetResult(Ljava/lang/Object;)Z .line 2 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->unsentReportsHandled:Lcom/google/android/gms/tasks/TaskCompletionSource; invoke-virtual {v0}, Lcom/google/android/gms/tasks/TaskCompletionSource;->getTask()Lcom/google/android/gms/tasks/Task; move-result-object v0 return-object v0 .end method .method public setCustomKey(Ljava/lang/String;Ljava/lang/String;)V .locals 1 .line 1 :try_start_0 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->userMetadata:Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata; invoke-virtual {v0, p1, p2}, Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;->setCustomKey(Ljava/lang/String;Ljava/lang/String;)Z :try_end_0 .catch Ljava/lang/IllegalArgumentException; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_1 :catch_0 move-exception p1 .line 2 iget-object p2, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->context:Landroid/content/Context; if-eqz p2, :cond_1 invoke-static {p2}, Lcom/google/firebase/crashlytics/internal/common/CommonUtils;->isAppDebuggable(Landroid/content/Context;)Z move-result p2 if-nez p2, :cond_0 goto :goto_0 .line 3 :cond_0 throw p1 .line 4 :cond_1 :goto_0 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object p1 const-string p2, "Attempting to set custom attribute with null key, ignoring." invoke-virtual {p1, p2}, Lcom/google/firebase/crashlytics/internal/Logger;->e(Ljava/lang/String;)V :goto_1 return-void .end method .method public setCustomKeys(Ljava/util/Map;)V .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/util/Map<", "Ljava/lang/String;", "Ljava/lang/String;", ">;)V" } .end annotation .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->userMetadata:Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata; invoke-virtual {v0, p1}, Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;->setCustomKeys(Ljava/util/Map;)V return-void .end method .method public setInternalKey(Ljava/lang/String;Ljava/lang/String;)V .locals 1 .line 1 :try_start_0 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->userMetadata:Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata; invoke-virtual {v0, p1, p2}, Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;->setInternalKey(Ljava/lang/String;Ljava/lang/String;)Z :try_end_0 .catch Ljava/lang/IllegalArgumentException; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_1 :catch_0 move-exception p1 .line 2 iget-object p2, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->context:Landroid/content/Context; if-eqz p2, :cond_1 invoke-static {p2}, Lcom/google/firebase/crashlytics/internal/common/CommonUtils;->isAppDebuggable(Landroid/content/Context;)Z move-result p2 if-nez p2, :cond_0 goto :goto_0 .line 3 :cond_0 throw p1 .line 4 :cond_1 :goto_0 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object p1 const-string p2, "Attempting to set custom attribute with null key, ignoring." invoke-virtual {p1, p2}, Lcom/google/firebase/crashlytics/internal/Logger;->e(Ljava/lang/String;)V :goto_1 return-void .end method .method public setUserId(Ljava/lang/String;)V .locals 1 .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->userMetadata:Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata; invoke-virtual {v0, p1}, Lcom/google/firebase/crashlytics/internal/metadata/UserMetadata;->setUserId(Ljava/lang/String;)V return-void .end method .method public submitAllReports(Lcom/google/android/gms/tasks/Task;)Lcom/google/android/gms/tasks/Task; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/android/gms/tasks/Task<", "Lcom/google/firebase/crashlytics/internal/settings/model/AppSettingsData;", ">;)", "Lcom/google/android/gms/tasks/Task<", "Ljava/lang/Void;", ">;" } .end annotation .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->reportingCoordinator:Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator; invoke-virtual {v0}, Lcom/google/firebase/crashlytics/internal/common/SessionReportingCoordinator;->hasReportsToSend()Z move-result v0 if-nez v0, :cond_0 .line 2 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object p1 const-string v0, "No crash reports are available to be sent." invoke-virtual {p1, v0}, Lcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;)V .line 3 iget-object p1, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->unsentReportsAvailable:Lcom/google/android/gms/tasks/TaskCompletionSource; sget-object v0, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean; invoke-virtual {p1, v0}, Lcom/google/android/gms/tasks/TaskCompletionSource;->trySetResult(Ljava/lang/Object;)Z const/4 p1, 0x0 .line 4 invoke-static {p1}, Lcom/google/android/gms/tasks/Tasks;->forResult(Ljava/lang/Object;)Lcom/google/android/gms/tasks/Task; move-result-object p1 return-object p1 .line 5 :cond_0 invoke-static {}, Lcom/google/firebase/crashlytics/internal/Logger;->getLogger()Lcom/google/firebase/crashlytics/internal/Logger; move-result-object v0 const-string v1, "Crash reports are available to be sent." invoke-virtual {v0, v1}, Lcom/google/firebase/crashlytics/internal/Logger;->v(Ljava/lang/String;)V .line 6 invoke-direct {p0}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->waitForReportAction()Lcom/google/android/gms/tasks/Task; move-result-object v0 new-instance v1, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$4; invoke-direct {v1, p0, p1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$4;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;Lcom/google/android/gms/tasks/Task;)V .line 7 invoke-virtual {v0, v1}, Lcom/google/android/gms/tasks/Task;->onSuccessTask(Lcom/google/android/gms/tasks/SuccessContinuation;)Lcom/google/android/gms/tasks/Task; move-result-object p1 return-object p1 .end method .method public writeNonFatalException(Ljava/lang/Thread;Ljava/lang/Throwable;)V .locals 8 .param p1 # Ljava/lang/Thread; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .param p2 # Ljava/lang/Throwable; .annotation build Landroidx/annotation/NonNull; .end annotation .end param .line 1 invoke-static {}, Ljava/lang/System;->currentTimeMillis()J move-result-wide v2 .line 2 iget-object v6, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->backgroundWorker:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker; new-instance v7, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$6; move-object v0, v7 move-object v1, p0 move-object v4, p2 move-object v5, p1 invoke-direct/range {v0 .. v5}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$6;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;JLjava/lang/Throwable;Ljava/lang/Thread;)V invoke-virtual {v6, v7}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->submit(Ljava/lang/Runnable;)Lcom/google/android/gms/tasks/Task; return-void .end method .method public writeToLog(JLjava/lang/String;)V .locals 2 .line 1 iget-object v0, p0, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;->backgroundWorker:Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker; new-instance v1, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$5; invoke-direct {v1, p0, p1, p2, p3}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController$5;->(Lcom/google/firebase/crashlytics/internal/common/CrashlyticsController;JLjava/lang/String;)V invoke-virtual {v0, v1}, Lcom/google/firebase/crashlytics/internal/common/CrashlyticsBackgroundWorker;->submit(Ljava/util/concurrent/Callable;)Lcom/google/android/gms/tasks/Task; return-void .end method