Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java

Issue 1885463002: Create a Promise class to simplify dealing with async results. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove IntDef Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698