Skip to content

Remove common dependency in AppCheck Interop #4782

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Apr 17, 2023
Merged
2 changes: 1 addition & 1 deletion appcheck/firebase-appcheck-debug-testing/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
version=16.1.3
version=17.0.0
latestReleasedVersion=16.1.2
2 changes: 1 addition & 1 deletion appcheck/firebase-appcheck-debug/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
version=16.1.3
version=17.0.0
latestReleasedVersion=16.1.2
2 changes: 1 addition & 1 deletion appcheck/firebase-appcheck-interop/api.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.google.firebase.appcheck {

public abstract class AppCheckTokenResult {
ctor public AppCheckTokenResult();
method @Nullable public abstract com.google.firebase.FirebaseException getError();
method @Nullable public abstract Exception getError();
method @NonNull public abstract String getToken();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,6 @@ android {
}

dependencies {
implementation 'com.google.firebase:firebase-common:20.3.1'
implementation 'com.google.firebase:firebase-components:17.1.0'
implementation 'com.google.android.gms:play-services-base:18.0.1'
implementation 'com.google.android.gms:play-services-tasks:18.0.1'

Expand Down
2 changes: 1 addition & 1 deletion appcheck/firebase-appcheck-interop/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
version=16.1.2
version=17.0.0
latestReleasedVersion=16.1.1
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,12 @@

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.firebase.FirebaseException;

/**
* Class to hold the result emitted by a Firebase App Check service application verification
* attempt. The result will always contain a token, which will either be a valid raw JWT attesting
* application identity, or a dummy value. The result may optionally contain a {@link
* FirebaseException} if application verification does not succeed.
* application identity, or a dummy value. The result may optionally contain an {@link Exception} if
* application verification does not succeed.
*/
public abstract class AppCheckTokenResult {

Expand All @@ -34,9 +33,9 @@ public abstract class AppCheckTokenResult {
public abstract String getToken();

/**
* Returns the {@link FirebaseException} if the {@link
* com.google.firebase.appcheck.interop.InternalAppCheckTokenProvider} failed to obtain a token.
* Returns the {@link Exception} if the {@link
* com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider} failed to obtain a token.
*/
@Nullable
public abstract FirebaseException getError();
public abstract Exception getError();
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import com.google.firebase.appcheck.AppCheckTokenResult;

/** @hide */
public interface InternalAppCheckTokenProvider {
public interface InteropAppCheckTokenProvider {

/**
* Requests an {@link AppCheckTokenResult} from the installed {@code AppCheckFactory}. This will
Expand Down
2 changes: 1 addition & 1 deletion appcheck/firebase-appcheck-playintegrity/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
version=16.1.3
version=17.0.0
latestReleasedVersion=16.1.2
2 changes: 1 addition & 1 deletion appcheck/firebase-appcheck/api.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ package com.google.firebase.appcheck {
method @NonNull public abstract String getToken();
}

public abstract class FirebaseAppCheck implements com.google.firebase.appcheck.interop.InternalAppCheckTokenProvider {
public abstract class FirebaseAppCheck implements com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider {
ctor public FirebaseAppCheck();
method public abstract void addAppCheckListener(@NonNull com.google.firebase.appcheck.FirebaseAppCheck.AppCheckListener);
method @NonNull public abstract com.google.android.gms.tasks.Task<com.google.firebase.appcheck.AppCheckToken> getAppCheckToken(boolean);
Expand Down
2 changes: 1 addition & 1 deletion appcheck/firebase-appcheck/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
version=16.1.3
version=17.0.0
latestReleasedVersion=16.1.2
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.appcheck.interop.InternalAppCheckTokenProvider;
import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider;
import com.google.firebase.testing.integ.StrictModeRule;
import org.junit.Rule;
import org.junit.Test;
Expand All @@ -43,7 +43,7 @@ public void initializingFirebaseAppcheck_shouldNotViolateStrictMode() {
.build(),
"hello");
app.get(FirebaseAppCheck.class);
app.get(InternalAppCheckTokenProvider.class);
app.get(InteropAppCheckTokenProvider.class);
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@
import com.google.android.gms.tasks.Task;
import com.google.firebase.FirebaseApp;
import com.google.firebase.appcheck.interop.AppCheckTokenListener;
import com.google.firebase.appcheck.interop.InternalAppCheckTokenProvider;
import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider;

public abstract class FirebaseAppCheck implements InternalAppCheckTokenProvider {
public abstract class FirebaseAppCheck implements InteropAppCheckTokenProvider {

/** Gets the default instance of {@code FirebaseAppCheck}. */
@NonNull
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import com.google.firebase.annotations.concurrent.Lightweight;
import com.google.firebase.annotations.concurrent.UiThread;
import com.google.firebase.appcheck.internal.DefaultFirebaseAppCheck;
import com.google.firebase.appcheck.interop.InternalAppCheckTokenProvider;
import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider;
import com.google.firebase.components.Component;
import com.google.firebase.components.ComponentRegistrar;
import com.google.firebase.components.Dependency;
Expand Down Expand Up @@ -53,7 +53,7 @@ public List<Component<?>> getComponents() {
Qualified.qualified(Blocking.class, ScheduledExecutorService.class);

return Arrays.asList(
Component.builder(FirebaseAppCheck.class, (InternalAppCheckTokenProvider.class))
Component.builder(FirebaseAppCheck.class, (InteropAppCheckTokenProvider.class))
.name(LIBRARY_NAME)
.add(Dependency.required(FirebaseApp.class))
.add(Dependency.required(uiExecutor))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public String getToken() {

@Nullable
@Override
public FirebaseException getError() {
public Exception getError() {
return error;
}
}
2 changes: 1 addition & 1 deletion firebase-database/firebase-database.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ dependencies {
implementation("com.google.firebase:firebase-common:20.3.2")
implementation("com.google.firebase:firebase-components:17.1.0")
implementation("com.google.firebase:firebase-auth-interop:20.0.0")
implementation("com.google.firebase:firebase-appcheck-interop:16.1.1")
implementation(project(":appcheck:firebase-appcheck-interop"))
implementation("com.google.firebase:firebase-database-collection:18.0.1")

implementation(libs.androidx.annotation)
Expand Down
2 changes: 1 addition & 1 deletion firebase-database/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.

version=20.1.1
version=20.2.0
latestReleasedVersion=20.1.0
android.enableUnitTestBinaryResources=true
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import androidx.annotation.Keep;
import androidx.annotation.RestrictTo;
import com.google.firebase.FirebaseApp;
import com.google.firebase.appcheck.interop.InternalAppCheckTokenProvider;
import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider;
import com.google.firebase.auth.internal.InternalAuthProvider;
import com.google.firebase.components.Component;
import com.google.firebase.components.ComponentRegistrar;
Expand All @@ -39,13 +39,13 @@ public List<Component<?>> getComponents() {
.name(LIBRARY_NAME)
.add(Dependency.required(FirebaseApp.class))
.add(Dependency.deferred(InternalAuthProvider.class))
.add(Dependency.deferred(InternalAppCheckTokenProvider.class))
.add(Dependency.deferred(InteropAppCheckTokenProvider.class))
.factory(
c ->
new FirebaseDatabaseComponent(
c.get(FirebaseApp.class),
c.getDeferred(InternalAuthProvider.class),
c.getDeferred(InternalAppCheckTokenProvider.class)))
c.getDeferred(InteropAppCheckTokenProvider.class)))
.build(),
LibraryVersionComponent.create(LIBRARY_NAME, BuildConfig.VERSION_NAME));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import androidx.annotation.NonNull;
import com.google.firebase.FirebaseApp;
import com.google.firebase.appcheck.interop.InternalAppCheckTokenProvider;
import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider;
import com.google.firebase.auth.internal.InternalAuthProvider;
import com.google.firebase.database.android.AndroidAppCheckTokenProvider;
import com.google.firebase.database.android.AndroidAuthTokenProvider;
Expand Down Expand Up @@ -44,7 +44,7 @@ class FirebaseDatabaseComponent {
FirebaseDatabaseComponent(
@NonNull FirebaseApp app,
Deferred<InternalAuthProvider> authProvider,
Deferred<InternalAppCheckTokenProvider> appCheckProvider) {
Deferred<InteropAppCheckTokenProvider> appCheckProvider) {
this.app = app;
this.authProvider = new AndroidAuthTokenProvider(authProvider);
this.appCheckProvider = new AndroidAppCheckTokenProvider(appCheckProvider);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@
import androidx.annotation.NonNull;
import com.google.android.gms.tasks.Task;
import com.google.firebase.appcheck.AppCheckTokenResult;
import com.google.firebase.appcheck.interop.InternalAppCheckTokenProvider;
import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider;
import com.google.firebase.database.core.TokenProvider;
import com.google.firebase.inject.Deferred;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicReference;

public class AndroidAppCheckTokenProvider implements TokenProvider {
private final Deferred<InternalAppCheckTokenProvider> deferredAppCheckProvider;
private final AtomicReference<InternalAppCheckTokenProvider> internalAppCheck;
private final Deferred<InteropAppCheckTokenProvider> deferredAppCheckProvider;
private final AtomicReference<InteropAppCheckTokenProvider> internalAppCheck;

public AndroidAppCheckTokenProvider(
Deferred<InternalAppCheckTokenProvider> deferredAppCheckProvider) {
Deferred<InteropAppCheckTokenProvider> deferredAppCheckProvider) {
this.deferredAppCheckProvider = deferredAppCheckProvider;
this.internalAppCheck = new AtomicReference<>();

Expand All @@ -41,7 +41,7 @@ public AndroidAppCheckTokenProvider(
@SuppressLint("TaskMainThread")
@Override
public void getToken(boolean forceRefresh, @NonNull final GetTokenCompletionListener listener) {
InternalAppCheckTokenProvider appCheckProvider = internalAppCheck.get();
InteropAppCheckTokenProvider appCheckProvider = internalAppCheck.get();

if (appCheckProvider != null) {
Task<AppCheckTokenResult> getTokenResult = appCheckProvider.getToken(forceRefresh);
Expand Down
2 changes: 1 addition & 1 deletion firebase-firestore/firebase-firestore.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ dependencies {
implementation project(':protolite-well-known-types')
implementation 'com.google.firebase:firebase-database-collection:18.0.1'
implementation 'com.google.firebase:firebase-components:17.1.0'
implementation 'com.google.firebase:firebase-appcheck-interop:16.1.1'
implementation project(':appcheck:firebase-appcheck-interop')

//To provide @Generated annotations
compileOnly 'javax.annotation:jsr250-api:1.0'
Expand Down
2 changes: 1 addition & 1 deletion firebase-firestore/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
version=24.4.6
version=24.5.0
latestReleasedVersion=24.4.5
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
import com.google.android.gms.tasks.Tasks;
import com.google.firebase.FirebaseApp;
import com.google.firebase.annotations.PreviewApi;
import com.google.firebase.appcheck.interop.InternalAppCheckTokenProvider;
import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider;
import com.google.firebase.auth.internal.InternalAuthProvider;
import com.google.firebase.emulators.EmulatedServiceSettings;
import com.google.firebase.firestore.FirebaseFirestoreException.Code;
Expand Down Expand Up @@ -132,7 +132,7 @@ static FirebaseFirestore newInstance(
@NonNull Context context,
@NonNull FirebaseApp app,
@NonNull Deferred<InternalAuthProvider> deferredAuthProvider,
@NonNull Deferred<InternalAppCheckTokenProvider> deferredAppCheckTokenProvider,
@NonNull Deferred<InteropAppCheckTokenProvider> deferredAppCheckTokenProvider,
@NonNull String database,
@NonNull InstanceRegistry instanceRegistry,
@Nullable GrpcMetadataProvider metadataProvider) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseAppLifecycleListener;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.appcheck.interop.InternalAppCheckTokenProvider;
import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider;
import com.google.firebase.auth.internal.InternalAuthProvider;
import com.google.firebase.firestore.remote.GrpcMetadataProvider;
import com.google.firebase.inject.Deferred;
Expand All @@ -43,14 +43,14 @@ class FirestoreMultiDbComponent
private final FirebaseApp app;
private final Context context;
private final Deferred<InternalAuthProvider> authProvider;
private final Deferred<InternalAppCheckTokenProvider> appCheckProvider;
private final Deferred<InteropAppCheckTokenProvider> appCheckProvider;
private final GrpcMetadataProvider metadataProvider;

FirestoreMultiDbComponent(
@NonNull Context context,
@NonNull FirebaseApp app,
@NonNull Deferred<InternalAuthProvider> authProvider,
@NonNull Deferred<InternalAppCheckTokenProvider> appCheckProvider,
@NonNull Deferred<InteropAppCheckTokenProvider> appCheckProvider,
@Nullable GrpcMetadataProvider metadataProvider) {
this.context = context;
this.app = app;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import androidx.annotation.RestrictTo;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.appcheck.interop.InternalAppCheckTokenProvider;
import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider;
import com.google.firebase.auth.internal.InternalAuthProvider;
import com.google.firebase.components.Component;
import com.google.firebase.components.ComponentRegistrar;
Expand Down Expand Up @@ -52,15 +52,15 @@ public List<Component<?>> getComponents() {
.add(Dependency.optionalProvider(HeartBeatInfo.class))
.add(Dependency.optionalProvider(UserAgentPublisher.class))
.add(Dependency.deferred(InternalAuthProvider.class))
.add(Dependency.deferred(InternalAppCheckTokenProvider.class))
.add(Dependency.deferred(InteropAppCheckTokenProvider.class))
.add(Dependency.optional(FirebaseOptions.class))
.factory(
c ->
new FirestoreMultiDbComponent(
c.get(Context.class),
c.get(FirebaseApp.class),
c.getDeferred(InternalAuthProvider.class),
c.getDeferred(InternalAppCheckTokenProvider.class),
c.getDeferred(InteropAppCheckTokenProvider.class),
new FirebaseClientGrpcMetadataProvider(
c.getProvider(UserAgentPublisher.class),
c.getProvider(HeartBeatInfo.class),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import com.google.firebase.FirebaseApiNotAvailableException;
import com.google.firebase.appcheck.AppCheckTokenResult;
import com.google.firebase.appcheck.interop.AppCheckTokenListener;
import com.google.firebase.appcheck.interop.InternalAppCheckTokenProvider;
import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider;
import com.google.firebase.firestore.util.Executors;
import com.google.firebase.firestore.util.Listener;
import com.google.firebase.firestore.util.Logger;
Expand All @@ -41,11 +41,11 @@ public final class FirebaseAppCheckTokenProvider extends CredentialsProvider<Str
private Listener<String> changeListener;

/**
* The {@link Provider} that gives access to the {@link InternalAppCheckTokenProvider} instance.
* The {@link Provider} that gives access to the {@link InteropAppCheckTokenProvider} instance.
*/
@Nullable
@GuardedBy("this")
private InternalAppCheckTokenProvider internalAppCheckTokenProvider;
private InteropAppCheckTokenProvider interopAppCheckTokenProvider;

@GuardedBy("this")
private boolean forceRefresh;
Expand All @@ -58,14 +58,14 @@ public final class FirebaseAppCheckTokenProvider extends CredentialsProvider<Str
/** Creates a new FirebaseAppCheckTokenProvider. */
@SuppressLint("ProviderAssignment") // TODO: Remove this @SuppressLint once b/181014061 is fixed.
public FirebaseAppCheckTokenProvider(
Deferred<InternalAppCheckTokenProvider> deferredAppCheckTokenProvider) {
Deferred<InteropAppCheckTokenProvider> deferredAppCheckTokenProvider) {
deferredAppCheckTokenProvider.whenAvailable(
provider -> {
synchronized (this) {
internalAppCheckTokenProvider = provider.get();
interopAppCheckTokenProvider = provider.get();
// Get notified when AppCheck token changes to a new value in the future.
if (internalAppCheckTokenProvider != null) {
internalAppCheckTokenProvider.addAppCheckTokenListener(tokenListener);
if (interopAppCheckTokenProvider != null) {
interopAppCheckTokenProvider.addAppCheckTokenListener(tokenListener);
}
}
});
Expand All @@ -89,11 +89,11 @@ private synchronized void onTokenChanged(@NonNull AppCheckTokenResult result) {
*/
@Override
public synchronized Task<String> getToken() {
if (internalAppCheckTokenProvider == null) {
if (interopAppCheckTokenProvider == null) {
return Tasks.forException(new FirebaseApiNotAvailableException("AppCheck is not available"));
}

Task<AppCheckTokenResult> res = internalAppCheckTokenProvider.getToken(forceRefresh);
Task<AppCheckTokenResult> res = interopAppCheckTokenProvider.getToken(forceRefresh);
forceRefresh = false;

return res.continueWithTask(
Expand Down Expand Up @@ -121,8 +121,8 @@ public synchronized void invalidateToken() {
public synchronized void removeChangeListener() {
changeListener = null;

if (internalAppCheckTokenProvider != null) {
internalAppCheckTokenProvider.removeAppCheckTokenListener(tokenListener);
if (interopAppCheckTokenProvider != null) {
interopAppCheckTokenProvider.removeAppCheckTokenListener(tokenListener);
}
}

Expand Down
Loading