| Index: sync/notifier/sync_invalidation_listener.cc
|
| diff --git a/sync/notifier/sync_invalidation_listener.cc b/sync/notifier/sync_invalidation_listener.cc
|
| index ed07f2070b7fdc4398758deacd2565c5d69f27ad..71be3ecad69b21f6ab265f1e88c3349995483a14 100644
|
| --- a/sync/notifier/sync_invalidation_listener.cc
|
| +++ b/sync/notifier/sync_invalidation_listener.cc
|
| @@ -22,6 +22,8 @@ namespace {
|
|
|
| const char kApplicationName[] = "chrome-sync";
|
|
|
| +static const int64 kUnknownVersion = -1;
|
| +
|
| } // namespace
|
|
|
| namespace syncer {
|
| @@ -220,7 +222,7 @@ void SyncInvalidationListener::InvalidateUnknownVersion(
|
| ids.insert(object_id);
|
| PrepareInvalidation(
|
| ids,
|
| - Invalidation::kUnknownVersion,
|
| + kUnknownVersion,
|
| std::string(),
|
| client,
|
| ack_handle);
|
| @@ -237,7 +239,7 @@ void SyncInvalidationListener::InvalidateAll(
|
|
|
| PrepareInvalidation(
|
| registered_ids_,
|
| - Invalidation::kUnknownVersion,
|
| + kUnknownVersion,
|
| std::string(),
|
| client,
|
| ack_handle);
|
| @@ -275,13 +277,22 @@ void SyncInvalidationListener::EmitInvalidation(
|
| const invalidation::AckHandle& ack_handle,
|
| const AckHandleMap& local_ack_handles) {
|
| DCHECK(CalledOnValidThread());
|
| - ObjectIdInvalidationMap invalidation_map =
|
| - ObjectIdSetToInvalidationMap(ids, version, payload);
|
| +
|
| + ObjectIdInvalidationMap invalidation_map;
|
| for (AckHandleMap::const_iterator it = local_ack_handles.begin();
|
| it != local_ack_handles.end(); ++it) {
|
| // Update in-memory copy of the invalidation state.
|
| invalidation_state_map_[it->first].expected = it->second;
|
| - invalidation_map[it->first].ack_handle = it->second;
|
| +
|
| + if (version == kUnknownVersion) {
|
| + Invalidation inv = Invalidation::InitUnknownVersion(it->first);
|
| + inv.set_ack_handle(it->second);
|
| + invalidation_map.Insert(inv);
|
| + } else {
|
| + Invalidation inv = Invalidation::Init(it->first, version, payload);
|
| + inv.set_ack_handle(it->second);
|
| + invalidation_map.Insert(inv);
|
| + }
|
| }
|
| ack_tracker_.Track(ids);
|
| delegate_->OnInvalidate(invalidation_map);
|
| @@ -291,13 +302,19 @@ void SyncInvalidationListener::EmitInvalidation(
|
| void SyncInvalidationListener::OnTimeout(const ObjectIdSet& ids) {
|
| ObjectIdInvalidationMap invalidation_map;
|
| for (ObjectIdSet::const_iterator it = ids.begin(); it != ids.end(); ++it) {
|
| - Invalidation invalidation;
|
| - invalidation.ack_handle = invalidation_state_map_[*it].expected;
|
| - invalidation.version = invalidation_state_map_[*it].version;
|
| - invalidation.payload = invalidation_state_map_[*it].payload;
|
| - invalidation_map.insert(std::make_pair(*it, invalidation));
|
| + if (invalidation_state_map_[*it].version == kUnknownVersion) {
|
| + Invalidation inv = Invalidation::InitUnknownVersion(*it);
|
| + inv.set_ack_handle(invalidation_state_map_[*it].expected);
|
| + invalidation_map.Insert(inv);
|
| + } else {
|
| + Invalidation inv = Invalidation::Init(
|
| + *it,
|
| + invalidation_state_map_[*it].version,
|
| + invalidation_state_map_[*it].payload);
|
| + inv.set_ack_handle(invalidation_state_map_[*it].expected);
|
| + invalidation_map.Insert(inv);
|
| + }
|
| }
|
| -
|
| delegate_->OnInvalidate(invalidation_map);
|
| }
|
|
|
|
|