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

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: Respond to review comments 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
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 874444ba1b552a8ddff4779b8f9cb8734e4c1799..d104cb49417ff2e10bf8229c8c3192c21999beff 100644
--- a/sync/internal_api/sync_manager_impl.cc
+++ b/sync/internal_api/sync_manager_impl.cc
@@ -1247,13 +1247,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),
@@ -1262,8 +1258,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()) {
@@ -1277,8 +1304,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",

Powered by Google App Engine
This is Rietveld 408576698