.class public Lcom/google/firebase/perf/session/SessionManager; .super Lcom/google/firebase/perf/application/AppStateUpdateHandler; .source "SourceFile" # annotations .annotation build Landroidx/annotation/Keep; .end annotation # static fields .field private static final instance:Lcom/google/firebase/perf/session/SessionManager; .annotation build Landroid/annotation/SuppressLint; value = { "StaticFieldLeak" } .end annotation .end field # instance fields .field private final appStateMonitor:Lcom/google/firebase/perf/application/AppStateMonitor; .field private final clients:Ljava/util/Set; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Set<", "Ljava/lang/ref/WeakReference<", "Lcom/google/firebase/perf/session/SessionAwareObject;", ">;>;" } .end annotation .end field .field private final gaugeManager:Lcom/google/firebase/perf/session/gauges/GaugeManager; .field private perfSession:Lcom/google/firebase/perf/session/PerfSession; .field private syncInitFuture:Ljava/util/concurrent/Future; # direct methods .method public static synthetic $r8$lambda$Gn2fihZRFBiub4JSaw_RDMZGXS4(Lcom/google/firebase/perf/session/SessionManager;Landroid/content/Context;Lcom/google/firebase/perf/session/PerfSession;)V .locals 0 .line 0 invoke-direct {p0, p1, p2}, Lcom/google/firebase/perf/session/SessionManager;->lambda$setApplicationContext$0(Landroid/content/Context;Lcom/google/firebase/perf/session/PerfSession;)V return-void .end method .method static constructor ()V .locals 1 .line 41 new-instance v0, Lcom/google/firebase/perf/session/SessionManager; invoke-direct {v0}, Lcom/google/firebase/perf/session/SessionManager;->()V sput-object v0, Lcom/google/firebase/perf/session/SessionManager;->instance:Lcom/google/firebase/perf/session/SessionManager; return-void .end method .method private constructor ()V .locals 3 .line 63 invoke-static {}, Lcom/google/firebase/perf/session/gauges/GaugeManager;->getInstance()Lcom/google/firebase/perf/session/gauges/GaugeManager; move-result-object v0 .line 64 invoke-static {}, Ljava/util/UUID;->randomUUID()Ljava/util/UUID; move-result-object v1 invoke-virtual {v1}, Ljava/util/UUID;->toString()Ljava/lang/String; move-result-object v1 invoke-static {v1}, Lcom/google/firebase/perf/session/PerfSession;->createWithId(Ljava/lang/String;)Lcom/google/firebase/perf/session/PerfSession; move-result-object v1 .line 65 invoke-static {}, Lcom/google/firebase/perf/application/AppStateMonitor;->getInstance()Lcom/google/firebase/perf/application/AppStateMonitor; move-result-object v2 .line 62 invoke-direct {p0, v0, v1, v2}, Lcom/google/firebase/perf/session/SessionManager;->(Lcom/google/firebase/perf/session/gauges/GaugeManager;Lcom/google/firebase/perf/session/PerfSession;Lcom/google/firebase/perf/application/AppStateMonitor;)V return-void .end method .method public constructor (Lcom/google/firebase/perf/session/gauges/GaugeManager;Lcom/google/firebase/perf/session/PerfSession;Lcom/google/firebase/perf/application/AppStateMonitor;)V .locals 1 .annotation build Landroidx/annotation/VisibleForTesting; .end annotation .line 70 invoke-direct {p0}, Lcom/google/firebase/perf/application/AppStateUpdateHandler;->()V .line 45 new-instance v0, Ljava/util/HashSet; invoke-direct {v0}, Ljava/util/HashSet;->()V iput-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->clients:Ljava/util/Set; iput-object p1, p0, Lcom/google/firebase/perf/session/SessionManager;->gaugeManager:Lcom/google/firebase/perf/session/gauges/GaugeManager; iput-object p2, p0, Lcom/google/firebase/perf/session/SessionManager;->perfSession:Lcom/google/firebase/perf/session/PerfSession; iput-object p3, p0, Lcom/google/firebase/perf/session/SessionManager;->appStateMonitor:Lcom/google/firebase/perf/application/AppStateMonitor; .line 74 invoke-virtual {p0}, Lcom/google/firebase/perf/application/AppStateUpdateHandler;->registerForAppState()V return-void .end method .method public static getInstance()Lcom/google/firebase/perf/session/SessionManager; .locals 1 sget-object v0, Lcom/google/firebase/perf/session/SessionManager;->instance:Lcom/google/firebase/perf/session/SessionManager; return-object v0 .end method .method private synthetic lambda$setApplicationContext$0(Landroid/content/Context;Lcom/google/firebase/perf/session/PerfSession;)V .locals 1 iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->gaugeManager:Lcom/google/firebase/perf/session/gauges/GaugeManager; .line 91 invoke-virtual {v0, p1}, Lcom/google/firebase/perf/session/gauges/GaugeManager;->initializeGaugeMetadataManager(Landroid/content/Context;)V .line 92 invoke-virtual {p2}, Lcom/google/firebase/perf/session/PerfSession;->isGaugeAndEventCollectionEnabled()Z move-result p1 if-eqz p1, :cond_0 iget-object p1, p0, Lcom/google/firebase/perf/session/SessionManager;->gaugeManager:Lcom/google/firebase/perf/session/gauges/GaugeManager; .line 94 invoke-virtual {p2}, Lcom/google/firebase/perf/session/PerfSession;->sessionId()Ljava/lang/String; move-result-object p2 sget-object v0, Lcom/google/firebase/perf/v1/ApplicationProcessState;->FOREGROUND:Lcom/google/firebase/perf/v1/ApplicationProcessState; .line 93 invoke-virtual {p1, p2, v0}, Lcom/google/firebase/perf/session/gauges/GaugeManager;->logGaugeMetadata(Ljava/lang/String;Lcom/google/firebase/perf/v1/ApplicationProcessState;)Z :cond_0 return-void .end method .method private logGaugeMetadataIfCollectionEnabled(Lcom/google/firebase/perf/v1/ApplicationProcessState;)V .locals 2 iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->perfSession:Lcom/google/firebase/perf/session/PerfSession; .line 210 invoke-virtual {v0}, Lcom/google/firebase/perf/session/PerfSession;->isGaugeAndEventCollectionEnabled()Z move-result v0 if-eqz v0, :cond_0 iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->gaugeManager:Lcom/google/firebase/perf/session/gauges/GaugeManager; iget-object v1, p0, Lcom/google/firebase/perf/session/SessionManager;->perfSession:Lcom/google/firebase/perf/session/PerfSession; .line 211 invoke-virtual {v1}, Lcom/google/firebase/perf/session/PerfSession;->sessionId()Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1, p1}, Lcom/google/firebase/perf/session/gauges/GaugeManager;->logGaugeMetadata(Ljava/lang/String;Lcom/google/firebase/perf/v1/ApplicationProcessState;)Z :cond_0 return-void .end method .method private startOrStopCollectingGauges(Lcom/google/firebase/perf/v1/ApplicationProcessState;)V .locals 2 iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->perfSession:Lcom/google/firebase/perf/session/PerfSession; .line 216 invoke-virtual {v0}, Lcom/google/firebase/perf/session/PerfSession;->isGaugeAndEventCollectionEnabled()Z move-result v0 if-eqz v0, :cond_0 iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->gaugeManager:Lcom/google/firebase/perf/session/gauges/GaugeManager; iget-object v1, p0, Lcom/google/firebase/perf/session/SessionManager;->perfSession:Lcom/google/firebase/perf/session/PerfSession; .line 217 invoke-virtual {v0, v1, p1}, Lcom/google/firebase/perf/session/gauges/GaugeManager;->startCollectingGauges(Lcom/google/firebase/perf/session/PerfSession;Lcom/google/firebase/perf/v1/ApplicationProcessState;)V goto :goto_0 :cond_0 iget-object p1, p0, Lcom/google/firebase/perf/session/SessionManager;->gaugeManager:Lcom/google/firebase/perf/session/gauges/GaugeManager; .line 219 invoke-virtual {p1}, Lcom/google/firebase/perf/session/gauges/GaugeManager;->stopCollectingGauges()V :goto_0 return-void .end method # virtual methods .method public getSyncInitFuture()Ljava/util/concurrent/Future; .locals 1 .annotation build Landroidx/annotation/VisibleForTesting; .end annotation iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->syncInitFuture:Ljava/util/concurrent/Future; return-object v0 .end method .method public initializeGaugeCollection()V .locals 1 .line 181 sget-object v0, Lcom/google/firebase/perf/v1/ApplicationProcessState;->FOREGROUND:Lcom/google/firebase/perf/v1/ApplicationProcessState; invoke-direct {p0, v0}, Lcom/google/firebase/perf/session/SessionManager;->logGaugeMetadataIfCollectionEnabled(Lcom/google/firebase/perf/v1/ApplicationProcessState;)V .line 182 invoke-direct {p0, v0}, Lcom/google/firebase/perf/session/SessionManager;->startOrStopCollectingGauges(Lcom/google/firebase/perf/v1/ApplicationProcessState;)V return-void .end method .method public onUpdateAppState(Lcom/google/firebase/perf/v1/ApplicationProcessState;)V .locals 1 .line 101 invoke-super {p0, p1}, Lcom/google/firebase/perf/application/AppStateUpdateHandler;->onUpdateAppState(Lcom/google/firebase/perf/v1/ApplicationProcessState;)V iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->appStateMonitor:Lcom/google/firebase/perf/application/AppStateMonitor; .line 103 invoke-virtual {v0}, Lcom/google/firebase/perf/application/AppStateMonitor;->isColdStart()Z move-result v0 if-eqz v0, :cond_0 return-void .line 109 :cond_0 sget-object v0, Lcom/google/firebase/perf/v1/ApplicationProcessState;->FOREGROUND:Lcom/google/firebase/perf/v1/ApplicationProcessState; if-ne p1, v0, :cond_1 .line 111 invoke-static {}, Ljava/util/UUID;->randomUUID()Ljava/util/UUID; move-result-object p1 invoke-virtual {p1}, Ljava/util/UUID;->toString()Ljava/lang/String; move-result-object p1 invoke-static {p1}, Lcom/google/firebase/perf/session/PerfSession;->createWithId(Ljava/lang/String;)Lcom/google/firebase/perf/session/PerfSession; move-result-object p1 .line 112 invoke-virtual {p0, p1}, Lcom/google/firebase/perf/session/SessionManager;->updatePerfSession(Lcom/google/firebase/perf/session/PerfSession;)V goto :goto_0 :cond_1 iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->perfSession:Lcom/google/firebase/perf/session/PerfSession; .line 116 invoke-virtual {v0}, Lcom/google/firebase/perf/session/PerfSession;->isSessionRunningTooLong()Z move-result v0 if-eqz v0, :cond_2 .line 117 invoke-static {}, Ljava/util/UUID;->randomUUID()Ljava/util/UUID; move-result-object p1 invoke-virtual {p1}, Ljava/util/UUID;->toString()Ljava/lang/String; move-result-object p1 invoke-static {p1}, Lcom/google/firebase/perf/session/PerfSession;->createWithId(Ljava/lang/String;)Lcom/google/firebase/perf/session/PerfSession; move-result-object p1 .line 118 invoke-virtual {p0, p1}, Lcom/google/firebase/perf/session/SessionManager;->updatePerfSession(Lcom/google/firebase/perf/session/PerfSession;)V goto :goto_0 .line 122 :cond_2 invoke-direct {p0, p1}, Lcom/google/firebase/perf/session/SessionManager;->startOrStopCollectingGauges(Lcom/google/firebase/perf/v1/ApplicationProcessState;)V :goto_0 return-void .end method .method public final perfSession()Lcom/google/firebase/perf/session/PerfSession; .locals 1 iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->perfSession:Lcom/google/firebase/perf/session/PerfSession; return-object v0 .end method .method public registerForSessionUpdates(Ljava/lang/ref/WeakReference;)V .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/ref/WeakReference<", "Lcom/google/firebase/perf/session/SessionAwareObject;", ">;)V" } .end annotation iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->clients:Ljava/util/Set; .line 192 monitor-enter v0 :try_start_0 iget-object v1, p0, Lcom/google/firebase/perf/session/SessionManager;->clients:Ljava/util/Set; .line 193 invoke-interface {v1, p1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z .line 194 monitor-exit v0 return-void :catchall_0 move-exception p1 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p1 .end method .method public setApplicationContext(Landroid/content/Context;)V .locals 3 iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->perfSession:Lcom/google/firebase/perf/session/PerfSession; .line 87 invoke-static {}, Ljava/util/concurrent/Executors;->newSingleThreadExecutor()Ljava/util/concurrent/ExecutorService; move-result-object v1 .line 88 new-instance v2, Lcom/google/firebase/perf/session/SessionManager$$ExternalSyntheticLambda0; invoke-direct {v2, p0, p1, v0}, Lcom/google/firebase/perf/session/SessionManager$$ExternalSyntheticLambda0;->(Lcom/google/firebase/perf/session/SessionManager;Landroid/content/Context;Lcom/google/firebase/perf/session/PerfSession;)V .line 89 invoke-interface {v1, v2}, Ljava/util/concurrent/ExecutorService;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; move-result-object p1 iput-object p1, p0, Lcom/google/firebase/perf/session/SessionManager;->syncInitFuture:Ljava/util/concurrent/Future; return-void .end method .method public setPerfSession(Lcom/google/firebase/perf/session/PerfSession;)V .locals 0 .annotation build Landroidx/annotation/VisibleForTesting; .end annotation iput-object p1, p0, Lcom/google/firebase/perf/session/SessionManager;->perfSession:Lcom/google/firebase/perf/session/PerfSession; return-void .end method .method public stopGaugeCollectionIfSessionRunningTooLong()V .locals 1 iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->perfSession:Lcom/google/firebase/perf/session/PerfSession; .line 133 invoke-virtual {v0}, Lcom/google/firebase/perf/session/PerfSession;->isSessionRunningTooLong()Z move-result v0 if-eqz v0, :cond_0 iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->gaugeManager:Lcom/google/firebase/perf/session/gauges/GaugeManager; .line 134 invoke-virtual {v0}, Lcom/google/firebase/perf/session/gauges/GaugeManager;->stopCollectingGauges()V :cond_0 return-void .end method .method public unregisterForSessionUpdates(Ljava/lang/ref/WeakReference;)V .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/ref/WeakReference<", "Lcom/google/firebase/perf/session/SessionAwareObject;", ">;)V" } .end annotation iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->clients:Ljava/util/Set; .line 204 monitor-enter v0 :try_start_0 iget-object v1, p0, Lcom/google/firebase/perf/session/SessionManager;->clients:Ljava/util/Set; .line 205 invoke-interface {v1, p1}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z .line 206 monitor-exit v0 return-void :catchall_0 move-exception p1 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p1 .end method .method public updatePerfSession(Lcom/google/firebase/perf/session/PerfSession;)V .locals 3 .line 148 invoke-virtual {p1}, Lcom/google/firebase/perf/session/PerfSession;->sessionId()Ljava/lang/String; move-result-object v0 iget-object v1, p0, Lcom/google/firebase/perf/session/SessionManager;->perfSession:Lcom/google/firebase/perf/session/PerfSession; invoke-virtual {v1}, Lcom/google/firebase/perf/session/PerfSession;->sessionId()Ljava/lang/String; move-result-object v1 if-ne v0, v1, :cond_0 return-void :cond_0 iput-object p1, p0, Lcom/google/firebase/perf/session/SessionManager;->perfSession:Lcom/google/firebase/perf/session/PerfSession; iget-object v0, p0, Lcom/google/firebase/perf/session/SessionManager;->clients:Ljava/util/Set; .line 154 monitor-enter v0 :try_start_0 iget-object v1, p0, Lcom/google/firebase/perf/session/SessionManager;->clients:Ljava/util/Set; .line 155 invoke-interface {v1}, Ljava/util/Set;->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_2 .line 156 invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v2 check-cast v2, Ljava/lang/ref/WeakReference; invoke-virtual {v2}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object; move-result-object v2 check-cast v2, Lcom/google/firebase/perf/session/SessionAwareObject; if-eqz v2, :cond_1 .line 158 invoke-interface {v2, p1}, Lcom/google/firebase/perf/session/SessionAwareObject;->updateSession(Lcom/google/firebase/perf/session/PerfSession;)V goto :goto_0 :catchall_0 move-exception p1 goto :goto_1 .line 162 :cond_1 invoke-interface {v1}, Ljava/util/Iterator;->remove()V goto :goto_0 .line 165 :cond_2 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 iget-object p1, p0, Lcom/google/firebase/perf/session/SessionManager;->appStateMonitor:Lcom/google/firebase/perf/application/AppStateMonitor; .line 168 invoke-virtual {p1}, Lcom/google/firebase/perf/application/AppStateMonitor;->getAppState()Lcom/google/firebase/perf/v1/ApplicationProcessState; move-result-object p1 invoke-direct {p0, p1}, Lcom/google/firebase/perf/session/SessionManager;->logGaugeMetadataIfCollectionEnabled(Lcom/google/firebase/perf/v1/ApplicationProcessState;)V iget-object p1, p0, Lcom/google/firebase/perf/session/SessionManager;->appStateMonitor:Lcom/google/firebase/perf/application/AppStateMonitor; .line 171 invoke-virtual {p1}, Lcom/google/firebase/perf/application/AppStateMonitor;->getAppState()Lcom/google/firebase/perf/v1/ApplicationProcessState; move-result-object p1 invoke-direct {p0, p1}, Lcom/google/firebase/perf/session/SessionManager;->startOrStopCollectingGauges(Lcom/google/firebase/perf/v1/ApplicationProcessState;)V return-void .line 165 :goto_1 :try_start_1 monitor-exit v0 :try_end_1 .catchall {:try_start_1 .. :try_end_1} :catchall_0 throw p1 .end method