Skip to content

Commit f31e2ce

Browse files
committed
Force AQS to init before PerfEarly
1 parent dc74ce3 commit f31e2ce

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

firebase-perf/src/main/java/com/google/firebase/perf/FirebasePerfEarly.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@
1818
import androidx.annotation.Nullable;
1919
import com.google.firebase.FirebaseApp;
2020
import com.google.firebase.StartupTime;
21+
import com.google.firebase.inject.Provider;
2122
import com.google.firebase.perf.application.AppStateMonitor;
2223
import com.google.firebase.perf.config.ConfigResolver;
2324
import com.google.firebase.perf.metrics.AppStartTrace;
2425
import com.google.firebase.perf.session.FirebasePerformanceSessionSubscriber;
26+
import com.google.firebase.sessions.FirebaseSessions;
2527
import com.google.firebase.sessions.api.FirebaseSessionsDependencies;
2628
import java.util.concurrent.Executor;
2729

@@ -35,13 +37,19 @@
3537
public class FirebasePerfEarly {
3638

3739
public FirebasePerfEarly(
38-
FirebaseApp app, @Nullable StartupTime startupTime, Executor uiExecutor) {
40+
FirebaseApp app,
41+
@Nullable StartupTime startupTime,
42+
Executor uiExecutor,
43+
Provider<FirebaseSessions> firebaseSessions) {
3944
Context context = app.getApplicationContext();
4045

4146
// Initialize ConfigResolver early for accessing device caching layer.
4247
ConfigResolver configResolver = ConfigResolver.getInstance();
4348
configResolver.setApplicationContext(context);
4449

50+
// Ensure FirebaseSessions was initialized
51+
firebaseSessions.get();
52+
4553
// Register FirebasePerformance as a subscriber ASAP - which will start collecting gauges if the
4654
// FirebaseSession is verbose.
4755
FirebaseSessionsDependencies.register(new FirebasePerformanceSessionSubscriber(configResolver));

firebase-perf/src/main/java/com/google/firebase/perf/FirebasePerfRegistrar.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.google.firebase.perf.injection.modules.FirebasePerformanceModule;
3131
import com.google.firebase.platforminfo.LibraryVersionComponent;
3232
import com.google.firebase.remoteconfig.RemoteConfigComponent;
33+
import com.google.firebase.sessions.FirebaseSessions;
3334
import com.google.firebase.sessions.api.FirebaseSessionsDependencies;
3435
import com.google.firebase.sessions.api.SessionSubscriber;
3536
import java.util.Arrays;
@@ -46,6 +47,7 @@
4647
*/
4748
@Keep
4849
public class FirebasePerfRegistrar implements ComponentRegistrar {
50+
4951
private static final String LIBRARY_NAME = "fire-perf";
5052
private static final String EARLY_LIBRARY_NAME = "fire-perf-early";
5153

@@ -73,15 +75,17 @@ public List<Component<?>> getComponents() {
7375
.add(Dependency.required(FirebaseApp.class))
7476
.add(Dependency.optionalProvider(StartupTime.class))
7577
.add(Dependency.required(uiExecutor))
78+
.add(Dependency.optionalProvider(FirebaseSessions.class))
7679
.eagerInDefaultApp()
7780
.factory(
7881
container ->
7982
new FirebasePerfEarly(
8083
container.get(FirebaseApp.class),
8184
container.getProvider(StartupTime.class).get(),
82-
container.get(uiExecutor)))
85+
container.get(uiExecutor),
86+
container.getProvider(FirebaseSessions.class)))
8387
.build(),
84-
/**
88+
/*
8589
* Fireperf SDK is lazily by {@link FirebasePerformanceInitializer} during {@link
8690
* com.google.firebase.perf.application.AppStateMonitor#onActivityResumed(Activity)}. we use
8791
* "lazy" dependency for some components that are not required during initialization so as

firebase-perf/src/test/java/com/google/firebase/perf/FirebasePerfRegistrarTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.google.firebase.components.Qualified;
2626
import com.google.firebase.installations.FirebaseInstallationsApi;
2727
import com.google.firebase.remoteconfig.RemoteConfigComponent;
28+
import com.google.firebase.sessions.FirebaseSessions;
2829
import java.util.List;
2930
import java.util.concurrent.Executor;
3031
import org.junit.Test;
@@ -59,7 +60,8 @@ public void testGetComponents() {
5960
.containsExactly(
6061
Dependency.required(Qualified.qualified(UiThread.class, Executor.class)),
6162
Dependency.required(FirebaseApp.class),
62-
Dependency.optionalProvider(StartupTime.class));
63+
Dependency.optionalProvider(StartupTime.class),
64+
Dependency.optionalProvider(FirebaseSessions.class));
6365

6466
assertThat(firebasePerfEarlyComponent.isLazy()).isFalse();
6567
}

0 commit comments

Comments
 (0)