Skip to content

Commit 70bf602

Browse files
authored
Inject firebase common executors to Crashlytics (#6019)
According to the documentation [here](https://firebase.github.io/firebase-android-sdk/components/executors/). Inject Firebase common executors for later refactor work. Crashlytics will need at least 2 types of executors: background(for disk I/O writes), blocking(networking calls). Note: all changes later will also merge to the feature branch: `crashlytics-exception-handler` #no-changelog
1 parent 7a313c3 commit 70bf602

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

firebase-crashlytics/src/androidTest/java/com/google/firebase/crashlytics/internal/common/SessionReportingCoordinatorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ public void onReportSend_successfulReportsAreDeleted() {
497497
when(reportSender.enqueueReport(mockReport1, false)).thenReturn(successfulTask);
498498
when(reportSender.enqueueReport(mockReport2, false)).thenReturn(failedTask);
499499

500-
when(idManager.fetchTrueFid(any())).thenReturn(new FirebaseInstallationId("fid", "authToken"));
500+
when(idManager.fetchTrueFid(anyBoolean())).thenReturn(new FirebaseInstallationId("fid", "authToken"));
501501
reportingCoordinator.sendReports(Runnable::run);
502502

503503
verify(reportSender).enqueueReport(mockReport1, false);

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/CrashlyticsRegistrar.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@
1616

1717
import com.google.firebase.FirebaseApp;
1818
import com.google.firebase.analytics.connector.AnalyticsConnector;
19+
import com.google.firebase.annotations.concurrent.Background;
20+
import com.google.firebase.annotations.concurrent.Blocking;
1921
import com.google.firebase.components.Component;
2022
import com.google.firebase.components.ComponentContainer;
2123
import com.google.firebase.components.ComponentRegistrar;
2224
import com.google.firebase.components.Dependency;
25+
import com.google.firebase.components.Qualified;
2326
import com.google.firebase.crashlytics.internal.CrashlyticsNativeComponent;
2427
import com.google.firebase.inject.Deferred;
2528
import com.google.firebase.installations.FirebaseInstallationsApi;
@@ -29,10 +32,14 @@
2932
import com.google.firebase.sessions.api.SessionSubscriber;
3033
import java.util.Arrays;
3134
import java.util.List;
35+
import java.util.concurrent.ExecutorService;
3236

3337
/** @hide */
3438
public class CrashlyticsRegistrar implements ComponentRegistrar {
3539
private static final String LIBRARY_NAME = "fire-cls";
40+
private final Qualified<ExecutorService> backgroundExecutorService = Qualified.qualified(Background.class, ExecutorService.class);
41+
private final Qualified<ExecutorService> blockingExecutorService = Qualified.qualified(Blocking.class, ExecutorService.class);
42+
3643

3744
static {
3845
// Add Crashlytics as a dependency of Sessions when this class is loaded into memory.
@@ -46,6 +53,8 @@ public List<Component<?>> getComponents() {
4653
.name(LIBRARY_NAME)
4754
.add(Dependency.required(FirebaseApp.class))
4855
.add(Dependency.required(FirebaseInstallationsApi.class))
56+
.add(Dependency.required(backgroundExecutorService))
57+
.add(Dependency.required(blockingExecutorService))
4958
.add(Dependency.deferred(CrashlyticsNativeComponent.class))
5059
.add(Dependency.deferred(AnalyticsConnector.class))
5160
.add(Dependency.deferred(FirebaseRemoteConfigInterop.class))
@@ -70,6 +79,6 @@ private FirebaseCrashlytics buildCrashlytics(ComponentContainer container) {
7079
container.getDeferred(FirebaseRemoteConfigInterop.class);
7180

7281
return FirebaseCrashlytics.init(
73-
app, firebaseInstallations, nativeComponent, analyticsConnector, remoteConfigInterop);
82+
app, firebaseInstallations, nativeComponent, analyticsConnector, remoteConfigInterop, container.get(backgroundExecutorService), container.get(blockingExecutorService));
7483
}
7584
}

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/FirebaseCrashlytics.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import com.google.android.gms.tasks.Tasks;
2525
import com.google.firebase.FirebaseApp;
2626
import com.google.firebase.analytics.connector.AnalyticsConnector;
27+
import com.google.firebase.annotations.concurrent.Background;
28+
import com.google.firebase.annotations.concurrent.Blocking;
2729
import com.google.firebase.crashlytics.internal.CrashlyticsNativeComponent;
2830
import com.google.firebase.crashlytics.internal.CrashlyticsNativeComponentDeferredProxy;
2931
import com.google.firebase.crashlytics.internal.DevelopmentPlatformProvider;
@@ -68,7 +70,9 @@ public class FirebaseCrashlytics {
6870
@NonNull FirebaseInstallationsApi firebaseInstallationsApi,
6971
@NonNull Deferred<CrashlyticsNativeComponent> nativeComponent,
7072
@NonNull Deferred<AnalyticsConnector> analyticsConnector,
71-
@NonNull Deferred<FirebaseRemoteConfigInterop> remoteConfigInteropDeferred) {
73+
@NonNull Deferred<FirebaseRemoteConfigInterop> remoteConfigInteropDeferred,
74+
@Background ExecutorService liteExecutorService,
75+
@Blocking ExecutorService blockingExecutorService) {
7276

7377
Context context = app.getApplicationContext();
7478
final String appIdentifier = context.getPackageName();

0 commit comments

Comments
 (0)