Index: components/invalidation/invalidation_service_android.cc |
diff --git a/components/invalidation/invalidation_service_android.cc b/components/invalidation/invalidation_service_android.cc |
index adab880172849b723ef73d8c7a644fe8ff3b3722..8ff8b6bad0c45e8aa286ce79f13436bb74517592 100644 |
--- a/components/invalidation/invalidation_service_android.cc |
+++ b/components/invalidation/invalidation_service_android.cc |
@@ -119,55 +119,49 @@ void InvalidationServiceAndroid::TriggerStateChangeForTest( |
invalidator_registrar_.UpdateInvalidatorState(invalidator_state_); |
} |
-void InvalidationServiceAndroid::RequestSync(JNIEnv* env, |
- jobject obj, |
- jint object_source, |
- jstring java_object_id, |
- jlong version, |
- jstring java_state) { |
- invalidation::ObjectId object_id(object_source, |
- ConvertJavaStringToUTF8(env, java_object_id)); |
- |
- syncer::ObjectIdInvalidationMap object_ids_with_states; |
- |
- if (version == ipc::invalidation::Constants::UNKNOWN) { |
- object_ids_with_states.Insert( |
- syncer::Invalidation::InitUnknownVersion(object_id)); |
+void InvalidationServiceAndroid::Invalidate(JNIEnv* env, |
+ jobject obj, |
+ jint object_source, |
+ jstring java_object_id, |
+ jlong version, |
+ jstring java_payload) { |
+ syncer::ObjectIdInvalidationMap object_invalidation_map; |
+ if (!java_object_id) { |
+ syncer::ObjectIdSet sync_ids; |
+ if (object_source == 0) { |
+ sync_ids = invalidator_registrar_.GetAllRegisteredIds(); |
+ } else { |
+ for (const auto& id : invalidator_registrar_.GetAllRegisteredIds()) { |
+ if (id.source() == object_source) |
+ sync_ids.insert(id); |
+ } |
+ } |
+ object_invalidation_map = |
+ syncer::ObjectIdInvalidationMap::InvalidateAll(sync_ids); |
} else { |
- ObjectIdVersionMap::iterator it = |
- max_invalidation_versions_.find(object_id); |
- if ((it != max_invalidation_versions_.end()) && |
- (version <= it->second)) { |
- DVLOG(1) << "Dropping redundant invalidation with version " << version; |
- return; |
+ invalidation::ObjectId object_id( |
+ object_source, ConvertJavaStringToUTF8(env, java_object_id)); |
+ syncer::ObjectIdInvalidationMap object_invalidation_map; |
+ |
+ if (version == ipc::invalidation::Constants::UNKNOWN) { |
+ object_invalidation_map.Insert( |
+ syncer::Invalidation::InitUnknownVersion(object_id)); |
+ } else { |
+ ObjectIdVersionMap::iterator it = |
+ max_invalidation_versions_.find(object_id); |
+ if ((it != max_invalidation_versions_.end()) && (version <= it->second)) { |
+ DVLOG(1) << "Dropping redundant invalidation with version " << version; |
+ return; |
+ } |
+ max_invalidation_versions_[object_id] = version; |
+ object_invalidation_map.Insert(syncer::Invalidation::Init( |
+ object_id, version, ConvertJavaStringToUTF8(env, java_payload))); |
} |
- max_invalidation_versions_[object_id] = version; |
- object_ids_with_states.Insert( |
- syncer::Invalidation::Init(object_id, version, |
- ConvertJavaStringToUTF8(env, java_state))); |
} |
- DispatchInvalidations(object_ids_with_states); |
-} |
- |
-void InvalidationServiceAndroid::RequestSyncForAllTypes(JNIEnv* env, |
- jobject obj) { |
- syncer::ObjectIdInvalidationMap object_ids_with_states; |
- DispatchInvalidations(object_ids_with_states); |
-} |
- |
-void InvalidationServiceAndroid::DispatchInvalidations( |
- syncer::ObjectIdInvalidationMap& object_invalidation_map) { |
- // An empty map implies that we should invalidate all. |
- const syncer::ObjectIdInvalidationMap& effective_invalidation_map = |
- object_invalidation_map.Empty() ? |
- syncer::ObjectIdInvalidationMap::InvalidateAll( |
- invalidator_registrar_.GetAllRegisteredIds()) : |
- object_invalidation_map; |
- |
invalidator_registrar_.DispatchInvalidationsToHandlers( |
- effective_invalidation_map); |
- logger_.OnInvalidation(effective_invalidation_map); |
+ object_invalidation_map); |
+ logger_.OnInvalidation(object_invalidation_map); |
} |
// static |