Skip to content

Various bugfixes for 1.0 #380

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Oct 26, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 19 additions & 8 deletions auth/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,46 +13,57 @@
<activity
android:name="com.firebase.ui.auth.ui.email.ConfirmRecoverPasswordActivity"
android:label="@string/title_confirm_recover_password_activity"
android:exported="false"
android:theme="@style/FirebaseUI.Dialog" />
<activity
android:name="com.firebase.ui.auth.ui.email.EmailHintContainerActivity"
android:name=".ui.email.EmailHintContainerActivity"
android:label="@string/default_toolbar_title"
android:exported="false"
android:theme="@style/FirebaseUI.Translucent" />
<activity
android:name="com.firebase.ui.auth.ui.email.RecoverPasswordActivity"
android:name=".ui.email.RecoverPasswordActivity"
android:label="@string/title_recover_password_activity"
android:exported="false"
android:theme="@style/FirebaseUI" />
<activity
android:name="com.firebase.ui.auth.ui.email.RegisterEmailActivity"
android:name=".ui.email.RegisterEmailActivity"
android:label="@string/title_register_email_activity"
android:exported="false"
android:theme="@style/FirebaseUI" />
<activity
android:name="com.firebase.ui.auth.ui.email.SignInNoPasswordActivity"
android:name=".ui.email.SignInNoPasswordActivity"
android:label="@string/title_sign_in_no_password_activity"
android:exported="false"
android:theme="@style/FirebaseUI" />
<activity
android:name="com.firebase.ui.auth.ui.email.SignInActivity"
android:name=".ui.email.SignInActivity"
android:label="@string/title_sign_in_activity"
android:exported="false"
android:theme="@style/FirebaseUI" />
<activity
android:name="com.firebase.ui.auth.ui.account_link.WelcomeBackIdpPrompt"
android:name=".ui.account_link.WelcomeBackIdpPrompt"
android:label="@string/title_welcome_back_idp_prompt"
android:exported="false"
android:theme="@style/FirebaseUI" />
<activity
android:name="com.firebase.ui.auth.ui.account_link.WelcomeBackPasswordPrompt"
android:name=".ui.account_link.WelcomeBackPasswordPrompt"
android:label="@string/title_welcome_back_password_prompt"
android:exported="false"
android:theme="@style/FirebaseUI" />
<activity
android:name=".ui.idp.AuthMethodPickerActivity"
android:label="@string/default_toolbar_title"
android:exported="false"
android:theme="@style/FirebaseUI" />
<activity
android:name="com.firebase.ui.auth.ui.idp.IdpSignInContainerActivity"
android:name=".ui.idp.IdpSignInContainerActivity"
android:label="@string/default_toolbar_title"
android:exported="false"
android:theme="@style/FirebaseUI.Translucent" />
<activity
android:name=".ui.ChooseAccountActivity"
android:label="@string/default_toolbar_title"
android:exported="false"
android:theme="@style/FirebaseUI.Translucent" />

<activity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import android.widget.EditText;
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;
Expand Down Expand Up @@ -105,7 +106,7 @@ public void onClick(View view) {
}
}

private void next(String email, final String password) {
private void next(final String email, final String password) {
final FirebaseAuth firebaseAuth = mActivityHelper.getFirebaseAuth();

// Check for null or empty password
Expand Down Expand Up @@ -146,14 +147,15 @@ public void onSuccess(AuthResult authResult) {
mActivityHelper,
authResult.getUser(),
password,
null /* provider */);
null);
}
});
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
mActivityHelper.dismissDialog();
String error = e.getLocalizedMessage();
mPasswordLayout.setError(error);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,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;
Expand Down Expand Up @@ -131,7 +133,7 @@ public void onClick(View view) {
});
}

private void registerUser(String email, final String name, final String password) {
private void registerUser(final String email, final String name, final String password) {
final FirebaseAuth firebaseAuth = mActivityHelper.getFirebaseAuth();
// create the user
firebaseAuth.createUserWithEmailAndPassword(email, password)
Expand All @@ -155,11 +157,12 @@ public void onComplete(@NonNull Task<Void> 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);
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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(
Expand All @@ -103,7 +105,7 @@ public void onSuccess(AuthResult authResult) {
mActivityHelper,
authResult.getUser(),
password,
null /* provider */);
null);
}
})
.addOnFailureListener(new OnFailureListener() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public void onComplete(@NonNull Task<AuthResult> task) {
mActivityHelper,
firebaseUser,
null /* password */,
mResponse.getProviderType());
mResponse);
} else {
if (task.getException() instanceof FirebaseAuthUserCollisionException) {
final String email = mResponse.getEmail();
Expand Down
44 changes: 25 additions & 19 deletions auth/src/main/java/com/firebase/ui/auth/util/SmartLock.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand All @@ -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;
}

Expand All @@ -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;
}

Expand Down Expand Up @@ -140,15 +140,15 @@ public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
null);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
finish(RESULT_CANCELED);
finish();
}
}


@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
Expand All @@ -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();
}
}
}
Expand All @@ -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) {
Expand All @@ -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);
}

/**
Expand All @@ -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;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ public void testSignInSucceeded() {
mockActivityHelper,
mockFirebaseUser,
null,
GoogleAuthProvider.PROVIDER_ID);
idpResponse);
}

@Test
Expand Down