| Index: chrome/browser/extensions/api/push_messaging/push_messaging_invalidation_handler.cc
|
| diff --git a/chrome/browser/extensions/api/push_messaging/push_messaging_invalidation_handler.cc b/chrome/browser/extensions/api/push_messaging/push_messaging_invalidation_handler.cc
|
| index 0535a756324eb47ae95196865a7a78a09227b4e0..fe20842450f244c603ac2f4e38d36c6c9798c692 100644
|
| --- a/chrome/browser/extensions/api/push_messaging/push_messaging_invalidation_handler.cc
|
| +++ b/chrome/browser/extensions/api/push_messaging/push_messaging_invalidation_handler.cc
|
| @@ -13,6 +13,7 @@
|
| #include "chrome/browser/invalidation/invalidation_service.h"
|
| #include "chrome/common/extensions/extension.h"
|
| #include "google/cacheinvalidation/types.pb.h"
|
| +#include "sync/notifier/object_id_invalidation_map.h"
|
|
|
| namespace extensions {
|
|
|
| @@ -124,29 +125,38 @@ void PushMessagingInvalidationHandler::OnInvalidatorStateChange(
|
| void PushMessagingInvalidationHandler::OnIncomingInvalidation(
|
| const syncer::ObjectIdInvalidationMap& invalidation_map) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| - for (syncer::ObjectIdInvalidationMap::const_iterator it =
|
| - invalidation_map.begin(); it != invalidation_map.end(); ++it) {
|
| - service_->AcknowledgeInvalidation(it->first, it->second.ack_handle);
|
| + syncer::ObjectIdSet ids = invalidation_map.GetObjectIds();
|
| + for (syncer::ObjectIdSet::const_iterator it = ids.begin();
|
| + it != ids.end(); ++it) {
|
| + const syncer::SingleObjectInvalidationSet& list =
|
| + invalidation_map.ForObject(*it);
|
| + const syncer::Invalidation& invalidation = list.back();
|
| + service_->AcknowledgeInvalidation(*it, invalidation.ack_handle());
|
| +
|
| + std::string payload;
|
| + if (invalidation.is_unknown_version()) {
|
| + payload = std::string();
|
| + } else {
|
| + payload = list.back().payload();
|
| + }
|
|
|
| syncer::ObjectIdSet::iterator suppressed_id =
|
| - suppressed_ids_.find(it->first);
|
| + suppressed_ids_.find(*it);
|
| if (suppressed_id != suppressed_ids_.end()) {
|
| suppressed_ids_.erase(suppressed_id);
|
| continue;
|
| }
|
| DVLOG(2) << "Incoming push message, id is: "
|
| - << syncer::ObjectIdToString(it->first)
|
| - << " and payload is:" << it->second.payload;
|
| + << syncer::ObjectIdToString(*it)
|
| + << " and payload is:" << payload;
|
|
|
| std::string extension_id;
|
| int subchannel;
|
| - if (ObjectIdToExtensionAndSubchannel(it->first,
|
| - &extension_id,
|
| - &subchannel)) {
|
| + if (ObjectIdToExtensionAndSubchannel(*it, &extension_id, &subchannel)) {
|
| DVLOG(2) << "Sending push message to reciever, extension is "
|
| << extension_id << ", subchannel is " << subchannel
|
| - << ", and payload is " << it->second.payload;
|
| - delegate_->OnMessage(extension_id, subchannel, it->second.payload);
|
| + << ", and payload is " << payload;
|
| + delegate_->OnMessage(extension_id, subchannel, payload);
|
| }
|
| }
|
| }
|
|
|