summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshashishekhar@chromium.org <shashishekhar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-08 00:58:10 +0000
committershashishekhar@chromium.org <shashishekhar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-08 00:58:10 +0000
commit7bc50f962fae7259575f95238178c64c94c4146b (patch)
tree40a5e3c610633cbc0bb619fccb4f172c8b4fc7f8
parent4e52c2a6c098dfa0c18252228c4608283176092d (diff)
downloadchromium_src-7bc50f962fae7259575f95238178c64c94c4146b.zip
chromium_src-7bc50f962fae7259575f95238178c64c94c4146b.tar.gz
chromium_src-7bc50f962fae7259575f95238178c64c94c4146b.tar.bz2
Merge 249225 "[Android] Fix sync masterSyncAutomatically setting."
> [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 TBR=shashishekhar@chromium.org Review URL: https://codereview.chromium.org/148773008 git-svn-id: svn://svn.chromium.org/chrome/branches/1750/src@249874 0039d316-1c4b-4281-b951-d872f2087c98
-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();
}