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(); |