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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
index 37c0bb4a3805ff46e45fa4aa3842d3f1adb32376..cfdb33b07a8bccd9a1ca274eedcd19fbfd4e7ae6 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
@@ -16,6 +16,7 @@ import org.chromium.base.Callback;
import org.chromium.base.FieldTrialList;
import org.chromium.base.Log;
import org.chromium.base.ObserverList;
+import org.chromium.base.Promise;
import org.chromium.base.ThreadUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative;
@@ -23,6 +24,7 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
import org.chromium.chrome.browser.externalauth.UserRecoverableErrorHandler;
+import org.chromium.chrome.browser.sync.SyncUserDataWiper;
import org.chromium.sync.signin.AccountManagerHelper;
import org.chromium.sync.signin.ChromeSigninController;
@@ -497,6 +499,24 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
}
/**
+ * Invokes signOut and returns a {@link Promise} that will be fulfilled on completion.
+ * This is equivalent to calling {@link #signOut(Runnable callback)} with a callback that
+ * fulfills the returned {@link Promise}.
+ */
+ public Promise<Void> signOutPromise() {
+ final Promise<Void> promise = new Promise<Void>();
+
+ signOut(new Runnable(){
+ @Override
+ public void run() {
+ promise.fulfill(null);
+ }
+ });
+
+ return promise;
+ }
+
+ /**
* Invokes signOut with no callback or wipeDataHooks.
*/
public void signOut() {
@@ -586,6 +606,18 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
nativeWipeProfileData(mNativeSigninManagerAndroid, hooks);
}
+ /**
+ * Convenience method to return a Promise to be fulfilled when the user's sync data has been
+ * wiped if the parameter is true, or an already fulfilled Promise if the parameter is false.
+ */
+ public static Promise<Void> wipeSyncUserDataIfRequired(boolean required) {
+ if (required) {
+ return SyncUserDataWiper.wipeSyncUserData();
+ } else {
+ return Promise.fulfilled(null);
+ }
+ }
+
@CalledByNative
private void onProfileDataWiped(WipeDataHooks hooks) {
if (hooks != null) hooks.postWipeData();

Powered by Google App Engine
This is Rietveld 408576698