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

Unified Diff: sync/internal_api/sync_manager_impl.cc

Issue 12022041: Separate local and remote sync invalidations (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 11 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 | « sync/internal_api/sync_manager_impl.h ('k') | sync/internal_api/test/fake_sync_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/internal_api/sync_manager_impl.cc
diff --git a/sync/internal_api/sync_manager_impl.cc b/sync/internal_api/sync_manager_impl.cc
index 21939455fdcfec6210bbbf8eddb8c0680127097c..618039c9ec1b5f256411990cedb73fe130b179b2 100644
--- a/sync/internal_api/sync_manager_impl.cc
+++ b/sync/internal_api/sync_manager_impl.cc
@@ -1240,13 +1240,9 @@ void SyncManagerImpl::OnIncomingInvalidation(
DCHECK(thread_checker_.CalledOnValidThread());
const ModelTypeInvalidationMap& type_invalidation_map =
ObjectIdInvalidationMapToModelTypeInvalidationMap(invalidation_map);
- if (source == LOCAL_INVALIDATION) {
- allstatus_.IncrementNudgeCounter(NUDGE_SOURCE_LOCAL_REFRESH);
- scheduler_->ScheduleNudgeWithStatesAsync(
- TimeDelta::FromMilliseconds(kSyncRefreshDelayMsec),
- NUDGE_SOURCE_LOCAL_REFRESH,
- type_invalidation_map, FROM_HERE);
- } else if (!type_invalidation_map.empty()) {
+ if (type_invalidation_map.empty()) {
+ LOG(WARNING) << "Sync received invalidation without any type information.";
+ } else {
allstatus_.IncrementNudgeCounter(NUDGE_SOURCE_NOTIFICATION);
scheduler_->ScheduleNudgeWithStatesAsync(
TimeDelta::FromMilliseconds(kSyncSchedulerDelayMsec),
@@ -1255,8 +1251,39 @@ void SyncManagerImpl::OnIncomingInvalidation(
allstatus_.IncrementNotificationsReceived();
UpdateNotificationInfo(type_invalidation_map);
debug_info_event_listener_.OnIncomingNotification(type_invalidation_map);
+ }
+
+ if (js_event_handler_.IsInitialized()) {
+ DictionaryValue details;
+ ListValue* changed_types = new ListValue();
+ details.Set("changedTypes", changed_types);
+ for (ModelTypeInvalidationMap::const_iterator it =
+ type_invalidation_map.begin(); it != type_invalidation_map.end();
+ ++it) {
+ const std::string& model_type_str =
+ ModelTypeToString(it->first);
+ changed_types->Append(Value::CreateStringValue(model_type_str));
+ }
+ details.SetString("source", "REMOTE_INVALIDATION");
+ js_event_handler_.Call(FROM_HERE,
+ &JsEventHandler::HandleJsEvent,
+ "onIncomingNotification",
+ JsEventDetails(&details));
+ }
+}
+
+void SyncManagerImpl::RefreshTypes(ModelTypeSet types) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ const ModelTypeInvalidationMap& type_invalidation_map =
+ ModelTypeSetToInvalidationMap(types, "");
+ if (type_invalidation_map.empty()) {
+ LOG(WARNING) << "Sync received refresh request with no types specified.";
} else {
- LOG(WARNING) << "Sync received invalidation without any type information.";
+ allstatus_.IncrementNudgeCounter(NUDGE_SOURCE_LOCAL_REFRESH);
+ scheduler_->ScheduleNudgeWithStatesAsync(
+ TimeDelta::FromMilliseconds(kSyncRefreshDelayMsec),
+ NUDGE_SOURCE_LOCAL_REFRESH,
+ type_invalidation_map, FROM_HERE);
}
if (js_event_handler_.IsInitialized()) {
@@ -1270,8 +1297,7 @@ void SyncManagerImpl::OnIncomingInvalidation(
ModelTypeToString(it->first);
changed_types->Append(Value::CreateStringValue(model_type_str));
}
- details.SetString("source", (source == LOCAL_INVALIDATION) ?
- "LOCAL_INVALIDATION" : "REMOTE_INVALIDATION");
+ details.SetString("source", "LOCAL_INVALIDATION");
js_event_handler_.Call(FROM_HERE,
&JsEventHandler::HandleJsEvent,
"onIncomingNotification",
« no previous file with comments | « sync/internal_api/sync_manager_impl.h ('k') | sync/internal_api/test/fake_sync_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698