55
55
import java .util .Collections ;
56
56
import java .util .HashSet ;
57
57
import java .util .IdentityHashMap ;
58
- import java .util .LinkedHashSet ;
59
58
import java .util .List ;
60
59
import java .util .Set ;
61
60
@@ -356,11 +355,33 @@ public void writeToParcel(Parcel parcel, int i) {
356
355
parcel .writeStringList (mScopes );
357
356
}
358
357
358
+ @ Override
359
+ public boolean equals (Object o ) {
360
+ if (this == o ) return true ;
361
+ if (o == null || getClass () != o .getClass ()) return false ;
362
+
363
+ IdpConfig config = (IdpConfig ) o ;
364
+
365
+ return mProviderId .equals (config .mProviderId );
366
+ }
367
+
368
+ @ Override
369
+ public int hashCode () {
370
+ return mProviderId .hashCode ();
371
+ }
372
+
373
+ @ Override
374
+ public String toString () {
375
+ return "IdpConfig{" +
376
+ "mProviderId='" + mProviderId + '\'' +
377
+ ", mScopes=" + mScopes +
378
+ '}' ;
379
+ }
380
+
359
381
public static class Builder {
360
382
private String mProviderId ;
361
383
private List <String > mScopes = new ArrayList <>();
362
384
363
-
364
385
/**
365
386
* Builds the configuration parameters for an identity provider.
366
387
*
@@ -406,13 +427,12 @@ public IdpConfig build() {
406
427
public final class SignInIntentBuilder {
407
428
private int mLogo = NO_LOGO ;
408
429
private int mTheme = getDefaultTheme ();
409
- private LinkedHashSet <IdpConfig > mProviders = new LinkedHashSet <>();
430
+ private List <IdpConfig > mProviders = new ArrayList <>();
410
431
private String mTosUrl ;
411
432
private boolean mIsSmartLockEnabled = true ;
412
433
private boolean mAllowNewEmailAccounts = true ;
413
434
414
435
private SignInIntentBuilder () {
415
- mProviders .add (new IdpConfig .Builder (EMAIL_PROVIDER ).build ());
416
436
}
417
437
418
438
/**
@@ -458,15 +478,14 @@ public SignInIntentBuilder setTosUrl(@Nullable String tosUrl) {
458
478
*/
459
479
public SignInIntentBuilder setProviders (@ NonNull List <IdpConfig > idpConfigs ) {
460
480
mProviders .clear ();
461
- Set <String > configuredProviders = new HashSet <>();
462
- for (IdpConfig idpConfig : idpConfigs ) {
463
- if (configuredProviders .contains (idpConfig .getProviderId ())) {
481
+ for (IdpConfig config : idpConfigs ) {
482
+ if (mProviders .contains (config )) {
464
483
throw new IllegalArgumentException ("Each provider can only be set once. "
465
- + idpConfig .getProviderId ()
484
+ + config .getProviderId ()
466
485
+ " was set twice." );
486
+ } else {
487
+ mProviders .add (config );
467
488
}
468
- configuredProviders .add (idpConfig .getProviderId ());
469
- mProviders .add (idpConfig );
470
489
}
471
490
return this ;
472
491
}
@@ -495,6 +514,15 @@ public SignInIntentBuilder setProviders(@NonNull String... providers) {
495
514
return this ;
496
515
}
497
516
517
+ private boolean isIdpAlreadyConfigured (@ NonNull String providerId ) {
518
+ for (IdpConfig config : mProviders ) {
519
+ if (config .getProviderId ().equals (providerId )) {
520
+ return true ;
521
+ }
522
+ }
523
+ return false ;
524
+ }
525
+
498
526
/**
499
527
* Enables or disables the use of Smart Lock for Passwords in the sign in flow.
500
528
* <p>
@@ -515,23 +543,18 @@ public SignInIntentBuilder setAllowNewEmailAccounts(boolean enabled) {
515
543
return this ;
516
544
}
517
545
518
- private boolean isIdpAlreadyConfigured (@ NonNull String providerId ) {
519
- for (IdpConfig config : mProviders ) {
520
- if (config .getProviderId ().equals (providerId )) {
521
- return true ;
522
- }
523
- }
524
- return false ;
525
- }
526
-
527
546
public Intent build () {
528
547
return KickoffActivity .createIntent (mApp .getApplicationContext (), getFlowParams ());
529
548
}
530
549
531
550
@ VisibleForTesting ()
532
551
public FlowParameters getFlowParams () {
552
+ if (mProviders .isEmpty ()) {
553
+ mProviders .add (new IdpConfig .Builder (EMAIL_PROVIDER ).build ());
554
+ }
555
+
533
556
return new FlowParameters (mApp .getName (),
534
- new ArrayList <>( mProviders ) ,
557
+ mProviders ,
535
558
mTheme ,
536
559
mLogo ,
537
560
mTosUrl ,
0 commit comments