| Index: chrome/browser/invalidation/fake_invalidation_service.cc
|
| diff --git a/chrome/browser/invalidation/fake_invalidation_service.cc b/chrome/browser/invalidation/fake_invalidation_service.cc
|
| index a19f4fb092b4b68777bd96cee070c8af6b61e2fb..dcf5c2f05aeb3aa0194cbdce820ce4cc604abcd9 100644
|
| --- a/chrome/browser/invalidation/fake_invalidation_service.cc
|
| +++ b/chrome/browser/invalidation/fake_invalidation_service.cc
|
| @@ -9,7 +9,9 @@
|
| namespace invalidation {
|
|
|
| FakeInvalidationService::FakeInvalidationService()
|
| - : client_id_(GenerateInvalidatorClientId()) {
|
| + : client_id_(GenerateInvalidatorClientId()),
|
| + received_invalid_acknowledgement_(false) {
|
| + invalidator_registrar_.UpdateInvalidatorState(syncer::INVALIDATIONS_ENABLED);
|
| }
|
|
|
| FakeInvalidationService::~FakeInvalidationService() {
|
| @@ -34,18 +36,36 @@ void FakeInvalidationService::UnregisterInvalidationHandler(
|
| void FakeInvalidationService::AcknowledgeInvalidation(
|
| const invalidation::ObjectId& id,
|
| const syncer::AckHandle& ack_handle) {
|
| - // TODO(sync): Use assertions to ensure this function is invoked correctly.
|
| + // Try to find the given handle and object id in the unacknowledged list.
|
| + AckHandleList::iterator handle;
|
| + AckHandleList::iterator begin = unacknowledged_handles_.begin();
|
| + AckHandleList::iterator end = unacknowledged_handles_.end();
|
| + for (handle = begin; handle != end; ++handle)
|
| + if (handle->first.Equals(ack_handle) && handle->second == id)
|
| + break;
|
| + if (handle == end)
|
| + received_invalid_acknowledgement_ = false;
|
| + else
|
| + unacknowledged_handles_.erase(handle);
|
| +
|
| + // Add to the acknowledged list.
|
| + acknowledged_handles_.push_back(AckHandleList::value_type(ack_handle, id));
|
| }
|
|
|
| syncer::InvalidatorState FakeInvalidationService::GetInvalidatorState() const {
|
| - return syncer::INVALIDATIONS_ENABLED;
|
| + return invalidator_registrar_.GetInvalidatorState();
|
| }
|
|
|
| std::string FakeInvalidationService::GetInvalidatorClientId() const {
|
| return client_id_;
|
| }
|
|
|
| -void FakeInvalidationService::EmitInvalidationForTest(
|
| +void FakeInvalidationService::SetInvalidatorState(
|
| + syncer::InvalidatorState state) {
|
| + invalidator_registrar_.UpdateInvalidatorState(state);
|
| +}
|
| +
|
| +syncer::AckHandle FakeInvalidationService::EmitInvalidationForTest(
|
| const invalidation::ObjectId& object_id,
|
| int64 version,
|
| const std::string& payload) {
|
| @@ -57,8 +77,23 @@ void FakeInvalidationService::EmitInvalidationForTest(
|
| inv.ack_handle = syncer::AckHandle::CreateUnique();
|
|
|
| invalidation_map.insert(std::make_pair(object_id, inv));
|
| + unacknowledged_handles_.push_back(
|
| + AckHandleList::value_type(inv.ack_handle, object_id));
|
|
|
| invalidator_registrar_.DispatchInvalidationsToHandlers(invalidation_map);
|
| +
|
| + return inv.ack_handle;
|
| +}
|
| +
|
| +bool FakeInvalidationService::IsInvalidationAcknowledged(
|
| + const syncer::AckHandle& ack_handle) const {
|
| + // Try to find the given handle in the acknowledged list.
|
| + AckHandleList::const_iterator begin = acknowledged_handles_.begin();
|
| + AckHandleList::const_iterator end = acknowledged_handles_.end();
|
| + for (AckHandleList::const_iterator handle = begin; handle != end; ++handle)
|
| + if (handle->first.Equals(ack_handle))
|
| + return true;
|
| + return false;
|
| }
|
|
|
| } // namespace invalidation
|
|
|