diff options
author | shashishekhar@chromium.org <shashishekhar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-06 02:19:49 +0000 |
---|---|---|
committer | shashishekhar@chromium.org <shashishekhar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-06 02:19:49 +0000 |
commit | 52db84a3005edce844c0d142f45eaf4a72f27551 (patch) | |
tree | 210cc6463044a2cd9fd3f0035af41ad93ec712fd /sync | |
parent | adc18bf1aad96957fa4fefb6a1b1ef2ae8aa213a (diff) | |
download | chromium_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.java | 25 |
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(); } |