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

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: Fixed build 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
« no previous file with comments | « no previous file | components/sync/android/javatests/src/org/chromium/components/sync/AndroidSyncSettingsTest.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..7876df104acddd124c7182e8191fa1d5440a78a0 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,21 @@ 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.
+ * @param callback Callback that will be called after updating account is finished. Boolean
+ * passed to the callback indicates whether syncability was changed.
+ */
+ @VisibleForTesting
+ public static void updateAccount(
+ Context context, Account account, @Nullable Callback<Boolean> callback) {
ensureInitialized(context);
synchronized (sInstance.mLock) {
sInstance.mAccount = account;
- sInstance.updateSyncability();
+ sInstance.updateSyncability(callback);
}
if (sInstance.updateCachedSettings()) {
sInstance.notifyObservers();
@@ -197,7 +209,7 @@ public class AndroidSyncSettings {
private void setChromeSyncEnabled(boolean value) {
synchronized (mLock) {
- updateSyncability();
+ updateSyncability(null);
if (value == mChromeSyncEnabled || mAccount == null) return;
mChromeSyncEnabled = value;
@@ -214,9 +226,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<Boolean> callback) {
boolean shouldBeSyncable = mAccount != null;
- if (mIsSyncable == shouldBeSyncable) return;
+ if (mIsSyncable == shouldBeSyncable) {
+ if (callback != null) callback.onResult(false);
+ return;
+ }
mIsSyncable = shouldBeSyncable;
@@ -244,6 +259,8 @@ public class AndroidSyncSettings {
}
}
StrictMode.setThreadPolicy(oldPolicy);
+
+ if (callback != null) callback.onResult(true);
}
});
}
« no previous file with comments | « no previous file | components/sync/android/javatests/src/org/chromium/components/sync/AndroidSyncSettingsTest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698