diff --git a/auth/src/main/AndroidManifest.xml b/auth/src/main/AndroidManifest.xml
index 64ed09baf..5491d1ffa 100644
--- a/auth/src/main/AndroidManifest.xml
+++ b/auth/src/main/AndroidManifest.xml
@@ -13,46 +13,57 @@
task) {
// the account creation succeeded and we want to save
// the credential to SmartLock (if enabled).
SmartLock.getInstance(RegisterEmailActivity.this, TAG)
- .saveCredentialsOrFinish(RegisterEmailActivity.this,
- mActivityHelper,
- firebaseUser,
- password,
- null /* provider */);
+ .saveCredentialsOrFinish(
+ RegisterEmailActivity.this,
+ mActivityHelper,
+ firebaseUser,
+ password,
+ null);
}
});
}
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/email/SignInActivity.java b/auth/src/main/java/com/firebase/ui/auth/ui/email/SignInActivity.java
index 7d091eac7..fb7c1ad80 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/email/SignInActivity.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/email/SignInActivity.java
@@ -26,6 +26,8 @@
import android.widget.ImageView;
import android.widget.TextView;
+import com.firebase.ui.auth.AuthUI;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.R;
import com.firebase.ui.auth.ui.ActivityHelper;
import com.firebase.ui.auth.ui.AppCompatBase;
@@ -89,7 +91,7 @@ protected void onCreate(Bundle savedInstanceState) {
recoveryButton.setOnClickListener(this);
}
- private void signIn(String email, final String password) {
+ private void signIn(final String email, final String password) {
mActivityHelper.getFirebaseAuth()
.signInWithEmailAndPassword(email, password)
.addOnFailureListener(
@@ -103,7 +105,7 @@ public void onSuccess(AuthResult authResult) {
mActivityHelper,
authResult.getUser(),
password,
- null /* provider */);
+ null);
}
})
.addOnFailureListener(new OnFailureListener() {
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandler.java b/auth/src/main/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandler.java
index e5a8da173..0d6ca0e8b 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandler.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandler.java
@@ -65,7 +65,7 @@ public void onComplete(@NonNull Task task) {
mActivityHelper,
firebaseUser,
null /* password */,
- mResponse.getProviderType());
+ mResponse);
} else {
if (task.getException() instanceof FirebaseAuthUserCollisionException) {
final String email = mResponse.getEmail();
diff --git a/auth/src/main/java/com/firebase/ui/auth/util/SmartLock.java b/auth/src/main/java/com/firebase/ui/auth/util/SmartLock.java
index 864e2928f..91d8e85b4 100644
--- a/auth/src/main/java/com/firebase/ui/auth/util/SmartLock.java
+++ b/auth/src/main/java/com/firebase/ui/auth/util/SmartLock.java
@@ -25,10 +25,11 @@
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
-
import com.firebase.ui.auth.BuildConfig;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.ui.ActivityHelper;
import com.firebase.ui.auth.ui.AppCompatBase;
+import com.firebase.ui.auth.ui.ExtraConstants;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.credentials.Credential;
import com.google.android.gms.auth.api.credentials.IdentityProviders;
@@ -42,8 +43,6 @@
import com.google.firebase.auth.GoogleAuthProvider;
import com.google.firebase.auth.TwitterAuthProvider;
-import static android.app.Activity.RESULT_CANCELED;
-import static android.app.Activity.RESULT_FIRST_USER;
import static android.app.Activity.RESULT_OK;
public class SmartLock extends Fragment
@@ -61,13 +60,14 @@ public class SmartLock extends Fragment
private String mPassword;
private String mProvider;
private String mProfilePictureUri;
+ private IdpResponse mResponse;
private GoogleApiClient mCredentialsApiClient;
@Override
public void onConnected(@Nullable Bundle bundle) {
if (mEmail == null) {
Log.e(TAG, "Unable to save null credential!");
- finish(RESULT_CANCELED);
+ finish();
return;
}
@@ -90,7 +90,7 @@ public void onConnected(@Nullable Bundle bundle) {
break;
default:
Log.e(TAG, "Unable to save null credential!");
- finish(RESULT_CANCELED);
+ finish();
return;
}
@@ -140,7 +140,7 @@ public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
null);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
- finish(RESULT_CANCELED);
+ finish();
}
}
@@ -148,7 +148,7 @@ public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
@Override
public void onResult(@NonNull Status status) {
if (status.isSuccess()) {
- finish(RESULT_OK);
+ finish();
} else {
if (status.hasResolution()) {
// Try to resolve the save request. This will prompt the user if
@@ -164,10 +164,10 @@ public void onResult(@NonNull Status status) {
} catch (IntentSender.SendIntentException e) {
// Could not resolve the request
Log.e(TAG, "STATUS: Failed to send resolution.", e);
- finish(RESULT_CANCELED);
+ finish();
}
} else {
- finish(RESULT_CANCELED);
+ finish();
}
}
}
@@ -181,10 +181,10 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (BuildConfig.DEBUG) {
Log.d(TAG, "SAVE: OK");
}
- finish(RESULT_OK);
+ finish();
} else {
Log.e(TAG, "SAVE: Canceled by user");
- finish(RESULT_FIRST_USER);
+ finish();
}
} else if (requestCode == RC_UPDATE_SERVICE) {
if (resultCode == RESULT_OK) {
@@ -195,13 +195,14 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
.setResultCallback(this);
} else {
Log.e(TAG, "SAVE: Canceled by user");
- finish(RESULT_FIRST_USER);
+ finish();
}
}
}
- private void finish(int resultCode) {
- mActivity.finish(RESULT_OK, mActivity.getIntent());
+ private void finish() {
+ Intent resultIntent = new Intent().putExtra(ExtraConstants.EXTRA_IDP_RESPONSE, mResponse);
+ mActivity.finish(RESULT_OK, resultIntent);
}
/**
@@ -217,32 +218,37 @@ public void saveCredentialsOrFinish(AppCompatBase activity,
ActivityHelper helper,
FirebaseUser firebaseUser,
@Nullable String password,
- @Nullable String provider) {
+ @Nullable IdpResponse response) {
mActivity = activity;
mActivityHelper = helper;
mName = firebaseUser.getDisplayName();
mEmail = firebaseUser.getEmail();
mPassword = password;
- mProvider = provider;
+ mResponse = response;
+ if (response != null) {
+ mProvider = response.getProviderType();
+ } else {
+ mProvider = null;
+ }
mProfilePictureUri = firebaseUser.getPhotoUrl() != null ? firebaseUser.getPhotoUrl()
.toString() : null;
// If SmartLock is disabled, finish the Activity
if (!helper.getFlowParams().smartLockEnabled) {
- finish(RESULT_CANCELED);
+ finish();
return;
}
// If Play Services is not available, finish the Activity
if (!PlayServicesHelper.getInstance(activity).isPlayServicesAvailable()) {
- finish(RESULT_CANCELED);
+ finish();
return;
}
if (!FirebaseAuthWrapperFactory
.getFirebaseAuthWrapper(helper.getFlowParams().appName)
.isPlayServicesAvailable(activity)) {
- finish(RESULT_CANCELED);
+ finish();
return;
}
diff --git a/auth/src/test/java/com/firebase/ui/auth/test_helpers/SmartLockResult.java b/auth/src/test/java/com/firebase/ui/auth/test_helpers/SmartLockResult.java
index 23474721f..936c03222 100644
--- a/auth/src/test/java/com/firebase/ui/auth/test_helpers/SmartLockResult.java
+++ b/auth/src/test/java/com/firebase/ui/auth/test_helpers/SmartLockResult.java
@@ -3,6 +3,7 @@
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.ui.ActivityHelper;
import com.firebase.ui.auth.ui.AppCompatBase;
import com.firebase.ui.auth.util.SmartLock;
@@ -26,13 +27,17 @@ public void saveCredentialsOrFinish(AppCompatBase activity,
ActivityHelper helper,
FirebaseUser firebaseUser,
@Nullable String password,
- @Nullable String provider) {
- assertEquals(firebaseUser.getEmail(), TestConstants.EMAIL);
- assertEquals(firebaseUser.getDisplayName(), TestConstants.NAME);
- assertEquals(firebaseUser.getPhotoUrl() != null
- ? firebaseUser.getPhotoUrl().toString() : null, TestConstants.PHOTO_URL);
- assertEquals(password, mPassword);
- assertEquals(provider, mProvider);
+ @Nullable IdpResponse idpResponse) {
+ assertEquals(TestConstants.EMAIL, firebaseUser.getEmail());
+ assertEquals(TestConstants.NAME, firebaseUser.getDisplayName());
+ assertEquals(TestConstants.PHOTO_URL, firebaseUser.getPhotoUrl() != null
+ ? firebaseUser.getPhotoUrl().toString() : null);
+ assertEquals(mPassword, password);
+ String provider = null;
+ if (idpResponse != null) {
+ provider = idpResponse.getProviderType();
+ }
+ assertEquals(mProvider, provider);
mCountDownLatch.countDown();
}
diff --git a/auth/src/test/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandlerTest.java b/auth/src/test/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandlerTest.java
index caa60d443..725e6b245 100644
--- a/auth/src/test/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandlerTest.java
+++ b/auth/src/test/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandlerTest.java
@@ -117,7 +117,7 @@ public void testSignInSucceeded() {
mockActivityHelper,
mockFirebaseUser,
null,
- GoogleAuthProvider.PROVIDER_ID);
+ idpResponse);
}
@Test