diff --git a/auth/src/main/java/com/firebase/ui/auth/AuthUI.java b/auth/src/main/java/com/firebase/ui/auth/AuthUI.java index 465e3e5ad..a17567c1a 100644 --- a/auth/src/main/java/com/firebase/ui/auth/AuthUI.java +++ b/auth/src/main/java/com/firebase/ui/auth/AuthUI.java @@ -22,6 +22,7 @@ import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.StringDef; import android.support.annotation.StyleRes; import android.support.v4.app.FragmentActivity; @@ -73,6 +74,13 @@ * for examples on how to get started with FirebaseUI Auth. */ public class AuthUI { + @StringDef({ + EmailAuthProvider.PROVIDER_ID, EMAIL_PROVIDER, + GoogleAuthProvider.PROVIDER_ID, GOOGLE_PROVIDER, + FacebookAuthProvider.PROVIDER_ID, FACEBOOK_PROVIDER, + TwitterAuthProvider.PROVIDER_ID, TWITTER_PROVIDER + }) + public @interface SupportedProvider {} /** * Provider identifier for email and password credentials, for use with @@ -333,7 +341,7 @@ public static class IdpConfig implements Parcelable { private final String mProviderId; private final List mScopes; - private IdpConfig(@NonNull String providerId, List scopes) { + private IdpConfig(@SupportedProvider @NonNull String providerId, List scopes) { mProviderId = providerId; mScopes = Collections.unmodifiableList(scopes); } @@ -343,6 +351,7 @@ private IdpConfig(Parcel in) { mScopes = Collections.unmodifiableList(in.createStringArrayList()); } + @SupportedProvider public String getProviderId() { return mProviderId; } @@ -398,7 +407,7 @@ public String toString() { } public static class Builder { - private String mProviderId; + @SupportedProvider private String mProviderId; private List mScopes = new ArrayList<>(); /** @@ -408,7 +417,7 @@ public static class Builder { * AuthUI#GOOGLE_PROVIDER}. See {@link AuthUI#SUPPORTED_PROVIDERS} for * the complete list of supported Identity providers */ - public Builder(@NonNull String providerId) { + public Builder(@SupportedProvider @NonNull String providerId) { if (!SUPPORTED_PROVIDERS.contains(providerId)) { throw new IllegalArgumentException("Unkown provider: " + providerId); } diff --git a/auth/src/main/java/com/firebase/ui/auth/IdpResponse.java b/auth/src/main/java/com/firebase/ui/auth/IdpResponse.java index dabdd078e..b83b2fbbc 100644 --- a/auth/src/main/java/com/firebase/ui/auth/IdpResponse.java +++ b/auth/src/main/java/com/firebase/ui/auth/IdpResponse.java @@ -84,6 +84,7 @@ public Intent toIntent() { * Get the type of provider. e.g. {@link AuthUI#GOOGLE_PROVIDER} */ @NonNull + @AuthUI.SupportedProvider public String getProviderType() { return mProviderId; } @@ -158,7 +159,7 @@ public static class Builder { private String mToken; private String mSecret; - public Builder(@NonNull String providerId, @Nullable String email) { + public Builder(@AuthUI.SupportedProvider @NonNull String providerId, @Nullable String email) { mProviderId = providerId; mEmail = email; } diff --git a/auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java b/auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java index 033ae151a..c8de93d7d 100644 --- a/auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java +++ b/auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java @@ -89,6 +89,7 @@ public String getName(Context context) { } @Override + @AuthUI.SupportedProvider public String getProviderId() { return FacebookAuthProvider.PROVIDER_ID; } diff --git a/auth/src/main/java/com/firebase/ui/auth/provider/GoogleProvider.java b/auth/src/main/java/com/firebase/ui/auth/provider/GoogleProvider.java index 27370f404..2b978ac1b 100644 --- a/auth/src/main/java/com/firebase/ui/auth/provider/GoogleProvider.java +++ b/auth/src/main/java/com/firebase/ui/auth/provider/GoogleProvider.java @@ -26,6 +26,7 @@ import android.util.Log; import android.widget.Toast; +import com.firebase.ui.auth.AuthUI; import com.firebase.ui.auth.AuthUI.IdpConfig; import com.firebase.ui.auth.IdpResponse; import com.firebase.ui.auth.R; @@ -104,6 +105,7 @@ public String getName(Context context) { } @Override + @AuthUI.SupportedProvider public String getProviderId() { return GoogleAuthProvider.PROVIDER_ID; } diff --git a/auth/src/main/java/com/firebase/ui/auth/provider/TwitterProvider.java b/auth/src/main/java/com/firebase/ui/auth/provider/TwitterProvider.java index 34e3485c2..f8d70e6bb 100644 --- a/auth/src/main/java/com/firebase/ui/auth/provider/TwitterProvider.java +++ b/auth/src/main/java/com/firebase/ui/auth/provider/TwitterProvider.java @@ -7,6 +7,7 @@ import android.support.annotation.LayoutRes; import android.util.Log; +import com.firebase.ui.auth.AuthUI; import com.firebase.ui.auth.IdpResponse; import com.firebase.ui.auth.R; import com.google.firebase.auth.AuthCredential; @@ -54,6 +55,7 @@ public String getName(Context context) { } @Override + @AuthUI.SupportedProvider public String getProviderId() { return TwitterAuthProvider.PROVIDER_ID; } diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/User.java b/auth/src/main/java/com/firebase/ui/auth/ui/User.java index e6843b896..7fab9ace1 100644 --- a/auth/src/main/java/com/firebase/ui/auth/ui/User.java +++ b/auth/src/main/java/com/firebase/ui/auth/ui/User.java @@ -9,6 +9,8 @@ import android.support.annotation.Nullable; import android.support.annotation.RestrictTo; +import com.firebase.ui.auth.AuthUI; + @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) public class User implements Parcelable { public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @@ -57,6 +59,7 @@ public String getName() { } @Nullable + @AuthUI.SupportedProvider public String getProvider() { return mProvider; } @@ -94,7 +97,7 @@ public Builder setName(String name) { return this; } - public Builder setProvider(String provider) { + public Builder setProvider(@AuthUI.SupportedProvider String provider) { mProvider = provider; return this; } 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 aa620c53c..9f7cba4f3 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 @@ -20,6 +20,7 @@ import android.support.annotation.RestrictTo; import android.util.Log; +import com.firebase.ui.auth.AuthUI; import com.firebase.ui.auth.ErrorCodes; import com.firebase.ui.auth.IdpResponse; import com.firebase.ui.auth.ResultCodes; 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 2632bc7ec..a4d19aaa4 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 @@ -11,6 +11,7 @@ import android.support.v4.app.FragmentManager; import android.text.TextUtils; import android.util.Log; + import com.firebase.ui.auth.AuthUI; import com.firebase.ui.auth.AuthUI.IdpConfig; import com.firebase.ui.auth.IdpResponse; @@ -194,7 +195,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) { private List getSupportedAccountTypes() { List accounts = new ArrayList<>(); for (AuthUI.IdpConfig idpConfig : mHelper.getFlowParams().providerInfo) { - String providerId = idpConfig.getProviderId(); + @AuthUI.SupportedProvider String providerId = idpConfig.getProviderId(); if (providerId.equals(GoogleAuthProvider.PROVIDER_ID) || providerId.equals(FacebookAuthProvider.PROVIDER_ID) || providerId.equals(TwitterAuthProvider.PROVIDER_ID)) { diff --git a/auth/src/main/java/com/firebase/ui/auth/util/signincontainer/SmartLockBase.java b/auth/src/main/java/com/firebase/ui/auth/util/signincontainer/SmartLockBase.java index 9f410d7fc..3deeee234 100644 --- a/auth/src/main/java/com/firebase/ui/auth/util/signincontainer/SmartLockBase.java +++ b/auth/src/main/java/com/firebase/ui/auth/util/signincontainer/SmartLockBase.java @@ -9,6 +9,7 @@ import android.util.Pair; import android.widget.Toast; +import com.firebase.ui.auth.AuthUI; import com.firebase.ui.auth.ui.FragmentBase; import com.google.android.gms.auth.api.credentials.Credential; import com.google.android.gms.auth.api.credentials.IdentityProviders; @@ -42,7 +43,7 @@ public abstract class SmartLockBase extends FragmentBase imple * Translate a Firebase Auth provider ID (such as {@link GoogleAuthProvider#PROVIDER_ID}) to * a Credentials API account type (such as {@link IdentityProviders#GOOGLE}). */ - public static String providerIdToAccountType(@NonNull String providerId) { + public static String providerIdToAccountType(@AuthUI.SupportedProvider @NonNull String providerId) { switch (providerId) { case GoogleAuthProvider.PROVIDER_ID: return IdentityProviders.GOOGLE; @@ -58,6 +59,7 @@ public static String providerIdToAccountType(@NonNull String providerId) { } } + @AuthUI.SupportedProvider public static String accountTypeToProviderId(@NonNull String accountType) { switch (accountType) { case IdentityProviders.GOOGLE: @@ -84,7 +86,7 @@ public static List credentialsFromFirebaseUser(@NonNull FirebaseUser List credentials = new ArrayList<>(); for (UserInfo userInfo : user.getProviderData()) { // Get provider ID from Firebase Auth - String providerId = userInfo.getProviderId(); + @AuthUI.SupportedProvider String providerId = userInfo.getProviderId(); // Convert to Credentials API account type String accountType = providerIdToAccountType(providerId); @@ -132,10 +134,6 @@ public void onStop() { @Override public void onDestroy() { super.onDestroy(); - cleanup(); - } - - public void cleanup() { if (mGoogleApiClient != null) { mGoogleApiClient.disconnect(); }