summaryrefslogtreecommitdiffstats
path: root/sync
diff options
context:
space:
mode:
authorshashishekhar@chromium.org <shashishekhar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-06 02:19:49 +0000
committershashishekhar@chromium.org <shashishekhar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-06 02:19:49 +0000
commit52db84a3005edce844c0d142f45eaf4a72f27551 (patch)
tree210cc6463044a2cd9fd3f0035af41ad93ec712fd /sync
parentadc18bf1aad96957fa4fefb6a1b1ef2ae8aa213a (diff)
downloadchromium_src-52db84a3005edce844c0d142f45eaf4a72f27551.zip
chromium_src-52db84a3005edce844c0d142f45eaf4a72f27551.tar.gz
chromium_src-52db84a3005edce844c0d142f45eaf4a72f27551.tar.bz2
[Android] Fix sync masterSyncAutomatically setting.
The sync settings notification code only fires a notification when the account level sync setting changes. When only MasterSyncAutomatically changes the code fails to fire a notification, correct the behavior. BUG=340911 R=nyquist@chromium.org Review URL: https://codereview.chromium.org/155573002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249225 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync')
-rw-r--r--sync/android/java/src/org/chromium/sync/notifier/SyncStatusHelper.java25
1 files changed, 18 insertions, 7 deletions
diff --git a/sync/android/java/src/org/chromium/sync/notifier/SyncStatusHelper.java b/sync/android/java/src/org/chromium/sync/notifier/SyncStatusHelper.java
index 77b6b30..0db47f8 100644
--- a/sync/android/java/src/org/chromium/sync/notifier/SyncStatusHelper.java
+++ b/sync/android/java/src/org/chromium/sync/notifier/SyncStatusHelper.java
@@ -284,7 +284,7 @@ public class SyncStatusHelper {
mCachedSettings.getSyncAutomatically(account);
}
- notifyObservers();
+ notifyObserversIfAccountSettingsChanged();
return returnValue;
}
@@ -317,7 +317,7 @@ public class SyncStatusHelper {
returnValue = mCachedSettings.getSyncAutomatically(account);
}
- notifyObservers();
+ notifyObserversIfAccountSettingsChanged();
return returnValue;
}
@@ -344,7 +344,7 @@ public class SyncStatusHelper {
mCachedSettings.setSyncAutomatically(account, true);
}
- notifyObservers();
+ notifyObserversIfAccountSettingsChanged();
}
/**
@@ -357,7 +357,7 @@ public class SyncStatusHelper {
mCachedSettings.setSyncAutomatically(account, false);
}
- notifyObservers();
+ notifyObserversIfAccountSettingsChanged();
}
/**
@@ -398,12 +398,18 @@ public class SyncStatusHelper {
public void onStatusChanged(int which) {
if (ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS == which) {
// Sync settings have changed; update our in-memory caches
- updateMasterSyncAutomaticallySetting();
synchronized (mCachedSettings) {
mCachedSettings.updateSyncSettingsForAccount(
ChromeSigninController.get(mApplicationContext).getSignedInUser());
}
- notifyObservers();
+
+ boolean oldMasterSyncEnabled = isMasterSyncAutomaticallyEnabled();
+ updateMasterSyncAutomaticallySetting();
+ boolean didMasterSyncChanged =
+ oldMasterSyncEnabled != isMasterSyncAutomaticallyEnabled();
+ // Notify observers if MasterSync or account level settings change.
+ if (didMasterSyncChanged || getAndClearDidUpdateStatus())
+ notifyObservers();
}
}
}
@@ -436,8 +442,13 @@ public class SyncStatusHelper {
return didGetStatusUpdate;
}
+ private void notifyObserversIfAccountSettingsChanged() {
+ if (getAndClearDidUpdateStatus()) {
+ notifyObservers();
+ }
+ }
+
private void notifyObservers() {
- if (!getAndClearDidUpdateStatus()) return;
for (SyncSettingsChangedObserver observer : mObservers) {
observer.syncSettingsChanged();
}