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