Skip to content

Commit b70c675

Browse files
committed
Remove unnecessary Zygote class initialization activity when providers are absent
Signed-off-by: Alex Saveau <[email protected]>
1 parent d23c763 commit b70c675

File tree

4 files changed

+33
-31
lines changed

4 files changed

+33
-31
lines changed

auth/src/main/java/com/firebase/ui/auth/AuthUI.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,13 @@
3131

3232
import com.facebook.login.LoginManager;
3333
import com.firebase.ui.auth.data.model.FlowParameters;
34-
import com.firebase.ui.auth.data.remote.FacebookSignInHandler;
35-
import com.firebase.ui.auth.data.remote.TwitterSignInHandler;
3634
import com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity;
3735
import com.firebase.ui.auth.util.CredentialUtils;
3836
import com.firebase.ui.auth.util.ExtraConstants;
3937
import com.firebase.ui.auth.util.GoogleApiUtils;
4038
import com.firebase.ui.auth.util.Preconditions;
4139
import com.firebase.ui.auth.util.data.PhoneNumberUtils;
40+
import com.firebase.ui.auth.util.data.ProviderAvailability;
4241
import com.firebase.ui.auth.util.data.ProviderUtils;
4342
import com.google.android.gms.auth.api.credentials.Credential;
4443
import com.google.android.gms.auth.api.credentials.CredentialRequest;
@@ -452,10 +451,10 @@ public Task<Void> then(@NonNull Task<Void> task) {
452451
}
453452

454453
private Task<Void> signOutIdps(@NonNull Context context) {
455-
if (FacebookSignInHandler.IS_AVAILABLE) {
454+
if (ProviderAvailability.IS_FACEBOOK_AVAILABLE) {
456455
LoginManager.getInstance().logOut();
457456
}
458-
if (TwitterSignInHandler.IS_AVAILABLE) {
457+
if (ProviderAvailability.IS_TWITTER_AVAILABLE) {
459458
TwitterCore.getInstance().getSessionManager().clearActiveSession();
460459
}
461460
return GoogleSignIn.getClient(context, GoogleSignInOptions.DEFAULT_SIGN_IN).signOut();
@@ -874,7 +873,7 @@ public static final class FacebookBuilder extends Builder {
874873
public FacebookBuilder() {
875874
//noinspection deprecation taking a hit for the backcompat team
876875
super(FacebookAuthProvider.PROVIDER_ID);
877-
if (!FacebookSignInHandler.IS_AVAILABLE) {
876+
if (!ProviderAvailability.IS_FACEBOOK_AVAILABLE) {
878877
throw new RuntimeException(
879878
"Facebook provider cannot be configured " +
880879
"without dependency. Did you forget to add " +
@@ -912,7 +911,7 @@ public static final class TwitterBuilder extends Builder {
912911
public TwitterBuilder() {
913912
//noinspection deprecation taking a hit for the backcompat team
914913
super(TwitterAuthProvider.PROVIDER_ID);
915-
if (!TwitterSignInHandler.IS_AVAILABLE) {
914+
if (!ProviderAvailability.IS_TWITTER_AVAILABLE) {
916915
throw new RuntimeException(
917916
"Twitter provider cannot be configured " +
918917
"without dependency. Did you forget to add " +

auth/src/main/java/com/firebase/ui/auth/data/remote/FacebookSignInHandler.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,6 @@
3737

3838
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
3939
public class FacebookSignInHandler extends ProviderSignInBase<AuthUI.IdpConfig> {
40-
public static final boolean IS_AVAILABLE;
41-
42-
static {
43-
boolean available;
44-
try {
45-
Class.forName("com.facebook.login.LoginManager");
46-
available = true;
47-
} catch (ClassNotFoundException e) {
48-
available = false;
49-
}
50-
IS_AVAILABLE = available;
51-
}
52-
5340
private static final String EMAIL = "email";
5441
private static final String PUBLIC_PROFILE = "public_profile";
5542

auth/src/main/java/com/firebase/ui/auth/data/remote/TwitterSignInHandler.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.firebase.ui.auth.data.model.Resource;
1717
import com.firebase.ui.auth.data.model.User;
1818
import com.firebase.ui.auth.ui.HelperActivityBase;
19+
import com.firebase.ui.auth.util.data.ProviderAvailability;
1920
import com.firebase.ui.auth.viewmodel.idp.ProviderSignInBase;
2021
import com.google.firebase.auth.TwitterAuthProvider;
2122
import com.twitter.sdk.android.core.Callback;
@@ -30,19 +31,8 @@
3031

3132
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
3233
public class TwitterSignInHandler extends ProviderSignInBase<Void> {
33-
public static final boolean IS_AVAILABLE;
34-
3534
static {
36-
boolean available;
37-
try {
38-
Class.forName("com.twitter.sdk.android.core.identity.TwitterAuthClient");
39-
available = true;
40-
} catch (ClassNotFoundException e) {
41-
available = false;
42-
}
43-
IS_AVAILABLE = available;
44-
45-
if (IS_AVAILABLE) {
35+
if (ProviderAvailability.IS_TWITTER_AVAILABLE) {
4636
Context context = AuthUI.getApplicationContext();
4737
Twitter.initialize(new TwitterConfig.Builder(context)
4838
.twitterAuthConfig(new TwitterAuthConfig(
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.firebase.ui.auth.util.data;
2+
3+
import android.support.annotation.RestrictTo;
4+
5+
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
6+
public final class ProviderAvailability {
7+
public static final boolean IS_FACEBOOK_AVAILABLE =
8+
exists("com.facebook.login.LoginManager");
9+
public static final boolean IS_TWITTER_AVAILABLE =
10+
exists("com.twitter.sdk.android.core.identity.TwitterAuthClient");
11+
12+
private ProviderAvailability() {
13+
throw new AssertionError("No instance for you!");
14+
}
15+
16+
private static boolean exists(String name) {
17+
boolean exists;
18+
try {
19+
Class.forName(name);
20+
exists = true;
21+
} catch (ClassNotFoundException e) {
22+
exists = false;
23+
}
24+
return exists;
25+
}
26+
}

0 commit comments

Comments
 (0)