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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/sync/SyncAccountSwitcher.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/sync/SyncAccountSwitcher.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncAccountSwitcher.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncAccountSwitcher.java
index 10c5ebf756abeb35131d2d3f01f5fc4620017ec5..89f663a425f09cdcab16893c74d36bec73f68781 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncAccountSwitcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncAccountSwitcher.java
@@ -9,6 +9,8 @@ import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.text.TextUtils;
+import org.chromium.base.Callback;
+import org.chromium.base.Promise;
import org.chromium.chrome.browser.preferences.SyncedAccountPreference;
import org.chromium.chrome.browser.signin.SigninManager;
import org.chromium.chrome.browser.signin.SigninManager.SignInCallback;
@@ -66,27 +68,23 @@ public class SyncAccountSwitcher
public void onConfirm(final boolean wipeData) {
assert mNewAccountName != null;
- final SigninManager.SignInCallback callback = this;
-
- // Sign out first to get sync working correctly.
- SigninManager.get(mActivity).signOut(new Runnable() {
- @Override
- public void run() {
- SigninManager.get(mActivity).clearLastSignedInUser();
-
- if (wipeData) {
- SyncUserDataWiper.wipeSyncUserData(new Runnable() {
- @Override
- public void run() {
- SigninManager.get(mActivity)
- .signIn(mNewAccountName, mActivity, callback);
- }
- });
- } else {
- SigninManager.get(mActivity).signIn(mNewAccountName, mActivity, callback);
- }
- }
- });
+ // Sign out first to ensure we don't wipe the data when sync is still on.
+ SigninManager.get(mActivity).signOutPromise()
+ .then(new Promise.AsyncFunction<Void, Void>(){
+ @Override
+ public Promise<Void> apply(Void argument) {
+ // Once signed out, clear the last signed in user and wipe data if needed.
+ SigninManager.get(mActivity).clearLastSignedInUser();
+ return SigninManager.wipeSyncUserDataIfRequired(wipeData);
+ }
+ }).then(new Callback<Void>(){
+ @Override
+ public void onResult(Void result) {
+ // Once the data has been wiped (if needed), sign in to the next account.
+ SigninManager.get(mActivity)
+ .signIn(mNewAccountName, mActivity, SyncAccountSwitcher.this);
+ }
+ });
}
@Override

Powered by Google App Engine
This is Rietveld 408576698