Skip to content

Commit 14ac08a

Browse files
committed
Switch to ml to lazy deps.
1 parent d3879a4 commit 14ac08a

File tree

6 files changed

+49
-40
lines changed

6 files changed

+49
-40
lines changed

firebase-ml-modeldownloader/src/main/java/com/google/firebase/ml/modeldownloader/FirebaseModelDownloaderRegistrar.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,15 @@ public List<Component<?>> getComponents() {
4646
.name(LIBRARY_NAME)
4747
.add(Dependency.required(Context.class))
4848
.add(Dependency.required(FirebaseApp.class))
49-
.add(Dependency.required(FirebaseInstallationsApi.class))
50-
.add(Dependency.required(TransportFactory.class))
49+
.add(Dependency.requiredProvider(FirebaseInstallationsApi.class))
50+
.add(Dependency.requiredProvider(TransportFactory.class))
5151
.factory(
5252
c ->
5353
DaggerModelDownloaderComponent.builder()
5454
.setApplicationContext(c.get(Context.class))
5555
.setFirebaseApp(c.get(FirebaseApp.class))
56-
.setFis(c.get(FirebaseInstallationsApi.class))
57-
.setTransportFactory(c.get(TransportFactory.class))
56+
.setFis(c.getProvider(FirebaseInstallationsApi.class))
57+
.setTransportFactory(c.getProvider(TransportFactory.class))
5858
.build()
5959
.getModelDownloader())
6060
.build(),

firebase-ml-modeldownloader/src/main/java/com/google/firebase/ml/modeldownloader/ModelDownloaderComponent.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.google.android.datatransport.TransportFactory;
2121
import com.google.firebase.FirebaseApp;
2222
import com.google.firebase.FirebaseOptions;
23+
import com.google.firebase.inject.Provider;
2324
import com.google.firebase.installations.FirebaseInstallationsApi;
2425
import dagger.BindsInstance;
2526
import dagger.Component;
@@ -43,10 +44,10 @@ interface Builder {
4344
Builder setFirebaseApp(FirebaseApp app);
4445

4546
@BindsInstance
46-
Builder setFis(FirebaseInstallationsApi fis);
47+
Builder setFis(Provider<FirebaseInstallationsApi> fis);
4748

4849
@BindsInstance
49-
Builder setTransportFactory(TransportFactory transportFactory);
50+
Builder setTransportFactory(Provider<TransportFactory> transportFactory);
5051

5152
ModelDownloaderComponent build();
5253
}

firebase-ml-modeldownloader/src/main/java/com/google/firebase/ml/modeldownloader/internal/CustomModelDownloadService.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.google.android.gms.tasks.Task;
2929
import com.google.android.gms.tasks.Tasks;
3030
import com.google.firebase.FirebaseOptions;
31+
import com.google.firebase.inject.Provider;
3132
import com.google.firebase.installations.FirebaseInstallationsApi;
3233
import com.google.firebase.installations.InstallationTokenResult;
3334
import com.google.firebase.ml.modeldownloader.CustomModel;
@@ -88,7 +89,7 @@ public class CustomModelDownloadService {
8889
static final String DOWNLOAD_MODEL_REGEX = "%s/v1beta2/projects/%s/models/%s:download";
8990

9091
private final ExecutorService executorService;
91-
private final FirebaseInstallationsApi firebaseInstallations;
92+
private final Provider<FirebaseInstallationsApi> firebaseInstallations;
9293
private final FirebaseMlLogger eventLogger;
9394
private final String apiKey;
9495
@Nullable private final String fingerprintHashForPackage;
@@ -102,7 +103,7 @@ public class CustomModelDownloadService {
102103
public CustomModelDownloadService(
103104
Context context,
104105
FirebaseOptions options,
105-
FirebaseInstallationsApi installationsApi,
106+
Provider<FirebaseInstallationsApi> installationsApi,
106107
FirebaseMlLogger eventLogger,
107108
CustomModel.Factory modelFactory) {
108109
this.context = context;
@@ -117,7 +118,7 @@ public CustomModelDownloadService(
117118
@VisibleForTesting
118119
CustomModelDownloadService(
119120
Context context,
120-
FirebaseInstallationsApi firebaseInstallations,
121+
Provider<FirebaseInstallationsApi> firebaseInstallations,
121122
ExecutorService executorService,
122123
String apiKey,
123124
String fingerprintHashForPackage,
@@ -179,7 +180,7 @@ public Task<CustomModel> getCustomModelDetails(
179180
}
180181

181182
Task<InstallationTokenResult> installationAuthTokenTask =
182-
firebaseInstallations.getToken(false);
183+
firebaseInstallations.get().getToken(false);
183184
return installationAuthTokenTask.continueWithTask(
184185
executorService,
185186
(CustomModelTask) -> {

firebase-ml-modeldownloader/src/main/java/com/google/firebase/ml/modeldownloader/internal/DataTransportMlEventSender.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@
1515
package com.google.firebase.ml.modeldownloader.internal;
1616

1717
import androidx.annotation.NonNull;
18-
import androidx.annotation.VisibleForTesting;
1918
import com.google.android.datatransport.Encoding;
2019
import com.google.android.datatransport.Event;
2120
import com.google.android.datatransport.Transport;
2221
import com.google.android.datatransport.TransportFactory;
22+
import com.google.firebase.components.Lazy;
23+
import com.google.firebase.inject.Provider;
2324
import javax.inject.Inject;
2425
import javax.inject.Singleton;
2526

@@ -34,24 +35,23 @@
3435
@Singleton
3536
public class DataTransportMlEventSender {
3637
private static final String FIREBASE_ML_LOG_SDK_NAME = "FIREBASE_ML_LOG_SDK";
37-
private final Transport<FirebaseMlLogEvent> transport;
38+
private final Provider<Transport<FirebaseMlLogEvent>> transport;
3839

3940
@Inject
40-
DataTransportMlEventSender(TransportFactory transportFactory) {
41-
this(
42-
transportFactory.getTransport(
43-
FIREBASE_ML_LOG_SDK_NAME,
44-
FirebaseMlLogEvent.class,
45-
Encoding.of("json"),
46-
FirebaseMlLogEvent.getFirebaseMlJsonTransformer()));
47-
}
48-
49-
@VisibleForTesting
50-
DataTransportMlEventSender(Transport<FirebaseMlLogEvent> transport) {
51-
this.transport = transport;
41+
DataTransportMlEventSender(Provider<TransportFactory> transportFactory) {
42+
this.transport =
43+
new Lazy<>(
44+
() ->
45+
transportFactory
46+
.get()
47+
.getTransport(
48+
FIREBASE_ML_LOG_SDK_NAME,
49+
FirebaseMlLogEvent.class,
50+
Encoding.of("json"),
51+
FirebaseMlLogEvent.getFirebaseMlJsonTransformer()));
5252
}
5353

5454
public void sendEvent(@NonNull FirebaseMlLogEvent firebaseMlLogEvent) {
55-
transport.send(Event.ofData(firebaseMlLogEvent));
55+
transport.get().send(Event.ofData(firebaseMlLogEvent));
5656
}
5757
}

firebase-ml-modeldownloader/src/test/java/com/google/firebase/ml/modeldownloader/internal/CustomModelDownloadServiceTest.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ public void downloadService_noHashSuccess() {
186186
CustomModelDownloadService service =
187187
new CustomModelDownloadService(
188188
ApplicationProvider.getApplicationContext(),
189-
installationsApiMock,
189+
() -> installationsApiMock,
190190
directExecutor,
191191
API_KEY,
192192
PACKAGE_FINGERPRINT_HASH,
@@ -236,7 +236,7 @@ public void downloadService_fingerPrintHashNull_NoCertHeader() {
236236
CustomModelDownloadService service =
237237
new CustomModelDownloadService(
238238
ApplicationProvider.getApplicationContext(),
239-
installationsApiMock,
239+
() -> installationsApiMock,
240240
directExecutor,
241241
API_KEY,
242242
null,
@@ -284,7 +284,7 @@ public void downloadService_withHashSuccess_noMatch() {
284284
CustomModelDownloadService service =
285285
new CustomModelDownloadService(
286286
ApplicationProvider.getApplicationContext(),
287-
installationsApiMock,
287+
() -> installationsApiMock,
288288
directExecutor,
289289
API_KEY,
290290
PACKAGE_FINGERPRINT_HASH,
@@ -334,7 +334,7 @@ public void downloadService_withHashSuccess_match() {
334334
CustomModelDownloadService service =
335335
new CustomModelDownloadService(
336336
ApplicationProvider.getApplicationContext(),
337-
installationsApiMock,
337+
() -> installationsApiMock,
338338
directExecutor,
339339
API_KEY,
340340
PACKAGE_FINGERPRINT_HASH,
@@ -384,7 +384,7 @@ public void downloadService_modelNotFound() {
384384
CustomModelDownloadService service =
385385
new CustomModelDownloadService(
386386
ApplicationProvider.getApplicationContext(),
387-
installationsApiMock,
387+
() -> installationsApiMock,
388388
directExecutor,
389389
API_KEY,
390390
PACKAGE_FINGERPRINT_HASH,
@@ -437,7 +437,7 @@ public void downloadService_badRequest() {
437437
CustomModelDownloadService service =
438438
new CustomModelDownloadService(
439439
ApplicationProvider.getApplicationContext(),
440-
installationsApiMock,
440+
() -> installationsApiMock,
441441
directExecutor,
442442
API_KEY,
443443
PACKAGE_FINGERPRINT_HASH,
@@ -496,7 +496,7 @@ public void downloadService_forbidden() {
496496
CustomModelDownloadService service =
497497
new CustomModelDownloadService(
498498
ApplicationProvider.getApplicationContext(),
499-
installationsApiMock,
499+
() -> installationsApiMock,
500500
directExecutor,
501501
API_KEY,
502502
PACKAGE_FINGERPRINT_HASH,
@@ -555,7 +555,7 @@ public void downloadService_internalError() {
555555
CustomModelDownloadService service =
556556
new CustomModelDownloadService(
557557
ApplicationProvider.getApplicationContext(),
558-
installationsApiMock,
558+
() -> installationsApiMock,
559559
directExecutor,
560560
API_KEY,
561561
PACKAGE_FINGERPRINT_HASH,
@@ -613,7 +613,7 @@ public void downloadService_tooManyRequest() {
613613
CustomModelDownloadService service =
614614
new CustomModelDownloadService(
615615
ApplicationProvider.getApplicationContext(),
616-
installationsApiMock,
616+
() -> installationsApiMock,
617617
directExecutor,
618618
API_KEY,
619619
PACKAGE_FINGERPRINT_HASH,
@@ -669,7 +669,7 @@ public void downloadService_authenticationIssue() {
669669
CustomModelDownloadService service =
670670
new CustomModelDownloadService(
671671
ApplicationProvider.getApplicationContext(),
672-
installationsApiMock,
672+
() -> installationsApiMock,
673673
directExecutor,
674674
API_KEY,
675675
PACKAGE_FINGERPRINT_HASH,
@@ -717,7 +717,7 @@ public void downloadService_unauthenticatedToken() {
717717
CustomModelDownloadService service =
718718
new CustomModelDownloadService(
719719
ApplicationProvider.getApplicationContext(),
720-
installationsApiMock,
720+
() -> installationsApiMock,
721721
directExecutor,
722722
API_KEY,
723723
PACKAGE_FINGERPRINT_HASH,
@@ -746,7 +746,7 @@ public void downloadService_nullModelHashPassedUnauthenticatedToken() {
746746
CustomModelDownloadService service =
747747
new CustomModelDownloadService(
748748
ApplicationProvider.getApplicationContext(),
749-
installationsApiMock,
749+
() -> installationsApiMock,
750750
directExecutor,
751751
API_KEY,
752752
PACKAGE_FINGERPRINT_HASH,
@@ -776,7 +776,7 @@ public void downloadService_malFormedUrl() {
776776
CustomModelDownloadService service =
777777
new CustomModelDownloadService(
778778
ApplicationProvider.getApplicationContext(),
779-
installationsApiMock,
779+
() -> installationsApiMock,
780780
directExecutor,
781781
API_KEY,
782782
PACKAGE_FINGERPRINT_HASH,
@@ -805,7 +805,7 @@ public void downloadService_unauthenticatedToken_noNetworkConnection() {
805805
CustomModelDownloadService service =
806806
new CustomModelDownloadService(
807807
ApplicationProvider.getApplicationContext(),
808-
installationsApiMock,
808+
() -> installationsApiMock,
809809
directExecutor,
810810
API_KEY,
811811
PACKAGE_FINGERPRINT_HASH,

firebase-ml-modeldownloader/src/test/java/com/google/firebase/ml/modeldownloader/internal/DataTransportMlEventSenderTest.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,24 @@
1818
import static org.mockito.Mockito.doNothing;
1919
import static org.mockito.Mockito.times;
2020
import static org.mockito.Mockito.verify;
21+
import static org.mockito.Mockito.when;
2122

2223
import com.google.android.datatransport.Transport;
24+
import com.google.android.datatransport.TransportFactory;
2325
import com.google.firebase.ml.modeldownloader.internal.FirebaseMlLogEvent.EventName;
2426
import com.google.firebase.ml.modeldownloader.internal.FirebaseMlLogEvent.SystemInfo;
2527
import org.junit.Before;
2628
import org.junit.Test;
2729
import org.junit.runner.RunWith;
30+
import org.mockito.ArgumentMatchers;
2831
import org.mockito.Mock;
2932
import org.mockito.MockitoAnnotations;
3033
import org.robolectric.RobolectricTestRunner;
3134

3235
@RunWith(RobolectricTestRunner.class)
3336
public class DataTransportMlEventSenderTest {
3437

38+
@Mock private TransportFactory mockTransportFactory;
3539
@Mock private Transport<FirebaseMlLogEvent> mockTransport;
3640

3741
private DataTransportMlEventSender statsSender;
@@ -48,7 +52,10 @@ public class DataTransportMlEventSenderTest {
4852
@Before
4953
public void setup() {
5054
MockitoAnnotations.initMocks(this);
51-
statsSender = new DataTransportMlEventSender(mockTransport);
55+
when(mockTransportFactory.getTransport(
56+
any(), ArgumentMatchers.<Class<FirebaseMlLogEvent>>any(), any(), any()))
57+
.thenReturn(mockTransport);
58+
statsSender = new DataTransportMlEventSender(() -> mockTransportFactory);
5259
}
5360

5461
@Test

0 commit comments

Comments
 (0)