Skip to content

Commit 1f3b18e

Browse files
dimipaunsamtstern
authored andcommitted
Fix #1416 - Wrap flow params into a Bundle to avoid a ClassNotFoundEx… (#1453)
1 parent 0786884 commit 1f3b18e

File tree

4 files changed

+17
-10
lines changed

4 files changed

+17
-10
lines changed

auth/src/main/java/com/firebase/ui/auth/data/model/FlowParameters.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
package com.firebase.ui.auth.data.model;
1515

1616
import android.content.Intent;
17+
import android.os.Bundle;
1718
import android.os.Parcel;
1819
import android.os.Parcelable;
1920
import android.support.annotation.DrawableRes;
@@ -86,8 +87,14 @@ public FlowParameters(
8687
*/
8788
public static FlowParameters fromIntent(Intent intent) {
8889
//this is required to fix #1416 - ClassNotFound for FlowParameters
89-
intent.setExtrasClassLoader(AuthUI.class.getClassLoader());
90-
return intent.getParcelableExtra(ExtraConstants.FLOW_PARAMS);
90+
Bundle bundle = intent.getBundleExtra(ExtraConstants.FLOW_BUNDLE);
91+
return bundle.getParcelable(ExtraConstants.FLOW_PARAMS);
92+
}
93+
94+
public Bundle toBundle() {
95+
Bundle bundle = new Bundle();
96+
bundle.putParcelable(ExtraConstants.FLOW_PARAMS, this);
97+
return bundle;
9198
}
9299

93100
@Override
@@ -154,4 +161,5 @@ public boolean isPrivacyPolicyUrlProvided() {
154161
public boolean isAnonymousUpgradeEnabled() {
155162
return enableAnonymousUpgrade;
156163
}
164+
157165
}

auth/src/main/java/com/firebase/ui/auth/ui/HelperActivityBase.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ protected static Intent createBaseIntent(
3232
return new Intent(
3333
checkNotNull(context, "context cannot be null"),
3434
checkNotNull(target, "target activity cannot be null"))
35-
.putExtra(ExtraConstants.FLOW_PARAMS,
36-
checkNotNull(flowParams, "flowParams cannot be null"));
35+
.putExtra(ExtraConstants.FLOW_BUNDLE,
36+
checkNotNull(flowParams, "flowParams cannot be null").toBundle());
3737
}
3838

3939
@Override

auth/src/main/java/com/firebase/ui/auth/util/ExtraConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
*/
2222
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
2323
public final class ExtraConstants {
24+
public static final String FLOW_BUNDLE = "extra_flow_bundle";
2425
public static final String FLOW_PARAMS = "extra_flow_params";
2526
public static final String IDP_RESPONSE = "extra_idp_response";
2627
public static final String USER = "extra_user";

auth/src/test/java/com/firebase/ui/auth/AuthUITest.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,9 @@ public void setUp() {
4545

4646
@Test
4747
public void testCreateStartIntent_shouldHaveEmailAsDefaultProvider() {
48-
FlowParameters flowParameters = mAuthUi
48+
FlowParameters flowParameters = FlowParameters.fromIntent(mAuthUi
4949
.createSignInIntentBuilder()
50-
.build()
51-
.getParcelableExtra(ExtraConstants.FLOW_PARAMS);
50+
.build());
5251
assertEquals(1, flowParameters.providers.size());
5352
assertEquals(EmailAuthProvider.PROVIDER_ID,
5453
flowParameters.providers.get(0).getProviderId());
@@ -64,16 +63,15 @@ public void testCreateStartIntent_shouldOnlyAllowOneInstanceOfAnIdp() {
6463

6564
@Test
6665
public void testCreatingStartIntent() {
67-
FlowParameters flowParameters = mAuthUi
66+
FlowParameters flowParameters = FlowParameters.fromIntent(mAuthUi
6867
.createSignInIntentBuilder()
6968
.setAvailableProviders(Arrays.asList(
7069
new IdpConfig.EmailBuilder().build(),
7170
new IdpConfig.GoogleBuilder().build(),
7271
new IdpConfig.FacebookBuilder().build(),
7372
new IdpConfig.AnonymousBuilder().build()))
7473
.setTosAndPrivacyPolicyUrls(TestConstants.TOS_URL, TestConstants.PRIVACY_URL)
75-
.build()
76-
.getParcelableExtra(ExtraConstants.FLOW_PARAMS);
74+
.build());
7775

7876
assertEquals(4, flowParameters.providers.size());
7977
assertEquals(TestHelper.MOCK_APP.getName(), flowParameters.appName);

0 commit comments

Comments
 (0)