fake_invalidation_service.cc revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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
3// found in the LICENSE file.
4
5#include "chrome/browser/invalidation/fake_invalidation_service.h"
6
7#include "base/macros.h"
8#include "components/invalidation/invalidation_service_util.h"
9#include "sync/notifier/object_id_invalidation_map.h"
10
11namespace invalidation {
12
13FakeInvalidationService::FakeInvalidationService()
14    : client_id_(GenerateInvalidatorClientId()),
15      identity_provider_(&token_service_) {
16  invalidator_registrar_.UpdateInvalidatorState(syncer::INVALIDATIONS_ENABLED);
17  token_service_.set_auto_post_fetch_response_on_message_loop(true);
18}
19
20FakeInvalidationService::~FakeInvalidationService() {
21}
22
23// static
24KeyedService* FakeInvalidationService::Build(content::BrowserContext* context) {
25  return new FakeInvalidationService();
26}
27
28void FakeInvalidationService::RegisterInvalidationHandler(
29      syncer::InvalidationHandler* handler) {
30  invalidator_registrar_.RegisterHandler(handler);
31}
32
33void FakeInvalidationService::UpdateRegisteredInvalidationIds(
34      syncer::InvalidationHandler* handler,
35      const syncer::ObjectIdSet& ids) {
36  invalidator_registrar_.UpdateRegisteredIds(handler, ids);
37}
38
39void FakeInvalidationService::UnregisterInvalidationHandler(
40      syncer::InvalidationHandler* handler) {
41  invalidator_registrar_.UnregisterHandler(handler);
42}
43
44syncer::InvalidatorState FakeInvalidationService::GetInvalidatorState() const {
45  return invalidator_registrar_.GetInvalidatorState();
46}
47
48std::string FakeInvalidationService::GetInvalidatorClientId() const {
49  return client_id_;
50}
51
52InvalidationLogger* FakeInvalidationService::GetInvalidationLogger() {
53  return NULL;
54}
55
56void FakeInvalidationService::RequestDetailedStatus(
57    base::Callback<void(const base::DictionaryValue&)> caller) const {
58  base::DictionaryValue value;
59  caller.Run(value);
60}
61
62IdentityProvider* FakeInvalidationService::GetIdentityProvider() {
63  return &identity_provider_;
64}
65
66void FakeInvalidationService::SetInvalidatorState(
67    syncer::InvalidatorState state) {
68  invalidator_registrar_.UpdateInvalidatorState(state);
69}
70
71void FakeInvalidationService::EmitInvalidationForTest(
72    const syncer::Invalidation& invalidation) {
73  // This function might need to modify the invalidator, so we start by making
74  // an identical copy of it.
75  syncer::Invalidation invalidation_copy(invalidation);
76
77  // If no one is listening to this invalidation, do not send it out.
78  syncer::ObjectIdSet registered_ids =
79      invalidator_registrar_.GetAllRegisteredIds();
80  if (registered_ids.find(invalidation.object_id()) == registered_ids.end()) {
81    mock_ack_handler_.RegisterUnsentInvalidation(&invalidation_copy);
82    return;
83  }
84
85  // Otherwise, register the invalidation with the mock_ack_handler_ and deliver
86  // it to the appropriate consumer.
87  mock_ack_handler_.RegisterInvalidation(&invalidation_copy);
88  syncer::ObjectIdInvalidationMap invalidation_map;
89  invalidation_map.Insert(invalidation_copy);
90  invalidator_registrar_.DispatchInvalidationsToHandlers(invalidation_map);
91}
92
93syncer::MockAckHandler* FakeInvalidationService::GetMockAckHandler() {
94  return &mock_ack_handler_;
95}
96
97}  // namespace invalidation
98