OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "sync/notifier/sync_invalidation_listener.h" | 5 #include "sync/notifier/sync_invalidation_listener.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 invalidation_state_tracker_.Call( | 155 invalidation_state_tracker_.Call( |
156 FROM_HERE, | 156 FROM_HERE, |
157 &InvalidationStateTracker::SetMaxVersion, | 157 &InvalidationStateTracker::SetMaxVersion, |
158 id, invalidation.version()); | 158 id, invalidation.version()); |
159 | 159 |
160 std::string payload; | 160 std::string payload; |
161 // payload() CHECK()'s has_payload(), so we must check it ourselves first. | 161 // payload() CHECK()'s has_payload(), so we must check it ourselves first. |
162 if (invalidation.has_payload()) | 162 if (invalidation.has_payload()) |
163 payload = invalidation.payload(); | 163 payload = invalidation.payload(); |
164 | 164 |
165 ObjectIdStateMap id_state_map; | 165 ObjectIdInvalidationMap invalidation_map; |
166 id_state_map[id].payload = payload; | 166 invalidation_map[id].payload = payload; |
167 EmitInvalidation(id_state_map); | 167 EmitInvalidation(invalidation_map); |
168 // TODO(akalin): We should really acknowledge only after we get the | 168 // TODO(akalin): We should really acknowledge only after we get the |
169 // updates from the sync server. (see http://crbug.com/78462). | 169 // updates from the sync server. (see http://crbug.com/78462). |
170 client->Acknowledge(ack_handle); | 170 client->Acknowledge(ack_handle); |
171 } | 171 } |
172 | 172 |
173 void SyncInvalidationListener::InvalidateUnknownVersion( | 173 void SyncInvalidationListener::InvalidateUnknownVersion( |
174 invalidation::InvalidationClient* client, | 174 invalidation::InvalidationClient* client, |
175 const invalidation::ObjectId& object_id, | 175 const invalidation::ObjectId& object_id, |
176 const invalidation::AckHandle& ack_handle) { | 176 const invalidation::AckHandle& ack_handle) { |
177 DCHECK(CalledOnValidThread()); | 177 DCHECK(CalledOnValidThread()); |
178 DCHECK_EQ(client, invalidation_client_.get()); | 178 DCHECK_EQ(client, invalidation_client_.get()); |
179 DVLOG(1) << "InvalidateUnknownVersion"; | 179 DVLOG(1) << "InvalidateUnknownVersion"; |
180 | 180 |
181 ObjectIdStateMap id_state_map; | 181 ObjectIdInvalidationMap invalidation_map; |
182 id_state_map[object_id].payload = std::string(); | 182 invalidation_map[object_id].payload = std::string(); |
183 EmitInvalidation(id_state_map); | 183 EmitInvalidation(invalidation_map); |
184 // TODO(akalin): We should really acknowledge only after we get the | 184 // TODO(akalin): We should really acknowledge only after we get the |
185 // updates from the sync server. (see http://crbug.com/78462). | 185 // updates from the sync server. (see http://crbug.com/78462). |
186 client->Acknowledge(ack_handle); | 186 client->Acknowledge(ack_handle); |
187 } | 187 } |
188 | 188 |
189 // This should behave as if we got an invalidation with version | 189 // This should behave as if we got an invalidation with version |
190 // UNKNOWN_OBJECT_VERSION for all known data types. | 190 // UNKNOWN_OBJECT_VERSION for all known data types. |
191 void SyncInvalidationListener::InvalidateAll( | 191 void SyncInvalidationListener::InvalidateAll( |
192 invalidation::InvalidationClient* client, | 192 invalidation::InvalidationClient* client, |
193 const invalidation::AckHandle& ack_handle) { | 193 const invalidation::AckHandle& ack_handle) { |
194 DCHECK(CalledOnValidThread()); | 194 DCHECK(CalledOnValidThread()); |
195 DCHECK_EQ(client, invalidation_client_.get()); | 195 DCHECK_EQ(client, invalidation_client_.get()); |
196 DVLOG(1) << "InvalidateAll"; | 196 DVLOG(1) << "InvalidateAll"; |
197 | 197 |
198 ObjectIdStateMap id_state_map; | 198 const ObjectIdInvalidationMap& invalidation_map = |
199 for (ObjectIdSet::const_iterator it = registered_ids_.begin(); | 199 ObjectIdSetToInvalidationMap(registered_ids_, std::string()); |
200 it != registered_ids_.end(); ++it) { | 200 EmitInvalidation(invalidation_map); |
201 id_state_map[*it].payload = std::string(); | |
202 } | |
203 EmitInvalidation(id_state_map); | |
204 // TODO(akalin): We should really acknowledge only after we get the | 201 // TODO(akalin): We should really acknowledge only after we get the |
205 // updates from the sync server. (see http://crbug.com/76482). | 202 // updates from the sync server. (see http://crbug.com/76482). |
206 client->Acknowledge(ack_handle); | 203 client->Acknowledge(ack_handle); |
207 } | 204 } |
208 | 205 |
209 void SyncInvalidationListener::EmitInvalidation( | 206 void SyncInvalidationListener::EmitInvalidation( |
210 const ObjectIdStateMap& id_state_map) { | 207 const ObjectIdInvalidationMap& invalidation_map) { |
211 DCHECK(CalledOnValidThread()); | 208 DCHECK(CalledOnValidThread()); |
212 delegate_->OnInvalidate(id_state_map); | 209 delegate_->OnInvalidate(invalidation_map); |
213 } | 210 } |
214 | 211 |
215 void SyncInvalidationListener::InformRegistrationStatus( | 212 void SyncInvalidationListener::InformRegistrationStatus( |
216 invalidation::InvalidationClient* client, | 213 invalidation::InvalidationClient* client, |
217 const invalidation::ObjectId& object_id, | 214 const invalidation::ObjectId& object_id, |
218 InvalidationListener::RegistrationState new_state) { | 215 InvalidationListener::RegistrationState new_state) { |
219 DCHECK(CalledOnValidThread()); | 216 DCHECK(CalledOnValidThread()); |
220 DCHECK_EQ(client, invalidation_client_.get()); | 217 DCHECK_EQ(client, invalidation_client_.get()); |
221 DVLOG(1) << "InformRegistrationStatus: " | 218 DVLOG(1) << "InformRegistrationStatus: " |
222 << ObjectIdToString(object_id) << " " << new_state; | 219 << ObjectIdToString(object_id) << " " << new_state; |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 EmitStateChange(); | 354 EmitStateChange(); |
358 } | 355 } |
359 | 356 |
360 void SyncInvalidationListener::OnIncomingNotification( | 357 void SyncInvalidationListener::OnIncomingNotification( |
361 const notifier::Notification& notification) { | 358 const notifier::Notification& notification) { |
362 DCHECK(CalledOnValidThread()); | 359 DCHECK(CalledOnValidThread()); |
363 // Do nothing, since this is already handled by |invalidation_client_|. | 360 // Do nothing, since this is already handled by |invalidation_client_|. |
364 } | 361 } |
365 | 362 |
366 } // namespace syncer | 363 } // namespace syncer |
OLD | NEW |