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

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 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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698