Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Side by Side Diff: chrome/browser/invalidation/fake_invalidation_service.cc

Issue 19733003: Implement cloud policy invalidations using the invalidation service framework. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698