Skip to content

Integrate FIS into FIAM Headless #1332

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 6 commits into from
Mar 10, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions firebase-inappmessaging/firebase-inappmessaging.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -116,17 +116,17 @@ dependencies {
implementation project(':protolite-well-known-types')
implementation project(':transport:transport-api')
implementation project(':firebase-datatransport')
implementation project(':firebase-installations-interop')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wondering if you should depend on the released version vs the HEAD? Idk whats the standard way in firebase.

runtimeOnly project(':firebase-installations')

implementation 'com.google.android.gms:play-services-tasks:17.0.0'
implementation 'io.grpc:grpc-stub:1.21.0'
implementation 'io.grpc:grpc-protobuf-lite:1.21.0'
implementation 'io.grpc:grpc-okhttp:1.21.0'
implementation 'com.google.dagger:dagger:2.24'
implementation 'io.reactivex.rxjava2:rxjava:2.1.14'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation 'com.google.auto.value:auto-value-annotations:1.6.5'
implementation ('com.google.firebase:firebase-iid:20.0.1') {
exclude group: "com.google.firebase", module: "firebase-common"
}

implementation('com.google.firebase:firebase-measurement-connector:18.0.0') {
exclude group: 'com.google.firebase', module: 'firebase-common'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@
import android.os.Bundle;
import android.os.Looper;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
import com.google.android.gms.tasks.Task;
Expand All @@ -53,8 +52,6 @@
import com.google.firebase.FirebaseOptions;
import com.google.firebase.analytics.connector.AnalyticsConnector;
import com.google.firebase.events.Subscriber;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.InstanceIdResult;
import com.google.firebase.inappmessaging.CommonTypesProto.Event;
import com.google.firebase.inappmessaging.CommonTypesProto.Priority;
import com.google.firebase.inappmessaging.CommonTypesProto.TriggeringCondition;
Expand All @@ -72,6 +69,8 @@
import com.google.firebase.inappmessaging.model.BannerMessage;
import com.google.firebase.inappmessaging.model.CampaignMetadata;
import com.google.firebase.inappmessaging.model.InAppMessage;
import com.google.firebase.installations.FirebaseInstallationsApi;
import com.google.firebase.installations.InstallationTokenResult;
import com.google.internal.firebase.inappmessaging.v1.CampaignProto.ThickContent;
import com.google.internal.firebase.inappmessaging.v1.CampaignProto.VanillaCampaignPayload;
import com.google.internal.firebase.inappmessaging.v1.sdkserving.CampaignImpression;
Expand Down Expand Up @@ -113,8 +112,10 @@
@RunWith(AndroidJUnit4.class)
public class FirebaseInAppMessagingFlowableTest {

public static final String PROJECT_NUMBER = "gcm-sender-id";
public static final String APP_ID = "app-id";
private static final String PROJECT_NUMBER = "gcm-sender-id";
private static final String APP_ID = "app-id";
private static final String INSTANCE_ID = "instance-id";
private static final String INSTANCE_TOKEN = "token";
private static final long PAST = 1000000;
private static final long NOW = PAST + 100000;
private static final long FUTURE = NOW + 1000000;
Expand Down Expand Up @@ -167,7 +168,7 @@ public class FirebaseInAppMessagingFlowableTest {
@Mock
private MetricsLoggerClient.EngagementMetricsLoggerInterface engagementMetricsLoggerInterface;

@Mock private FirebaseInstanceId instanceId;
@Mock private FirebaseInstallationsApi firebaseInstallations;
@Mock private TestDeviceHelper testDeviceHelper;
@Mock private Subscriber firebaseEventSubscriber;
@Mock private AbtIntegrationHelper abtIntegrationHelper;
Expand Down Expand Up @@ -223,24 +224,16 @@ public void setUp() {
clearProtoDiskCache(InstrumentationRegistry.getTargetContext());
application =
spy((Application) InstrumentationRegistry.getTargetContext().getApplicationContext());
String id = FirebaseInstanceId.getInstance().getId();
when(instanceId.getId()).thenReturn(id);
when(instanceId.getInstanceId())
when(firebaseInstallations.getId()).thenReturn(Tasks.forResult(INSTANCE_ID));
when(firebaseInstallations.getToken(false))
.thenReturn(
Tasks.forResult(
new InstanceIdResult() {
@NonNull
@Override
public String getId() {
return id;
}

@NonNull
@Override
public String getToken() {
return "token";
}
}));
InstallationTokenResult.builder()
.setToken(INSTANCE_TOKEN)
.setTokenCreationTimestamp(1)
.setTokenExpirationTimestamp(1)
.build()));

when(testDeviceHelper.isAppInstallFresh()).thenReturn(false);
when(testDeviceHelper.isDeviceInTestMode()).thenReturn(false);

Expand Down Expand Up @@ -272,7 +265,7 @@ public String getToken() {
.grpcClientModule(new GrpcClientModule(app))
.testApiClientModule(
new TestApiClientModule(
app, instanceId, testDeviceHelper, universalComponent.clock()));
app, firebaseInstallations, testDeviceHelper, universalComponent.clock()));
TestAppComponent appComponent = appComponentBuilder.build();

instance = appComponent.providesFirebaseInAppMessaging();
Expand Down Expand Up @@ -712,7 +705,7 @@ public void logImpression_writesExpectedLogToEngagementMetrics()
.setClientTimestampMillis(NOW)
.setClientApp(
ClientAppInfo.newBuilder()
.setFirebaseInstanceId(FirebaseInstanceId.getInstance().getId())
.setFirebaseInstanceId(INSTANCE_ID)
.setGoogleAppId(APP_ID))
.setEventType(EventType.IMPRESSION_EVENT_TYPE)
.build();
Expand Down Expand Up @@ -742,7 +735,7 @@ public void logAction_writesExpectedLogToEngagementMetrics()
.setClientTimestampMillis(NOW)
.setClientApp(
ClientAppInfo.newBuilder()
.setFirebaseInstanceId(FirebaseInstanceId.getInstance().getId())
.setFirebaseInstanceId(INSTANCE_ID)
.setGoogleAppId(APP_ID))
.setEventType(EventType.IMPRESSION_EVENT_TYPE)
.build();
Expand Down Expand Up @@ -773,7 +766,7 @@ public void logRenderError_writesExpectedLogToEngagementMetrics()
.setClientTimestampMillis(NOW)
.setClientApp(
ClientAppInfo.newBuilder()
.setFirebaseInstanceId(FirebaseInstanceId.getInstance().getId())
.setFirebaseInstanceId(INSTANCE_ID)
.setGoogleAppId(APP_ID))
.setRenderErrorReason(RenderErrorReason.IMAGE_DISPLAY_ERROR)
.build();
Expand Down Expand Up @@ -804,7 +797,7 @@ public void logDismiss_writesExpectedLogToEngagementMetrics()
.setClientTimestampMillis(NOW)
.setClientApp(
ClientAppInfo.newBuilder()
.setFirebaseInstanceId(FirebaseInstanceId.getInstance().getId())
.setFirebaseInstanceId(INSTANCE_ID)
.setGoogleAppId(APP_ID))
.setDismissType(DismissType.AUTO)
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import android.app.Application;
import com.google.firebase.FirebaseApp;
import com.google.firebase.events.Subscriber;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.inappmessaging.internal.ApiClient;
import com.google.firebase.inappmessaging.internal.DataCollectionHelper;
import com.google.firebase.inappmessaging.internal.GrpcClient;
Expand All @@ -26,6 +25,7 @@
import com.google.firebase.inappmessaging.internal.TestDeviceHelper;
import com.google.firebase.inappmessaging.internal.injection.scopes.FirebaseAppScope;
import com.google.firebase.inappmessaging.internal.time.Clock;
import com.google.firebase.installations.FirebaseInstallationsApi;
import dagger.Lazy;
import dagger.Module;
import dagger.Provides;
Expand All @@ -36,26 +36,26 @@
public class TestApiClientModule {

private final FirebaseApp firebaseApp;
private final FirebaseInstanceId firebaseInstanceId;
private final FirebaseInstallationsApi firebaseInstallations;
private SharedPreferencesUtils sharedPreferencesUtils;
private TestDeviceHelper testDeviceHelper;
private Clock clock;

public TestApiClientModule(
FirebaseApp firebaseApp,
FirebaseInstanceId instanceId,
FirebaseInstallationsApi firebaseInstallations,
TestDeviceHelper testDeviceHelper,
Clock clock) {
this.firebaseApp = firebaseApp;
this.firebaseInstanceId = instanceId;
this.firebaseInstallations = firebaseInstallations;
this.testDeviceHelper = testDeviceHelper;
this.sharedPreferencesUtils = new SharedPreferencesUtils(firebaseApp);
this.clock = clock;
}

@Provides
FirebaseInstanceId providesFirebaseInstanceId() {
return firebaseInstanceId;
FirebaseInstallationsApi providesFirebaseInstallations() {
return firebaseInstallations;
}

@Provides
Expand All @@ -66,8 +66,7 @@ public FirebaseApp providesfirebaseApp() {

@Provides
DataCollectionHelper providesDataCollectionHelper(Subscriber firebaseEventSubscriber) {
return new DataCollectionHelper(
firebaseApp, sharedPreferencesUtils, firebaseInstanceId, firebaseEventSubscriber);
return new DataCollectionHelper(firebaseApp, sharedPreferencesUtils, firebaseEventSubscriber);
}

@Provides
Expand All @@ -86,7 +85,7 @@ ApiClient providesApiClient(
grpcClient,
firebaseApp,
application,
firebaseInstanceId,
firebaseInstallations,
dataCollectionHelper,
clock,
providerInstaller);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@

import com.google.firebase.FirebaseApp;
import com.google.firebase.analytics.connector.AnalyticsConnector;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.inappmessaging.internal.DeveloperListenerManager;
import com.google.firebase.inappmessaging.internal.MetricsLoggerClient;
import com.google.firebase.inappmessaging.internal.MetricsLoggerClient.EngagementMetricsLoggerInterface;
import com.google.firebase.inappmessaging.internal.injection.scopes.FirebaseAppScope;
import com.google.firebase.inappmessaging.internal.time.Clock;
import com.google.firebase.installations.FirebaseInstallationsApi;
import dagger.Module;
import dagger.Provides;

Expand All @@ -38,16 +38,16 @@ public TestEngagementMetricsLoggerClientModule(

@Provides
@FirebaseAppScope
public MetricsLoggerClient providesApiClient(
FirebaseInstanceId firebaseInstanceId,
public MetricsLoggerClient providesMetricLoggerClient(
FirebaseInstallationsApi firebaseInstallations,
AnalyticsConnector analyticsConnector,
Clock clock,
DeveloperListenerManager developerListenerManager) {
return new MetricsLoggerClient(
engagementMetricsLoggerInterface,
analyticsConnector,
firebaseApp,
firebaseInstanceId,
firebaseInstallations,
clock,
developerListenerManager);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import com.google.android.gms.common.annotation.KeepForSdk;
import com.google.android.gms.common.util.VisibleForTesting;
import com.google.firebase.FirebaseApp;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.inappmessaging.internal.DataCollectionHelper;
import com.google.firebase.inappmessaging.internal.DeveloperListenerManager;
import com.google.firebase.inappmessaging.internal.DisplayCallbacksFactory;
Expand All @@ -29,6 +28,7 @@
import com.google.firebase.inappmessaging.internal.injection.qualifiers.ProgrammaticTrigger;
import com.google.firebase.inappmessaging.internal.injection.scopes.FirebaseAppScope;
import com.google.firebase.inappmessaging.model.TriggeredInAppMessage;
import com.google.firebase.installations.FirebaseInstallationsApi;
import io.reactivex.disposables.Disposable;
import java.util.concurrent.Executor;
import javax.inject.Inject;
Expand All @@ -47,7 +47,7 @@
* </ul>
*
* <p>To delete the Instance ID and the data associated with it, see {@link
* com.google.firebase.iid.FirebaseInstanceId#deleteInstanceId}.
* FirebaseInstallationsApi.#delete}.
*/
@FirebaseAppScope
public class FirebaseInAppMessaging {
Expand All @@ -56,6 +56,7 @@ public class FirebaseInAppMessaging {
private final DataCollectionHelper dataCollectionHelper;
private final DisplayCallbacksFactory displayCallbacksFactory;
private final DeveloperListenerManager developerListenerManager;
private final FirebaseInstallationsApi firebaseInstallations;
private final ProgramaticContextualTriggers programaticContextualTriggers;

private boolean areMessagesSuppressed;
Expand All @@ -67,18 +68,21 @@ public class FirebaseInAppMessaging {
InAppMessageStreamManager inAppMessageStreamManager,
@ProgrammaticTrigger ProgramaticContextualTriggers programaticContextualTriggers,
DataCollectionHelper dataCollectionHelper,
FirebaseInstallationsApi firebaseInstallations,
DisplayCallbacksFactory displayCallbacksFactory,
DeveloperListenerManager developerListenerManager) {
this.inAppMessageStreamManager = inAppMessageStreamManager;
this.firebaseInstallations = firebaseInstallations;
this.programaticContextualTriggers = programaticContextualTriggers;
this.dataCollectionHelper = dataCollectionHelper;
this.areMessagesSuppressed = false;
this.displayCallbacksFactory = displayCallbacksFactory;
this.developerListenerManager = developerListenerManager;

Logging.logi(
"Starting InAppMessaging runtime with Instance ID "
+ FirebaseInstanceId.getInstance().getId());
firebaseInstallations
.getId()
.addOnSuccessListener(
id -> Logging.logi("Starting InAppMessaging runtime with Installation ID " + id));

Disposable unused =
inAppMessageStreamManager
Expand Down Expand Up @@ -114,9 +118,8 @@ public boolean isAutomaticDataCollectionEnabled() {
*
* <p>When enabled, generates a registration token on app startup if there is no valid one and
* generates a new token when it is deleted (which prevents {@link
* com.google.firebase.iid.FirebaseInstanceId#deleteInstanceId} from stopping the periodic sending
* of data). This setting is persisted across app restarts and overrides the setting specified in
* your manifest.
* FirebaseInstallationsApi.#delete} from stopping the periodic sending of data). This setting is
* persisted across app restarts and overrides the setting specified in your manifest.
*
* <p>By default, auto-initialization is enabled. If you need to change the default, (for example,
* because you want to prompt the user before generates/refreshes a registration token on app
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,19 @@
import com.google.firebase.components.ComponentRegistrar;
import com.google.firebase.components.Dependency;
import com.google.firebase.events.Subscriber;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.inappmessaging.internal.AbtIntegrationHelper;
import com.google.firebase.inappmessaging.internal.ProgramaticContextualTriggers;
import com.google.firebase.inappmessaging.internal.injection.components.AppComponent;
import com.google.firebase.inappmessaging.internal.injection.components.DaggerAppComponent;
import com.google.firebase.inappmessaging.internal.injection.components.DaggerUniversalComponent;
import com.google.firebase.inappmessaging.internal.injection.components.UniversalComponent;
import com.google.firebase.inappmessaging.internal.injection.modules.AbTestingModule;
import com.google.firebase.inappmessaging.internal.injection.modules.AnalyticsEventsModule;
import com.google.firebase.inappmessaging.internal.injection.modules.ApiClientModule;
import com.google.firebase.inappmessaging.internal.injection.modules.AppMeasurementModule;
import com.google.firebase.inappmessaging.internal.injection.modules.ApplicationModule;
import com.google.firebase.inappmessaging.internal.injection.modules.GrpcClientModule;
import com.google.firebase.inappmessaging.internal.injection.modules.ProgrammaticContextualTriggerFlowableModule;
import com.google.firebase.installations.FirebaseInstallationsApi;
import com.google.firebase.platforminfo.LibraryVersionComponent;
import java.util.Arrays;
import java.util.List;
Expand All @@ -57,7 +57,7 @@ public List<Component<?>> getComponents() {
return Arrays.asList(
Component.builder(FirebaseInAppMessaging.class)
.add(Dependency.required(Context.class))
.add(Dependency.required(FirebaseInstanceId.class))
.add(Dependency.required(FirebaseInstallationsApi.class))
.add(Dependency.required(FirebaseApp.class))
.add(Dependency.required(AbtComponent.class))
.add(Dependency.optional(AnalyticsConnector.class))
Expand All @@ -71,10 +71,8 @@ public List<Component<?>> getComponents() {

private FirebaseInAppMessaging providesFirebaseInAppMessaging(ComponentContainer container) {
FirebaseApp firebaseApp = container.get(FirebaseApp.class);
FirebaseInstanceId firebaseInstanceId = container.get(FirebaseInstanceId.class);
FirebaseInstallationsApi firebaseInstallations = container.get(FirebaseInstallationsApi.class);
AnalyticsConnector analyticsConnector = container.get(AnalyticsConnector.class);
FirebaseABTesting abTesting =
container.get(AbtComponent.class).get(FirebaseABTesting.OriginService.INAPP_MESSAGING);
Subscriber firebaseEventsSubscriber = container.get(Subscriber.class);

Application application = (Application) firebaseApp.getApplicationContext();
Expand All @@ -92,9 +90,13 @@ private FirebaseInAppMessaging providesFirebaseInAppMessaging(ComponentContainer

AppComponent instance =
DaggerAppComponent.builder()
.abTestingModule(new AbTestingModule(abTesting))
.abtIntegrationHelper(
new AbtIntegrationHelper(
container
.get(AbtComponent.class)
.get(FirebaseABTesting.OriginService.INAPP_MESSAGING)))
.apiClientModule(
new ApiClientModule(firebaseApp, firebaseInstanceId, universalComponent.clock()))
new ApiClientModule(firebaseApp, firebaseInstallations, universalComponent.clock()))
.grpcClientModule(new GrpcClientModule(firebaseApp))
.universalComponent(universalComponent)
.transportFactory(container.get(TransportFactory.class))
Expand Down
Loading