task) {
// the credential to SmartLock (if enabled).
mActivityHelper.saveCredentialsOrFinish(
mSaveSmartLock,
- firebaseUser,
+ user,
password);
}
});
}
})
- .addOnFailureListener(new OnFailureListener() {
+ .addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
mActivityHelper.dismissDialog();
@@ -168,6 +334,7 @@ public void onFailure(@NonNull Exception e) {
} else if (e instanceof FirebaseAuthUserCollisionException) {
// Collision with existing user email
emailInput.setError(getString(R.string.error_user_collision));
+ checkAccountExists(mEmailEditText.getText().toString());
} else {
// General error message, this branch should not be invoked but
// covers future API changes
@@ -177,27 +344,11 @@ public void onFailure(@NonNull Exception e) {
});
}
- @Override
- public void onClick(View view) {
- if (view.getId() == R.id.button_create) {
- String email = mEmailEditText.getText().toString();
- String password = mPasswordEditText.getText().toString();
- String name = mNameEditText.getText().toString();
-
- boolean emailValid = mEmailFieldValidator.validate(email);
- boolean passwordValid = mPasswordFieldValidator.validate(password);
- boolean nameValid = mNameValidator.validate(name);
- if (emailValid && passwordValid && nameValid) {
- mActivityHelper.showLoadingDialog(R.string.progress_dialog_signing_up);
- registerUser(email, name, password);
- }
- }
+ public static Intent createIntent(Context context, FlowParameters flowParams) {
+ return createIntent(context, flowParams, null);
}
- public static Intent createIntent(
- Context context,
- FlowParameters flowParams,
- String email) {
+ public static Intent createIntent(Context context, FlowParameters flowParams, String email) {
return BaseHelper.createBaseIntent(context, RegisterEmailActivity.class, flowParams)
.putExtra(ExtraConstants.EXTRA_EMAIL, email);
}
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/email/SignInNoPasswordActivity.java b/auth/src/main/java/com/firebase/ui/auth/ui/email/SignInNoPasswordActivity.java
deleted file mode 100644
index 66f83c208..000000000
--- a/auth/src/main/java/com/firebase/ui/auth/ui/email/SignInNoPasswordActivity.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied. See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.firebase.ui.auth.ui.email;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.design.widget.TextInputLayout;
-import android.view.View;
-import android.view.WindowManager;
-import android.widget.Button;
-import android.widget.EditText;
-
-import com.firebase.ui.auth.R;
-import com.firebase.ui.auth.ui.AppCompatBase;
-import com.firebase.ui.auth.ui.BaseHelper;
-import com.firebase.ui.auth.ui.ExtraConstants;
-import com.firebase.ui.auth.ui.FlowParameters;
-import com.firebase.ui.auth.ui.email.field_validators.EmailFieldValidator;
-
-public class SignInNoPasswordActivity extends AppCompatBase implements View.OnClickListener {
- private EditText mEmailEditText;
- private EmailFieldValidator mEmailFieldValidator;
- private AcquireEmailHelper mAcquireEmailHelper;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mAcquireEmailHelper = new AcquireEmailHelper(mActivityHelper);
- setContentView(R.layout.signin_no_password_layout);
-
- String email = getIntent().getStringExtra(ExtraConstants.EXTRA_EMAIL);
- mEmailFieldValidator = new EmailFieldValidator(
- (TextInputLayout) findViewById(R.id.input_layout_email));
- mEmailEditText = (EditText) findViewById(R.id.email);
- if (email != null) {
- mEmailEditText.setText(email);
- }
-
- // show the keyboard
- getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
-
- Button button = (Button) findViewById(R.id.button_ok);
- button.setOnClickListener(this);
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- mAcquireEmailHelper.onActivityResult(requestCode, resultCode, data);
- }
-
- @Override
- public void onClick(View view) {
- if (!mEmailFieldValidator.validate(mEmailEditText.getText())) {
- return;
- }
- mActivityHelper.showLoadingDialog(R.string.progress_dialog_loading);
- String email = mEmailEditText.getText().toString();
- mAcquireEmailHelper.checkAccountExists(email);
- }
-
- public static Intent createIntent(
- Context context,
- FlowParameters flowParams,
- String email) {
- return BaseHelper.createBaseIntent(context, SignInNoPasswordActivity.class, flowParams)
- .putExtra(ExtraConstants.EXTRA_EMAIL, email);
- }
-}
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java b/auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java
index 1d0db4cd8..639860d4e 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java
@@ -38,8 +38,7 @@
import com.firebase.ui.auth.ui.BaseHelper;
import com.firebase.ui.auth.ui.FlowParameters;
import com.firebase.ui.auth.ui.TaskFailureLogger;
-import com.firebase.ui.auth.ui.email.EmailHintContainerActivity;
-import com.firebase.ui.auth.util.EmailFlowUtil;
+import com.firebase.ui.auth.ui.email.RegisterEmailActivity;
import com.firebase.ui.auth.util.signincontainer.SaveSmartLock;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.FacebookAuthProvider;
@@ -54,7 +53,7 @@
* Presents the list of authentication options for this app to the user. If an
* identity provider option is selected, a {@link CredentialSignInHandler}
* is launched to manage the IDP-specific sign-in flow. If email authentication is chosen,
- * the {@link EmailHintContainerActivity root email flow activity} is started.
+ * the {@link RegisterEmailActivity} is started.
*
*
*
mIdpProviders;
- @Nullable private SaveSmartLock mSaveSmartLock;
+ @Nullable
+ private SaveSmartLock mSaveSmartLock;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -188,10 +188,9 @@ public void onFailure(Bundle extra) {
@Override
public void onClick(View view) {
if (view.getId() == R.id.email_provider) {
- Intent intent = EmailFlowUtil.createIntent(
- this,
- mActivityHelper.getFlowParams());
- startActivityForResult(intent, RC_EMAIL_FLOW);
+ startActivityForResult(
+ RegisterEmailActivity.createIntent(this, mActivityHelper.getFlowParams()),
+ RC_EMAIL_FLOW);
}
}
diff --git a/auth/src/main/java/com/firebase/ui/auth/util/EmailFlowUtil.java b/auth/src/main/java/com/firebase/ui/auth/util/EmailFlowUtil.java
deleted file mode 100644
index d0db5c591..000000000
--- a/auth/src/main/java/com/firebase/ui/auth/util/EmailFlowUtil.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.firebase.ui.auth.util;
-
-import android.content.Context;
-import android.content.Intent;
-
-import com.firebase.ui.auth.ui.FlowParameters;
-import com.firebase.ui.auth.ui.email.EmailHintContainerActivity;
-import com.firebase.ui.auth.ui.email.SignInNoPasswordActivity;
-
-/**
- * Helper class to kick off the Email/Password sign-in flow.
- */
-public class EmailFlowUtil {
-
- /**
- * Return an intent for either {@link EmailHintContainerActivity} or
- * {@link SignInNoPasswordActivity} depending on if SmartLock is enabled.
- */
- public static Intent createIntent(Context context, FlowParameters parameters) {
- if (parameters.smartLockEnabled) {
- return EmailHintContainerActivity.createIntent(context, parameters);
- } else {
- return SignInNoPasswordActivity.createIntent(context, parameters, null);
- }
- }
-
-}
diff --git a/auth/src/main/java/com/firebase/ui/auth/util/signincontainer/SignInDelegate.java b/auth/src/main/java/com/firebase/ui/auth/util/signincontainer/SignInDelegate.java
index 102be1f3f..db23a4a0e 100644
--- a/auth/src/main/java/com/firebase/ui/auth/util/signincontainer/SignInDelegate.java
+++ b/auth/src/main/java/com/firebase/ui/auth/util/signincontainer/SignInDelegate.java
@@ -20,10 +20,9 @@
import com.firebase.ui.auth.ui.FlowParameters;
import com.firebase.ui.auth.ui.FragmentHelper;
import com.firebase.ui.auth.ui.TaskFailureLogger;
-import com.firebase.ui.auth.ui.email.SignInNoPasswordActivity;
+import com.firebase.ui.auth.ui.email.RegisterEmailActivity;
import com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity;
import com.firebase.ui.auth.util.CredentialsApiHelper;
-import com.firebase.ui.auth.util.EmailFlowUtil;
import com.firebase.ui.auth.util.GoogleApiConstants;
import com.firebase.ui.auth.util.PlayServicesHelper;
import com.google.android.gms.auth.api.Auth;
@@ -58,8 +57,7 @@
* with this credential. If it does not, the
* {@link AuthMethodPickerActivity authentication method picker activity}
* is started, unless only email is supported, in which case the
- * {@link SignInNoPasswordActivity email sign-in flow}
- * is started.
+ * {@link RegisterEmailActivity} is started.
*/
public class SignInDelegate extends SmartLockBase {
private static final String TAG = "SignInDelegate";
@@ -254,9 +252,7 @@ private void startAuthMethodChoice() {
if (idpConfigs.size() == 1) {
if (idpConfigs.get(0).getProviderId().equals(EmailAuthProvider.PROVIDER_ID)) {
startActivityForResult(
- EmailFlowUtil.createIntent(
- getContext(),
- mHelper.getFlowParams()),
+ RegisterEmailActivity.createIntent(getContext(), mHelper.getFlowParams()),
RC_EMAIL_FLOW);
} else {
redirectToIdpSignIn(null,
@@ -331,7 +327,7 @@ public void onComplete(@NonNull Task task) {
private void redirectToIdpSignIn(String email, String accountType) {
if (TextUtils.isEmpty(accountType)) {
startActivityForResult(
- SignInNoPasswordActivity.createIntent(
+ RegisterEmailActivity.createIntent(
getContext(),
mHelper.getFlowParams(),
email),
diff --git a/auth/src/main/res/layout/signin_no_password_layout.xml b/auth/src/main/res/layout/signin_no_password_layout.xml
deleted file mode 100644
index 82f7150b8..000000000
--- a/auth/src/main/res/layout/signin_no_password_layout.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/auth/src/main/res/values/strings.xml b/auth/src/main/res/values/strings.xml
index 3cc6b7a69..1c929664c 100644
--- a/auth/src/main/res/values/strings.xml
+++ b/auth/src/main/res/values/strings.xml
@@ -34,7 +34,6 @@
Sign in
Sign in with Google
Sign in with Facebook
- Done
Check your email
Recover password
You already have an account
@@ -59,8 +58,8 @@
Sending…
Signing in…
Signing up…
+ Checking for existing accounts…
App logo
- Toggle password visibility
diff --git a/auth/src/test/java/com/firebase/ui/auth/ui/email/RegisterEmailActivityTest.java b/auth/src/test/java/com/firebase/ui/auth/ui/email/RegisterEmailActivityTest.java
index 19dcbc42e..af12d6a42 100644
--- a/auth/src/test/java/com/firebase/ui/auth/ui/email/RegisterEmailActivityTest.java
+++ b/auth/src/test/java/com/firebase/ui/auth/ui/email/RegisterEmailActivityTest.java
@@ -55,7 +55,7 @@
public class RegisterEmailActivityTest {
private RegisterEmailActivity createActivity(String email) {
- Intent startIntent = SignInNoPasswordActivity.createIntent(
+ Intent startIntent = RegisterEmailActivity.createIntent(
RuntimeEnvironment.application,
TestHelper.getFlowParameters(Collections.singletonList(AuthUI.EMAIL_PROVIDER)),
email);
diff --git a/auth/src/test/java/com/firebase/ui/auth/ui/email/SignInNoPasswordActivityTest.java b/auth/src/test/java/com/firebase/ui/auth/ui/email/SignInNoPasswordActivityTest.java
deleted file mode 100644
index ad28853dc..000000000
--- a/auth/src/test/java/com/firebase/ui/auth/ui/email/SignInNoPasswordActivityTest.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied. See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.firebase.ui.auth.ui.email;
-
-import android.content.Intent;
-import android.support.design.widget.TextInputLayout;
-import android.widget.Button;
-import android.widget.EditText;
-
-import com.firebase.ui.auth.AuthUI;
-import com.firebase.ui.auth.BuildConfig;
-import com.firebase.ui.auth.R;
-import com.firebase.ui.auth.test_helpers.ActivityHelperShadow;
-import com.firebase.ui.auth.test_helpers.AutoCompleteTask;
-import com.firebase.ui.auth.test_helpers.BaseHelperShadow;
-import com.firebase.ui.auth.test_helpers.CustomRobolectricGradleTestRunner;
-import com.firebase.ui.auth.test_helpers.FakeProviderQueryResult;
-import com.firebase.ui.auth.test_helpers.TestConstants;
-import com.firebase.ui.auth.test_helpers.TestHelper;
-import com.firebase.ui.auth.ui.ExtraConstants;
-import com.google.firebase.auth.EmailAuthProvider;
-import com.google.firebase.auth.ProviderQueryResult;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.Robolectric;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowActivity;
-
-import java.util.Arrays;
-import java.util.Collections;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.when;
-
-
-@RunWith(CustomRobolectricGradleTestRunner.class)
-@Config(constants = BuildConfig.class, sdk = 23)
-public class SignInNoPasswordActivityTest {
- @Before
- public void setUp() {
- TestHelper.initializeApp(RuntimeEnvironment.application);
- }
-
- @Test
- public void testNextButton_withInvalidEmailAddress() {
- Intent startIntent = SignInNoPasswordActivity.createIntent(
- RuntimeEnvironment.application,
- TestHelper.getFlowParameters(Collections.singletonList(AuthUI.EMAIL_PROVIDER)),
- null);
-
- SignInNoPasswordActivity noPasswordActivity =
- Robolectric.buildActivity(SignInNoPasswordActivity.class)
- .withIntent(startIntent).create().visible().get();
- EditText email = (EditText) noPasswordActivity.findViewById(R.id.email);
- email.setText("not-a-valid-email");
- Button next = (Button) noPasswordActivity.findViewById(R.id.button_ok);
- next.performClick();
-
- TextInputLayout emailLayout = (TextInputLayout) noPasswordActivity
- .findViewById(R.id.input_layout_email);
-
- assertEquals(
- noPasswordActivity.getString(R.string.invalid_email_address),
- emailLayout.getError().toString());
- }
-
- private SignInNoPasswordActivity createActivity(String email) {
- Intent startIntent = SignInNoPasswordActivity.createIntent(
- RuntimeEnvironment.application,
- TestHelper.getFlowParameters(Collections.singletonList(AuthUI.EMAIL_PROVIDER)),
- email);
- return Robolectric.buildActivity(SignInNoPasswordActivity.class)
- .withIntent(startIntent).create().visible().get();
- }
-
- @Test
- @Config(shadows = {BaseHelperShadow.class, ActivityHelperShadow.class})
- public void testNextButton_withNewEmail() {
- SignInNoPasswordActivity noPasswordActivity = createActivity(TestConstants.EMAIL);
- Button next = (Button) noPasswordActivity.findViewById(R.id.button_ok);
-
- when(ActivityHelperShadow.sFirebaseAuth.fetchProvidersForEmail(TestConstants.EMAIL))
- .thenReturn(
- new AutoCompleteTask(
- new FakeProviderQueryResult(Collections.emptyList()),
- true,
- null));
-
- next.performClick();
-
- ShadowActivity shadowActivity = Shadows.shadowOf(noPasswordActivity);
- ShadowActivity.IntentForResult nextIntent =
- shadowActivity.getNextStartedActivityForResult();
- assertEquals(
- RegisterEmailActivity.class.getName(),
- nextIntent.intent.getComponent().getClassName());
- assertEquals(
- TestConstants.EMAIL,
- nextIntent.intent.getExtras().getString(ExtraConstants.EXTRA_EMAIL));
- }
-
- @Test
- @Config(shadows = {BaseHelperShadow.class, ActivityHelperShadow.class})
- public void testNextButton_withExistingPasswordAccount() {
- SignInNoPasswordActivity noPasswordActivity = createActivity(TestConstants.EMAIL);
- Button next = (Button) noPasswordActivity.findViewById(R.id.button_ok);
-
- when(ActivityHelperShadow.sFirebaseAuth.fetchProvidersForEmail(TestConstants.EMAIL))
- .thenReturn(
- new AutoCompleteTask(
- new FakeProviderQueryResult(
- Arrays.asList(EmailAuthProvider.PROVIDER_ID)),
- true,
- null));
-
- next.performClick();
-
- ShadowActivity shadowActivity = Shadows.shadowOf(noPasswordActivity);
- ShadowActivity.IntentForResult nextIntent =
- shadowActivity.getNextStartedActivityForResult();
- assertEquals(
- SignInActivity.class.getName(),
- nextIntent.intent.getComponent().getClassName());
- assertEquals(
- TestConstants.EMAIL,
- nextIntent.intent.getExtras().getString(ExtraConstants.EXTRA_EMAIL));
- }
-}
diff --git a/auth/src/test/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivityTest.java b/auth/src/test/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivityTest.java
index 4926dc21d..feb438b22 100644
--- a/auth/src/test/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivityTest.java
+++ b/auth/src/test/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivityTest.java
@@ -33,7 +33,7 @@
import com.firebase.ui.auth.test_helpers.LoginManagerShadow;
import com.firebase.ui.auth.test_helpers.TestConstants;
import com.firebase.ui.auth.test_helpers.TestHelper;
-import com.firebase.ui.auth.ui.email.EmailHintContainerActivity;
+import com.firebase.ui.auth.ui.email.RegisterEmailActivity;
import com.firebase.ui.auth.util.PlayServicesHelper;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.AuthResult;
@@ -125,7 +125,7 @@ public void testEmailLoginFlow() {
Shadows.shadowOf(authMethodPickerActivity).getNextStartedActivityForResult();
assertEquals(
- EmailHintContainerActivity.class.getName(),
+ RegisterEmailActivity.class.getName(),
nextIntent.intent.getComponent().getClassName());
}