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

Unified Diff: components/sync/android/java/src/org/chromium/components/sync/AndroidSyncSettings.java

Issue 2847663003: Add callback to AndroidSyncSettings.updateAccount and fix related test (Closed)
Patch Set: Created 3 years, 8 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: components/sync/android/java/src/org/chromium/components/sync/AndroidSyncSettings.java
diff --git a/components/sync/android/java/src/org/chromium/components/sync/AndroidSyncSettings.java b/components/sync/android/java/src/org/chromium/components/sync/AndroidSyncSettings.java
index a54b293c16be11d25fd00b5ad8eea1042f5eb284..48a8645960a8796ec4b5a3d0e858c505a2ba9860 100644
--- a/components/sync/android/java/src/org/chromium/components/sync/AndroidSyncSettings.java
+++ b/components/sync/android/java/src/org/chromium/components/sync/AndroidSyncSettings.java
@@ -17,6 +17,7 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.components.signin.AccountManagerHelper;
import org.chromium.components.signin.ChromeSigninController;
+import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
/**
@@ -94,7 +95,7 @@ public class AndroidSyncSettings {
mContractAuthority = getContractAuthority();
mAccount = ChromeSigninController.get().getSignedInUser();
- updateSyncability();
+ updateSyncability(null);
updateCachedSettings();
mSyncContentResolverDelegate.addStatusChangeListener(
@@ -157,10 +158,19 @@ public class AndroidSyncSettings {
* Must be called when a new account is signed in.
*/
public static void updateAccount(Context context, Account account) {
+ updateAccount(context, account, null);
+ }
+
+ /**
+ * Must be called when a new account is signed in.
+ */
+ @VisibleForTesting
+ public static void updateAccount(
+ Context context, Account account, @Nullable Callback<Void> callback) {
ensureInitialized(context);
synchronized (sInstance.mLock) {
sInstance.mAccount = account;
- sInstance.updateSyncability();
+ sInstance.updateSyncability(callback);
}
if (sInstance.updateCachedSettings()) {
sInstance.notifyObservers();
@@ -197,7 +207,7 @@ public class AndroidSyncSettings {
private void setChromeSyncEnabled(boolean value) {
synchronized (mLock) {
- updateSyncability();
+ updateSyncability(null);
if (value == mChromeSyncEnabled || mAccount == null) return;
mChromeSyncEnabled = value;
@@ -214,9 +224,12 @@ public class AndroidSyncSettings {
* This is what causes the "Chrome" option to appear in Settings -> Accounts -> Sync .
* This function must be called within a synchronized block.
*/
- private void updateSyncability() {
+ private void updateSyncability(@Nullable final Callback<Void> callback) {
boolean shouldBeSyncable = mAccount != null;
- if (mIsSyncable == shouldBeSyncable) return;
+ if (mIsSyncable == shouldBeSyncable) {
+ if (callback != null) callback.onResult(null);
+ return;
+ }
mIsSyncable = shouldBeSyncable;
@@ -244,6 +257,8 @@ public class AndroidSyncSettings {
}
}
StrictMode.setThreadPolicy(oldPolicy);
+
+ if (callback != null) callback.onResult(null);
}
});
}

Powered by Google App Engine
This is Rietveld 408576698