diff --git a/auth/src/main/java/com/firebase/ui/auth/data/model/FlowParameters.java b/auth/src/main/java/com/firebase/ui/auth/data/model/FlowParameters.java index ab23636e7..45edcb719 100644 --- a/auth/src/main/java/com/firebase/ui/auth/data/model/FlowParameters.java +++ b/auth/src/main/java/com/firebase/ui/auth/data/model/FlowParameters.java @@ -14,6 +14,7 @@ package com.firebase.ui.auth.data.model; import android.content.Intent; +import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.DrawableRes; @@ -86,8 +87,14 @@ public FlowParameters( */ public static FlowParameters fromIntent(Intent intent) { //this is required to fix #1416 - ClassNotFound for FlowParameters - intent.setExtrasClassLoader(AuthUI.class.getClassLoader()); - return intent.getParcelableExtra(ExtraConstants.FLOW_PARAMS); + Bundle bundle = intent.getBundleExtra(ExtraConstants.FLOW_BUNDLE); + return bundle.getParcelable(ExtraConstants.FLOW_PARAMS); + } + + public Bundle toBundle() { + Bundle bundle = new Bundle(); + bundle.putParcelable(ExtraConstants.FLOW_PARAMS, this); + return bundle; } @Override @@ -154,4 +161,5 @@ public boolean isPrivacyPolicyUrlProvided() { public boolean isAnonymousUpgradeEnabled() { return enableAnonymousUpgrade; } + } diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/HelperActivityBase.java b/auth/src/main/java/com/firebase/ui/auth/ui/HelperActivityBase.java index 3a017d0bb..c588ad30d 100644 --- a/auth/src/main/java/com/firebase/ui/auth/ui/HelperActivityBase.java +++ b/auth/src/main/java/com/firebase/ui/auth/ui/HelperActivityBase.java @@ -32,8 +32,8 @@ protected static Intent createBaseIntent( return new Intent( checkNotNull(context, "context cannot be null"), checkNotNull(target, "target activity cannot be null")) - .putExtra(ExtraConstants.FLOW_PARAMS, - checkNotNull(flowParams, "flowParams cannot be null")); + .putExtra(ExtraConstants.FLOW_BUNDLE, + checkNotNull(flowParams, "flowParams cannot be null").toBundle()); } @Override diff --git a/auth/src/main/java/com/firebase/ui/auth/util/ExtraConstants.java b/auth/src/main/java/com/firebase/ui/auth/util/ExtraConstants.java index 96e5a6627..72b44e15f 100644 --- a/auth/src/main/java/com/firebase/ui/auth/util/ExtraConstants.java +++ b/auth/src/main/java/com/firebase/ui/auth/util/ExtraConstants.java @@ -21,6 +21,7 @@ */ @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) public final class ExtraConstants { + public static final String FLOW_BUNDLE = "extra_flow_bundle"; public static final String FLOW_PARAMS = "extra_flow_params"; public static final String IDP_RESPONSE = "extra_idp_response"; public static final String USER = "extra_user"; diff --git a/auth/src/test/java/com/firebase/ui/auth/AuthUITest.java b/auth/src/test/java/com/firebase/ui/auth/AuthUITest.java index f5ef5d526..d7d1e0551 100644 --- a/auth/src/test/java/com/firebase/ui/auth/AuthUITest.java +++ b/auth/src/test/java/com/firebase/ui/auth/AuthUITest.java @@ -45,10 +45,9 @@ public void setUp() { @Test public void testCreateStartIntent_shouldHaveEmailAsDefaultProvider() { - FlowParameters flowParameters = mAuthUi + FlowParameters flowParameters = FlowParameters.fromIntent(mAuthUi .createSignInIntentBuilder() - .build() - .getParcelableExtra(ExtraConstants.FLOW_PARAMS); + .build()); assertEquals(1, flowParameters.providers.size()); assertEquals(EmailAuthProvider.PROVIDER_ID, flowParameters.providers.get(0).getProviderId()); @@ -64,7 +63,7 @@ public void testCreateStartIntent_shouldOnlyAllowOneInstanceOfAnIdp() { @Test public void testCreatingStartIntent() { - FlowParameters flowParameters = mAuthUi + FlowParameters flowParameters = FlowParameters.fromIntent(mAuthUi .createSignInIntentBuilder() .setAvailableProviders(Arrays.asList( new IdpConfig.EmailBuilder().build(), @@ -72,8 +71,7 @@ public void testCreatingStartIntent() { new IdpConfig.FacebookBuilder().build(), new IdpConfig.AnonymousBuilder().build())) .setTosAndPrivacyPolicyUrls(TestConstants.TOS_URL, TestConstants.PRIVACY_URL) - .build() - .getParcelableExtra(ExtraConstants.FLOW_PARAMS); + .build()); assertEquals(4, flowParameters.providers.size()); assertEquals(TestHelper.MOCK_APP.getName(), flowParameters.appName);