From aee24952c35fcac7c1d4e3e6f099011000d3c96c Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Thu, 20 Sep 2018 11:55:27 -0700 Subject: [PATCH] Attempt another fix at Samsung parcelable unmarshalling errors Signed-off-by: Alex Saveau --- .../ui/auth/data/model/FlowParameters.java | 14 ++++++++++---- .../firebase/ui/auth/ui/HelperActivityBase.java | 3 +-- .../test/java/com/firebase/ui/auth/AuthUITest.java | 11 ++++------- 3 files changed, 15 insertions(+), 13 deletions(-) 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..cea740dc1 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; @@ -23,7 +24,6 @@ import android.support.annotation.StyleRes; import android.text.TextUtils; -import com.firebase.ui.auth.AuthUI; import com.firebase.ui.auth.AuthUI.IdpConfig; import com.firebase.ui.auth.util.ExtraConstants; import com.firebase.ui.auth.util.Preconditions; @@ -85,9 +85,15 @@ public FlowParameters( * Extract FlowParameters from an Intent. */ 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); + return intent.getBundleExtra(ExtraConstants.FLOW_PARAMS) + .getParcelable(ExtraConstants.FLOW_PARAMS); + } + + /** See #1416 */ + public Bundle toBundle() { + Bundle b = new Bundle(); + b.putParcelable(ExtraConstants.FLOW_PARAMS, this); + return b; } @Override 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..b79ce1c53 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,7 @@ 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_PARAMS, flowParams.toBundle()); } @Override 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..cc856e129 100644 --- a/auth/src/test/java/com/firebase/ui/auth/AuthUITest.java +++ b/auth/src/test/java/com/firebase/ui/auth/AuthUITest.java @@ -19,7 +19,6 @@ import com.firebase.ui.auth.data.model.FlowParameters; import com.firebase.ui.auth.testhelpers.TestConstants; import com.firebase.ui.auth.testhelpers.TestHelper; -import com.firebase.ui.auth.util.ExtraConstants; import com.google.firebase.auth.EmailAuthProvider; import org.junit.Before; @@ -45,10 +44,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 +62,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 +70,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);