Skip to content

Commit 5b35157

Browse files
committed
Migrate firebase-appcheck-playintegrity to go/firebase-android-executors.
1 parent 0252a8e commit 5b35157

File tree

6 files changed

+34
-20
lines changed

6 files changed

+34
-20
lines changed

appcheck/firebase-appcheck-playintegrity/firebase-appcheck-playintegrity.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ android {
4141
}
4242

4343
dependencies {
44+
implementation project(':firebase-annotations')
4445
implementation project(':firebase-common')
4546
implementation project(':firebase-components')
4647
implementation project(':appcheck:firebase-appcheck')
@@ -50,6 +51,7 @@ dependencies {
5051

5152
javadocClasspath 'com.google.auto.value:auto-value-annotations:1.6.6'
5253

54+
testImplementation project(':integ-testing')
5355
testImplementation 'junit:junit:4.13.2'
5456
testImplementation 'org.mockito:mockito-core:3.4.6'
5557
testImplementation "com.google.truth:truth:$googleTruthVersion"

appcheck/firebase-appcheck-playintegrity/src/main/java/com/google/firebase/appcheck/playintegrity/FirebaseAppCheckPlayIntegrityRegistrar.java

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

1717
import com.google.android.gms.common.annotation.KeepForSdk;
1818
import com.google.firebase.FirebaseApp;
19+
import com.google.firebase.annotations.concurrent.Blocking;
1920
import com.google.firebase.appcheck.playintegrity.internal.PlayIntegrityAppCheckProvider;
2021
import com.google.firebase.components.Component;
2122
import com.google.firebase.components.ComponentRegistrar;
2223
import com.google.firebase.components.Dependency;
24+
import com.google.firebase.components.Qualified;
2325
import com.google.firebase.platforminfo.LibraryVersionComponent;
2426
import java.util.Arrays;
2527
import java.util.List;
28+
import java.util.concurrent.Executor;
2629

2730
/**
2831
* {@link ComponentRegistrar} for setting up FirebaseAppCheck play integrity's dependency injections
@@ -36,12 +39,17 @@ public class FirebaseAppCheckPlayIntegrityRegistrar implements ComponentRegistra
3639

3740
@Override
3841
public List<Component<?>> getComponents() {
42+
Qualified<Executor> blockingExecutor = Qualified.qualified(Blocking.class, Executor.class);
43+
3944
return Arrays.asList(
4045
Component.builder(PlayIntegrityAppCheckProvider.class)
4146
.name(LIBRARY_NAME)
4247
.add(Dependency.required(FirebaseApp.class))
48+
.add(Dependency.required(blockingExecutor))
4349
.factory(
44-
(container) -> new PlayIntegrityAppCheckProvider(container.get(FirebaseApp.class)))
50+
(container) ->
51+
new PlayIntegrityAppCheckProvider(
52+
container.get(FirebaseApp.class), container.get(blockingExecutor)))
4553
.build(),
4654
LibraryVersionComponent.create(LIBRARY_NAME, BuildConfig.VERSION_NAME));
4755
}

appcheck/firebase-appcheck-playintegrity/src/main/java/com/google/firebase/appcheck/playintegrity/internal/PlayIntegrityAppCheckProvider.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@
2424
import com.google.android.play.core.integrity.IntegrityTokenRequest;
2525
import com.google.android.play.core.integrity.IntegrityTokenResponse;
2626
import com.google.firebase.FirebaseApp;
27+
import com.google.firebase.annotations.concurrent.Blocking;
2728
import com.google.firebase.appcheck.AppCheckProvider;
2829
import com.google.firebase.appcheck.AppCheckToken;
2930
import com.google.firebase.appcheck.internal.DefaultAppCheckToken;
3031
import com.google.firebase.appcheck.internal.NetworkClient;
3132
import com.google.firebase.appcheck.internal.RetryManager;
32-
import java.util.concurrent.ExecutorService;
33-
import java.util.concurrent.Executors;
33+
import java.util.concurrent.Executor;
3434

3535
public class PlayIntegrityAppCheckProvider implements AppCheckProvider {
3636

@@ -39,17 +39,16 @@ public class PlayIntegrityAppCheckProvider implements AppCheckProvider {
3939
private final String projectNumber;
4040
private final IntegrityManager integrityManager;
4141
private final NetworkClient networkClient;
42-
private final ExecutorService backgroundExecutor;
42+
private final Executor blockingExecutor;
4343
private final RetryManager retryManager;
4444

45-
// TODO(b/258273630): Migrate to go/firebase-android-executors
46-
@SuppressLint("ThreadPoolCreation")
47-
public PlayIntegrityAppCheckProvider(@NonNull FirebaseApp firebaseApp) {
45+
public PlayIntegrityAppCheckProvider(
46+
@NonNull FirebaseApp firebaseApp, @Blocking Executor blockingExecutor) {
4847
this(
4948
firebaseApp.getOptions().getGcmSenderId(),
5049
IntegrityManagerFactory.create(firebaseApp.getApplicationContext()),
5150
new NetworkClient(firebaseApp),
52-
Executors.newCachedThreadPool(),
51+
blockingExecutor,
5352
new RetryManager());
5453
}
5554

@@ -58,12 +57,12 @@ public PlayIntegrityAppCheckProvider(@NonNull FirebaseApp firebaseApp) {
5857
@NonNull String projectNumber,
5958
@NonNull IntegrityManager integrityManager,
6059
@NonNull NetworkClient networkClient,
61-
@NonNull ExecutorService backgroundExecutor,
60+
@NonNull Executor blockingExecutor,
6261
@NonNull RetryManager retryManager) {
6362
this.projectNumber = projectNumber;
6463
this.integrityManager = integrityManager;
6564
this.networkClient = networkClient;
66-
this.backgroundExecutor = backgroundExecutor;
65+
this.blockingExecutor = blockingExecutor;
6766
this.retryManager = retryManager;
6867
}
6968

@@ -78,7 +77,7 @@ public Task<AppCheckToken> getToken() {
7877
ExchangePlayIntegrityTokenRequest request =
7978
new ExchangePlayIntegrityTokenRequest(integrityTokenResponse.token());
8079
return Tasks.call(
81-
backgroundExecutor,
80+
blockingExecutor,
8281
() ->
8382
networkClient.exchangeAttestationForAppCheckToken(
8483
request.toJsonString().getBytes(UTF_8),
@@ -100,7 +99,7 @@ private Task<IntegrityTokenResponse> getPlayIntegrityAttestation() {
10099
new GeneratePlayIntegrityChallengeRequest();
101100
Task<GeneratePlayIntegrityChallengeResponse> generateChallengeTask =
102101
Tasks.call(
103-
backgroundExecutor,
102+
blockingExecutor,
104103
() ->
105104
GeneratePlayIntegrityChallengeResponse.fromJsonString(
106105
networkClient.generatePlayIntegrityChallenge(

appcheck/firebase-appcheck-playintegrity/src/test/java/com/google/firebase/appcheck/playintegrity/FirebaseAppCheckPlayIntegrityRegistrarTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@
1717
import static com.google.common.truth.Truth.assertThat;
1818

1919
import com.google.firebase.FirebaseApp;
20+
import com.google.firebase.annotations.concurrent.Blocking;
2021
import com.google.firebase.components.Component;
2122
import com.google.firebase.components.Dependency;
23+
import com.google.firebase.components.Qualified;
2224
import java.util.List;
25+
import java.util.concurrent.Executor;
2326
import org.junit.Test;
2427
import org.junit.runner.RunWith;
2528
import org.robolectric.RobolectricTestRunner;
@@ -35,7 +38,9 @@ public void testGetComponents() {
3538
assertThat(components).hasSize(2);
3639
Component<?> appCheckPlayIntegrityComponent = components.get(0);
3740
assertThat(appCheckPlayIntegrityComponent.getDependencies())
38-
.containsExactly(Dependency.required(FirebaseApp.class));
41+
.containsExactly(
42+
Dependency.required(FirebaseApp.class),
43+
Dependency.required(Qualified.qualified(Blocking.class, Executor.class)));
3944
assertThat(appCheckPlayIntegrityComponent.isLazy()).isTrue();
4045
}
4146
}

appcheck/firebase-appcheck-playintegrity/src/test/java/com/google/firebase/appcheck/playintegrity/internal/PlayIntegrityAppCheckProviderTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@
3434
import com.google.firebase.appcheck.internal.DefaultAppCheckToken;
3535
import com.google.firebase.appcheck.internal.NetworkClient;
3636
import com.google.firebase.appcheck.internal.RetryManager;
37+
import com.google.firebase.concurrent.TestOnlyExecutors;
3738
import java.io.IOException;
38-
import java.util.concurrent.ExecutorService;
39+
import java.util.concurrent.Executor;
3940
import java.util.concurrent.TimeoutException;
4041
import org.json.JSONObject;
4142
import org.junit.Before;
@@ -70,7 +71,8 @@ public class PlayIntegrityAppCheckProviderTest {
7071
@Captor private ArgumentCaptor<IntegrityTokenRequest> integrityTokenRequestCaptor;
7172
@Captor private ArgumentCaptor<byte[]> exchangePlayIntegrityTokenRequestCaptor;
7273

73-
private ExecutorService backgroundExecutor = MoreExecutors.newDirectExecutorService();
74+
// TODO(b/258273630): Use TestOnlyExecutors instead of MoreExecutors.directExecutor().
75+
private Executor backgroundExecutor = MoreExecutors.directExecutor();
7476

7577
@Before
7678
public void setup() {
@@ -85,7 +87,7 @@ public void testPublicConstructor_nullFirebaseApp_expectThrows() {
8587
assertThrows(
8688
NullPointerException.class,
8789
() -> {
88-
new PlayIntegrityAppCheckProvider(null);
90+
new PlayIntegrityAppCheckProvider(null, TestOnlyExecutors.blocking());
8991
});
9092
}
9193

appcheck/firebase-appcheck-safetynet/src/test/java/com/google/firebase/appcheck/safetynet/internal/SafetyNetAppCheckProviderTest.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,7 @@ public void exchangeSafetyNetJwsForToken_onSuccess_setsTaskResult() throws Excep
205205
when(mockAppCheckTokenResponse.getToken()).thenReturn(APP_CHECK_TOKEN);
206206
when(mockAppCheckTokenResponse.getTimeToLive()).thenReturn(TIME_TO_LIVE);
207207

208-
// TODO(b/258273630): Use TestOnlyExecutors.background() instead of
209-
// MoreExecutors.directExecutor().
208+
// TODO(b/258273630): Use TestOnlyExecutors instead of MoreExecutors.directExecutor().
210209
SafetyNetAppCheckProvider provider =
211210
new SafetyNetAppCheckProvider(
212211
firebaseApp,
@@ -234,8 +233,7 @@ public void exchangeSafetyNetJwsForToken_onFailure_setsTaskException() throws Ex
234233
any(), eq(NetworkClient.SAFETY_NET), eq(mockRetryManager)))
235234
.thenThrow(new IOException());
236235

237-
// TODO(b/258273630): Use TestOnlyExecutors.background() instead of
238-
// MoreExecutors.directExecutor().
236+
// TODO(b/258273630): Use TestOnlyExecutors instead of MoreExecutors.directExecutor().
239237
SafetyNetAppCheckProvider provider =
240238
new SafetyNetAppCheckProvider(
241239
firebaseApp,

0 commit comments

Comments
 (0)