Skip to content

Commit 77964e7

Browse files
committed
TransportManager could not be initialized with sessionManager, changing provider
1 parent 663e59e commit 77964e7

File tree

7 files changed

+56
-44
lines changed

7 files changed

+56
-44
lines changed

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,8 @@
2626
import com.google.firebase.components.Qualified;
2727
import com.google.firebase.installations.FirebaseInstallationsApi;
2828
import com.google.firebase.perf.injection.components.DaggerFirebasePerformanceComponent;
29-
import com.google.firebase.perf.injection.components.DaggerSessionManagerComponent;
3029
import com.google.firebase.perf.injection.components.FirebasePerformanceComponent;
31-
import com.google.firebase.perf.injection.components.SessionManagerComponent;
3230
import com.google.firebase.perf.injection.modules.FirebasePerformanceModule;
33-
import com.google.firebase.perf.injection.modules.SessionManagerModule;
3431
import com.google.firebase.perf.session.SessionManager;
3532
import com.google.firebase.platforminfo.LibraryVersionComponent;
3633
import com.google.firebase.remoteconfig.RemoteConfigComponent;
@@ -81,7 +78,9 @@ public List<Component<?>> getComponents() {
8178
container.get(uiExecutor),
8279
container.get(SessionManager.class)))
8380
.build(),
84-
Component.builder(SessionManager.class).factory(container -> new SessionManager()).build(),
81+
Component.builder(SessionManager.class).factory(container ->
82+
SessionManager.getInstance() //TODO: JR: Remove getInstance in subsequent phases
83+
).build(),
8584
/**
8685
* Fireperf SDK is lazily by {@link FirebasePerformanceInitializer} during {@link
8786
* com.google.firebase.perf.application.AppStateMonitor#onActivityResumed(Activity)}. we use

firebase-perf/src/main/java/com/google/firebase/perf/application/AppStateMonitor.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ public synchronized void onActivityStarted(Activity activity) {
200200
// Starts recording frame metrics for this activity.
201201
activityToRecorderMap.get(activity).start();
202202
// Start the Trace
203-
Trace screenTrace = new Trace(getScreenTraceName(activity), transportManager, clock, this, sessionManager);
203+
Trace screenTrace = new Trace(getScreenTraceName(activity), transportManager, clock, this);
204204
screenTrace.start();
205205
activityToScreenTraceMap.put(activity, screenTrace);
206206
}
@@ -416,6 +416,10 @@ private static boolean isScreenPerformanceRecordingSupported() {
416416
return FrameMetricsRecorder.isFrameMetricsRecordingSupported();
417417
}
418418

419+
public SessionManager getSessionManager() {
420+
return sessionManager;
421+
}
422+
419423
/** An interface to be implemented by subscribers which needs to receive app state update. */
420424
public static interface AppStateCallback {
421425
public void onUpdateAppState(ApplicationProcessState newState);
@@ -466,10 +470,6 @@ public void setIsColdStart(boolean isColdStart) {
466470
this.isColdStart = isColdStart;
467471
}
468472

469-
public SessionManager getSessionManager() {
470-
return sessionManager;
471-
}
472-
473473
public void setSessionManager(SessionManager sessionManager) {
474474
this.sessionManager = sessionManager;
475475
}

firebase-perf/src/main/java/com/google/firebase/perf/application/FragmentStateMonitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public void onFragmentResumed(@NonNull FragmentManager fm, @NonNull Fragment f)
6767
// Start Fragment screen trace
6868
logger.debug("FragmentMonitor %s.onFragmentResumed", f.getClass().getSimpleName());
6969
Trace fragmentTrace =
70-
new Trace(getFragmentScreenTraceName(f), transportManager, clock, appStateMonitor, sessionManager);
70+
new Trace(getFragmentScreenTraceName(f), transportManager, clock, appStateMonitor);
7171
fragmentTrace.start();
7272

7373
fragmentTrace.putAttribute(

firebase-perf/src/main/java/com/google/firebase/perf/metrics/Trace.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,11 +181,12 @@ public Trace(
181181
this.transportManager = transportManager;
182182
sessions = Collections.synchronizedList(new ArrayList<>());
183183
this.gaugeManager = gaugeManager;
184-
this.sessionManager = transportManager.getSessionManager();
184+
this.sessionManager = appStateMonitor.getSessionManager();
185185
}
186186

187187
private Trace(@NonNull Parcel in, boolean isDataOnly) {
188188
super(isDataOnly ? null : AppStateMonitor.getInstance());
189+
this.sessionManager = AppStateMonitor.getInstance().getSessionManager();
189190
parent = in.readParcelable(Trace.class.getClassLoader());
190191
name = in.readString();
191192
subtraces = new ArrayList<>();
@@ -207,7 +208,6 @@ private Trace(@NonNull Parcel in, boolean isDataOnly) {
207208
clock = new Clock();
208209
gaugeManager = GaugeManager.getInstance();
209210
}
210-
sessionManager = TransportManager.getInstance().getSessionManager();
211211
}
212212

213213
/** Starts this trace. */
@@ -437,8 +437,7 @@ static synchronized Trace getTrace(
437437
@NonNull String traceName,
438438
@NonNull TransportManager transportManager,
439439
@NonNull Clock clock,
440-
@NonNull AppStateMonitor appStateMonitor,
441-
@NonNull SessionManager sessionManager) {
440+
@NonNull AppStateMonitor appStateMonitor) {
442441
Trace trace = traceNameToTraceMap.get(traceName);
443442
if (trace == null) {
444443
trace =

firebase-perf/src/main/java/com/google/firebase/perf/network/FirebasePerfHttpClient.java

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@
1515
package com.google.firebase.perf.network;
1616

1717
import androidx.annotation.Keep;
18+
19+
import com.google.firebase.perf.FirebasePerformance;
1820
import com.google.firebase.perf.metrics.NetworkRequestMetricBuilder;
21+
import com.google.firebase.perf.session.SessionManager;
1922
import com.google.firebase.perf.transport.TransportManager;
2023
import com.google.firebase.perf.util.Timer;
2124
import java.io.IOException;
@@ -45,7 +48,7 @@ private FirebasePerfHttpClient() {}
4548
@Keep
4649
public static HttpResponse execute(final HttpClient client, final HttpUriRequest request)
4750
throws IOException {
48-
return execute(client, request, new Timer(), TransportManager.getInstance());
51+
return execute(client, request, new Timer(), TransportManager.getInstance(), SessionManager.getInstance());
4952
}
5053

5154
/**
@@ -58,7 +61,7 @@ public static HttpResponse execute(final HttpClient client, final HttpUriRequest
5861
public static HttpResponse execute(
5962
final HttpClient client, final HttpUriRequest request, final HttpContext context)
6063
throws IOException {
61-
return execute(client, request, context, new Timer(), TransportManager.getInstance());
64+
return execute(client, request, context, new Timer(), TransportManager.getInstance(), SessionManager.getInstance());
6265
}
6366

6467
/**
@@ -73,7 +76,7 @@ public static <T> T execute(
7376
final HttpUriRequest request,
7477
final ResponseHandler<T> responseHandler)
7578
throws IOException {
76-
return execute(client, request, responseHandler, new Timer(), TransportManager.getInstance());
79+
return execute(client, request, responseHandler, new Timer(), TransportManager.getInstance(), SessionManager.getInstance());
7780
}
7881

7982
/**
@@ -90,7 +93,7 @@ public static <T> T execute(
9093
final HttpContext context)
9194
throws IOException {
9295
return execute(
93-
client, request, responseHandler, context, new Timer(), TransportManager.getInstance());
96+
client, request, responseHandler, context, new Timer(), TransportManager.getInstance(), SessionManager.getInstance());
9497
}
9598

9699
/**
@@ -103,7 +106,7 @@ public static <T> T execute(
103106
public static HttpResponse execute(
104107
final HttpClient client, final HttpHost target, final HttpRequest request)
105108
throws IOException {
106-
return execute(client, target, request, new Timer(), TransportManager.getInstance());
109+
return execute(client, target, request, new Timer(), TransportManager.getInstance(), SessionManager.getInstance());
107110
}
108111

109112
/**
@@ -119,7 +122,7 @@ public static HttpResponse execute(
119122
final HttpRequest request,
120123
final HttpContext context)
121124
throws IOException {
122-
return execute(client, target, request, context, new Timer(), TransportManager.getInstance());
125+
return execute(client, target, request, context, new Timer(), TransportManager.getInstance(), SessionManager.getInstance());
123126
}
124127

125128
/**
@@ -136,7 +139,7 @@ public static <T> T execute(
136139
final ResponseHandler<? extends T> responseHandler)
137140
throws IOException {
138141
return execute(
139-
client, target, request, responseHandler, new Timer(), TransportManager.getInstance());
142+
client, target, request, responseHandler, new Timer(), TransportManager.getInstance(), SessionManager.getInstance());
140143
}
141144

142145
/**
@@ -160,7 +163,8 @@ public static <T> T execute(
160163
responseHandler,
161164
context,
162165
new Timer(),
163-
TransportManager.getInstance());
166+
TransportManager.getInstance(),
167+
SessionManager.getInstance());
164168
}
165169

166170
/**
@@ -173,10 +177,11 @@ static HttpResponse execute(
173177
final HttpClient client,
174178
final HttpUriRequest request,
175179
final Timer timer,
176-
final TransportManager transportManager)
180+
final TransportManager transportManager,
181+
final SessionManager sessionManager)
177182
throws IOException {
178183
HttpResponse response = null;
179-
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, transportManager.getSessionManager());
184+
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, sessionManager);
180185
try {
181186
builder.setUrl(request.getURI().toString()).setHttpMethod(request.getMethod());
182187
Long requestContentLength =
@@ -221,10 +226,11 @@ static HttpResponse execute(
221226
final HttpUriRequest request,
222227
final HttpContext context,
223228
final Timer timer,
224-
final TransportManager transportManager)
229+
final TransportManager transportManager,
230+
final SessionManager sessionManager)
225231
throws IOException {
226232
HttpResponse response = null;
227-
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, transportManager.getSessionManager());
233+
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, sessionManager);
228234
try {
229235
builder.setUrl(request.getURI().toString()).setHttpMethod(request.getMethod());
230236
Long requestContentLength =
@@ -270,9 +276,10 @@ static <T> T execute(
270276
final HttpUriRequest request,
271277
final ResponseHandler<T> responseHandler,
272278
final Timer timer,
273-
final TransportManager transportManager)
279+
final TransportManager transportManager,
280+
final SessionManager sessionManager)
274281
throws IOException {
275-
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, transportManager.getSessionManager());
282+
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, sessionManager);
276283
try {
277284
builder.setUrl(request.getURI().toString()).setHttpMethod(request.getMethod());
278285
Long requestContentLength =
@@ -307,9 +314,10 @@ static <T> T execute(
307314
final ResponseHandler<T> responseHandler,
308315
final HttpContext context,
309316
final Timer timer,
310-
final TransportManager transportManager)
317+
final TransportManager transportManager,
318+
final SessionManager sessionManager)
311319
throws IOException {
312-
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, transportManager.getSessionManager());
320+
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, sessionManager);
313321
try {
314322
builder.setUrl(request.getURI().toString()).setHttpMethod(request.getMethod());
315323
Long requestContentLength =
@@ -344,10 +352,11 @@ static HttpResponse execute(
344352
final HttpHost target,
345353
final HttpRequest request,
346354
final Timer timer,
347-
final TransportManager transportManager)
355+
final TransportManager transportManager,
356+
final SessionManager sessionManager)
348357
throws IOException {
349358
HttpResponse response = null;
350-
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, transportManager.getSessionManager());
359+
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, sessionManager);
351360
try {
352361
builder
353362
.setUrl(target.toURI() + request.getRequestLine().getUri())
@@ -396,10 +405,11 @@ static HttpResponse execute(
396405
final HttpRequest request,
397406
final HttpContext context,
398407
final Timer timer,
399-
final TransportManager transportManager)
408+
final TransportManager transportManager,
409+
final SessionManager sessionManager)
400410
throws IOException {
401411
HttpResponse response = null;
402-
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, transportManager.getSessionManager());
412+
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, sessionManager);
403413
try {
404414
builder
405415
.setUrl(target.toURI() + request.getRequestLine().getUri())
@@ -448,9 +458,10 @@ static <T> T execute(
448458
final HttpRequest request,
449459
final ResponseHandler<? extends T> responseHandler,
450460
final Timer timer,
451-
final TransportManager transportManager)
461+
final TransportManager transportManager,
462+
final SessionManager sessionManager)
452463
throws IOException {
453-
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, transportManager.getSessionManager());
464+
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, sessionManager);
454465
try {
455466
builder
456467
.setUrl(target.toURI() + request.getRequestLine().getUri())
@@ -490,9 +501,10 @@ static <T> T execute(
490501
final ResponseHandler<? extends T> responseHandler,
491502
final HttpContext context,
492503
final Timer timer,
493-
final TransportManager transportManager)
504+
final TransportManager transportManager,
505+
final SessionManager sessionManager)
494506
throws IOException {
495-
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, transportManager.getSessionManager());
507+
NetworkRequestMetricBuilder builder = NetworkRequestMetricBuilder.builder(transportManager, sessionManager);
496508
try {
497509
builder
498510
.setUrl(target.toURI() + request.getRequestLine().getUri())

firebase-perf/src/main/java/com/google/firebase/perf/session/SessionManager.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@
3636
/** Session manager to generate sessionIDs and broadcast to the application. */
3737
@Keep // Needed because of b/117526359.
3838
public class SessionManager extends AppStateUpdateHandler {
39-
39+
@SuppressLint("StaticFieldLeak")
40+
private static final SessionManager instance = new SessionManager();
4041
private final GaugeManager gaugeManager;
4142
private final AppStateMonitor appStateMonitor;
4243
private final Set<WeakReference<SessionAwareObject>> clients = new HashSet<>();
@@ -49,7 +50,12 @@ public final PerfSession perfSession() {
4950
return perfSession;
5051
}
5152

52-
public SessionManager() {
53+
/** Returns the singleton instance of SessionManager. */
54+
public static SessionManager getInstance() {
55+
return instance;
56+
}
57+
58+
private SessionManager() {
5359
// Generate a new sessionID for every cold start.
5460
this(
5561
GaugeManager.getInstance(),

firebase-perf/src/main/java/com/google/firebase/perf/transport/TransportManager.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -664,10 +664,6 @@ private String getConsoleUrl(TraceMetric traceMetric) {
664664
return ConsoleUrlGenerator.generateCustomTraceUrl(projectId, packageName, traceName);
665665
}
666666
}
667-
668-
public SessionManager getSessionManager() {
669-
return sessionManager;
670-
}
671667
// endregion
672668

673669
// region Visible for Testing

0 commit comments

Comments
 (0)