OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.signin; | 5 package org.chromium.chrome.browser.signin; |
6 | 6 |
7 import android.accounts.Account; | 7 import android.accounts.Account; |
8 import android.app.Activity; | 8 import android.app.Activity; |
9 import android.app.DialogFragment; | 9 import android.app.DialogFragment; |
10 import android.content.Context; | 10 import android.content.Context; |
11 import android.os.Handler; | 11 import android.os.Handler; |
12 | 12 |
13 import org.chromium.base.ActivityState; | 13 import org.chromium.base.ActivityState; |
14 import org.chromium.base.ApplicationStatus; | 14 import org.chromium.base.ApplicationStatus; |
15 import org.chromium.base.Callback; | 15 import org.chromium.base.Callback; |
16 import org.chromium.base.FieldTrialList; | 16 import org.chromium.base.FieldTrialList; |
17 import org.chromium.base.Log; | 17 import org.chromium.base.Log; |
18 import org.chromium.base.ObserverList; | 18 import org.chromium.base.ObserverList; |
| 19 import org.chromium.base.Promise; |
19 import org.chromium.base.ThreadUtils; | 20 import org.chromium.base.ThreadUtils; |
20 import org.chromium.base.VisibleForTesting; | 21 import org.chromium.base.VisibleForTesting; |
21 import org.chromium.base.annotations.CalledByNative; | 22 import org.chromium.base.annotations.CalledByNative; |
22 import org.chromium.base.metrics.RecordHistogram; | 23 import org.chromium.base.metrics.RecordHistogram; |
23 import org.chromium.base.metrics.RecordUserAction; | 24 import org.chromium.base.metrics.RecordUserAction; |
24 import org.chromium.chrome.browser.externalauth.ExternalAuthUtils; | 25 import org.chromium.chrome.browser.externalauth.ExternalAuthUtils; |
25 import org.chromium.chrome.browser.externalauth.UserRecoverableErrorHandler; | 26 import org.chromium.chrome.browser.externalauth.UserRecoverableErrorHandler; |
| 27 import org.chromium.chrome.browser.sync.SyncUserDataWiper; |
26 import org.chromium.sync.signin.AccountManagerHelper; | 28 import org.chromium.sync.signin.AccountManagerHelper; |
27 import org.chromium.sync.signin.ChromeSigninController; | 29 import org.chromium.sync.signin.ChromeSigninController; |
28 | 30 |
29 import javax.annotation.Nullable; | 31 import javax.annotation.Nullable; |
30 | 32 |
31 /** | 33 /** |
32 * Android wrapper of the SigninManager which provides access from the Java laye
r. | 34 * Android wrapper of the SigninManager which provides access from the Java laye
r. |
33 * <p/> | 35 * <p/> |
34 * This class handles common paths during the sign-in and sign-out flows. | 36 * This class handles common paths during the sign-in and sign-out flows. |
35 * <p/> | 37 * <p/> |
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 Log.d(TAG, "Signin completed."); | 492 Log.d(TAG, "Signin completed."); |
491 mSignInState = null; | 493 mSignInState = null; |
492 notifySignInAllowedChanged(); | 494 notifySignInAllowedChanged(); |
493 | 495 |
494 for (SignInStateObserver observer : mSignInStateObservers) { | 496 for (SignInStateObserver observer : mSignInStateObservers) { |
495 observer.onSignedIn(); | 497 observer.onSignedIn(); |
496 } | 498 } |
497 } | 499 } |
498 | 500 |
499 /** | 501 /** |
| 502 * Invokes signOut and returns a {@link Promise} that will be fulfilled on c
ompletion. |
| 503 * This is equivalent to calling {@link #signOut(Runnable callback)} with a
callback that |
| 504 * fulfills the returned {@link Promise}. |
| 505 */ |
| 506 public Promise<Void> signOutPromise() { |
| 507 final Promise<Void> promise = new Promise<Void>(); |
| 508 |
| 509 signOut(new Runnable(){ |
| 510 @Override |
| 511 public void run() { |
| 512 promise.fulfill(null); |
| 513 } |
| 514 }); |
| 515 |
| 516 return promise; |
| 517 } |
| 518 |
| 519 /** |
500 * Invokes signOut with no callback or wipeDataHooks. | 520 * Invokes signOut with no callback or wipeDataHooks. |
501 */ | 521 */ |
502 public void signOut() { | 522 public void signOut() { |
503 signOut(null, null); | 523 signOut(null, null); |
504 } | 524 } |
505 | 525 |
506 /** | 526 /** |
507 * Invokes signOut() with no wipeDataHooks. | 527 * Invokes signOut() with no wipeDataHooks. |
508 */ | 528 */ |
509 public void signOut(Runnable callback) { | 529 public void signOut(Runnable callback) { |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
579 Log.d(TAG, "Signin flow aborted."); | 599 Log.d(TAG, "Signin flow aborted."); |
580 notifySignInAllowedChanged(); | 600 notifySignInAllowedChanged(); |
581 } | 601 } |
582 | 602 |
583 private void wipeProfileData(WipeDataHooks hooks) { | 603 private void wipeProfileData(WipeDataHooks hooks) { |
584 if (hooks != null) hooks.preWipeData(); | 604 if (hooks != null) hooks.preWipeData(); |
585 // This will call back to onProfileDataWiped(). | 605 // This will call back to onProfileDataWiped(). |
586 nativeWipeProfileData(mNativeSigninManagerAndroid, hooks); | 606 nativeWipeProfileData(mNativeSigninManagerAndroid, hooks); |
587 } | 607 } |
588 | 608 |
| 609 /** |
| 610 * Convenience method to return a Promise to be fulfilled when the user's sy
nc data has been |
| 611 * wiped if the parameter is true, or an already fulfilled Promise if the pa
rameter is false. |
| 612 */ |
| 613 public static Promise<Void> wipeSyncUserDataIfRequired(boolean required) { |
| 614 if (required) { |
| 615 return SyncUserDataWiper.wipeSyncUserData(); |
| 616 } else { |
| 617 return Promise.fulfilled(null); |
| 618 } |
| 619 } |
| 620 |
589 @CalledByNative | 621 @CalledByNative |
590 private void onProfileDataWiped(WipeDataHooks hooks) { | 622 private void onProfileDataWiped(WipeDataHooks hooks) { |
591 if (hooks != null) hooks.postWipeData(); | 623 if (hooks != null) hooks.postWipeData(); |
592 onSignOutDone(); | 624 onSignOutDone(); |
593 } | 625 } |
594 | 626 |
595 @CalledByNative | 627 @CalledByNative |
596 private void onNativeSignOut() { | 628 private void onNativeSignOut() { |
597 if (!mSignOutInProgress) { | 629 if (!mSignOutInProgress) { |
598 signOut(); | 630 signOut(); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
648 private native void nativeFetchPolicyBeforeSignIn(long nativeSigninManagerAn
droid); | 680 private native void nativeFetchPolicyBeforeSignIn(long nativeSigninManagerAn
droid); |
649 private native void nativeAbortSignIn(long nativeSigninManagerAndroid); | 681 private native void nativeAbortSignIn(long nativeSigninManagerAndroid); |
650 private native void nativeOnSignInCompleted(long nativeSigninManagerAndroid,
String username); | 682 private native void nativeOnSignInCompleted(long nativeSigninManagerAndroid,
String username); |
651 private native void nativeSignOut(long nativeSigninManagerAndroid); | 683 private native void nativeSignOut(long nativeSigninManagerAndroid); |
652 private native String nativeGetManagementDomain(long nativeSigninManagerAndr
oid); | 684 private native String nativeGetManagementDomain(long nativeSigninManagerAndr
oid); |
653 private native void nativeWipeProfileData(long nativeSigninManagerAndroid, W
ipeDataHooks hooks); | 685 private native void nativeWipeProfileData(long nativeSigninManagerAndroid, W
ipeDataHooks hooks); |
654 private native void nativeClearLastSignedInUser(long nativeSigninManagerAndr
oid); | 686 private native void nativeClearLastSignedInUser(long nativeSigninManagerAndr
oid); |
655 private native void nativeLogInSignedInUser(long nativeSigninManagerAndroid)
; | 687 private native void nativeLogInSignedInUser(long nativeSigninManagerAndroid)
; |
656 private native boolean nativeIsSignedInOnNative(long nativeSigninManagerAndr
oid); | 688 private native boolean nativeIsSignedInOnNative(long nativeSigninManagerAndr
oid); |
657 } | 689 } |
OLD | NEW |