OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chrome/browser/invalidation/fake_invalidation_service.h" | 5 #include "chrome/browser/invalidation/fake_invalidation_service.h" |
6 | 6 |
7 #include "chrome/browser/invalidation/invalidation_service_util.h" | 7 #include "chrome/browser/invalidation/invalidation_service_util.h" |
8 | 8 |
9 namespace invalidation { | 9 namespace invalidation { |
10 | 10 |
11 FakeInvalidationService::FakeInvalidationService() | 11 FakeInvalidationService::FakeInvalidationService() |
12 : client_id_(GenerateInvalidatorClientId()) { | 12 : client_id_(GenerateInvalidatorClientId()), |
| 13 received_invalid_acknowledgement_(false) { |
| 14 invalidator_registrar_.UpdateInvalidatorState(syncer::INVALIDATIONS_ENABLED); |
13 } | 15 } |
14 | 16 |
15 FakeInvalidationService::~FakeInvalidationService() { | 17 FakeInvalidationService::~FakeInvalidationService() { |
16 } | 18 } |
17 | 19 |
18 void FakeInvalidationService::RegisterInvalidationHandler( | 20 void FakeInvalidationService::RegisterInvalidationHandler( |
19 syncer::InvalidationHandler* handler) { | 21 syncer::InvalidationHandler* handler) { |
20 invalidator_registrar_.RegisterHandler(handler); | 22 invalidator_registrar_.RegisterHandler(handler); |
21 } | 23 } |
22 | 24 |
23 void FakeInvalidationService::UpdateRegisteredInvalidationIds( | 25 void FakeInvalidationService::UpdateRegisteredInvalidationIds( |
24 syncer::InvalidationHandler* handler, | 26 syncer::InvalidationHandler* handler, |
25 const syncer::ObjectIdSet& ids) { | 27 const syncer::ObjectIdSet& ids) { |
26 invalidator_registrar_.UpdateRegisteredIds(handler, ids); | 28 invalidator_registrar_.UpdateRegisteredIds(handler, ids); |
27 } | 29 } |
28 | 30 |
29 void FakeInvalidationService::UnregisterInvalidationHandler( | 31 void FakeInvalidationService::UnregisterInvalidationHandler( |
30 syncer::InvalidationHandler* handler) { | 32 syncer::InvalidationHandler* handler) { |
31 invalidator_registrar_.UnregisterHandler(handler); | 33 invalidator_registrar_.UnregisterHandler(handler); |
32 } | 34 } |
33 | 35 |
34 void FakeInvalidationService::AcknowledgeInvalidation( | 36 void FakeInvalidationService::AcknowledgeInvalidation( |
35 const invalidation::ObjectId& id, | 37 const invalidation::ObjectId& id, |
36 const syncer::AckHandle& ack_handle) { | 38 const syncer::AckHandle& ack_handle) { |
37 // TODO(sync): Use assertions to ensure this function is invoked correctly. | 39 // Try to find the given handle and object id in the unacknowledged list. |
| 40 AckHandleList::iterator handle; |
| 41 AckHandleList::iterator begin = unacknowledged_handles_.begin(); |
| 42 AckHandleList::iterator end = unacknowledged_handles_.end(); |
| 43 for (handle = begin; handle != end; ++handle) |
| 44 if (handle->first.Equals(ack_handle) && handle->second == id) |
| 45 break; |
| 46 if (handle == end) |
| 47 received_invalid_acknowledgement_ = false; |
| 48 else |
| 49 unacknowledged_handles_.erase(handle); |
| 50 |
| 51 // Add to the acknowledged list. |
| 52 acknowledged_handles_.push_back(AckHandleList::value_type(ack_handle, id)); |
38 } | 53 } |
39 | 54 |
40 syncer::InvalidatorState FakeInvalidationService::GetInvalidatorState() const { | 55 syncer::InvalidatorState FakeInvalidationService::GetInvalidatorState() const { |
41 return syncer::INVALIDATIONS_ENABLED; | 56 return invalidator_registrar_.GetInvalidatorState(); |
42 } | 57 } |
43 | 58 |
44 std::string FakeInvalidationService::GetInvalidatorClientId() const { | 59 std::string FakeInvalidationService::GetInvalidatorClientId() const { |
45 return client_id_; | 60 return client_id_; |
46 } | 61 } |
47 | 62 |
48 void FakeInvalidationService::EmitInvalidationForTest( | 63 void FakeInvalidationService::SetInvalidatorState( |
| 64 syncer::InvalidatorState state) { |
| 65 invalidator_registrar_.UpdateInvalidatorState(state); |
| 66 } |
| 67 |
| 68 syncer::AckHandle FakeInvalidationService::EmitInvalidationForTest( |
49 const invalidation::ObjectId& object_id, | 69 const invalidation::ObjectId& object_id, |
50 int64 version, | 70 int64 version, |
51 const std::string& payload) { | 71 const std::string& payload) { |
52 syncer::ObjectIdInvalidationMap invalidation_map; | 72 syncer::ObjectIdInvalidationMap invalidation_map; |
53 | 73 |
54 syncer::Invalidation inv; | 74 syncer::Invalidation inv; |
55 inv.version = version; | 75 inv.version = version; |
56 inv.payload = payload; | 76 inv.payload = payload; |
57 inv.ack_handle = syncer::AckHandle::CreateUnique(); | 77 inv.ack_handle = syncer::AckHandle::CreateUnique(); |
58 | 78 |
59 invalidation_map.insert(std::make_pair(object_id, inv)); | 79 invalidation_map.insert(std::make_pair(object_id, inv)); |
| 80 unacknowledged_handles_.push_back( |
| 81 AckHandleList::value_type(inv.ack_handle, object_id)); |
60 | 82 |
61 invalidator_registrar_.DispatchInvalidationsToHandlers(invalidation_map); | 83 invalidator_registrar_.DispatchInvalidationsToHandlers(invalidation_map); |
| 84 |
| 85 return inv.ack_handle; |
| 86 } |
| 87 |
| 88 bool FakeInvalidationService::IsInvalidationAcknowledged( |
| 89 const syncer::AckHandle& ack_handle) const { |
| 90 // Try to find the given handle in the acknowledged list. |
| 91 AckHandleList::const_iterator begin = acknowledged_handles_.begin(); |
| 92 AckHandleList::const_iterator end = acknowledged_handles_.end(); |
| 93 for (AckHandleList::const_iterator handle = begin; handle != end; ++handle) |
| 94 if (handle->first.Equals(ack_handle)) |
| 95 return true; |
| 96 return false; |
62 } | 97 } |
63 | 98 |
64 } // namespace invalidation | 99 } // namespace invalidation |
OLD | NEW |