fake_server_invalidation_service.cc revision 010d83a9304c5a91596085d917d248abff47903a
1// Copyright 2014 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/sync/test/integration/fake_server_invalidation_service.h"
6
7#include <string>
8
9#include "base/macros.h"
10#include "chrome/browser/invalidation/invalidation_service_util.h"
11#include "sync/internal_api/public/base/invalidation.h"
12#include "sync/internal_api/public/base/model_type.h"
13#include "sync/notifier/object_id_invalidation_map.h"
14#
15
16namespace fake_server {
17
18FakeServerInvalidationService::FakeServerInvalidationService()
19    : client_id_(invalidation::GenerateInvalidatorClientId()),
20      identity_provider_(&token_service_) {
21  invalidator_registrar_.UpdateInvalidatorState(syncer::INVALIDATIONS_ENABLED);
22}
23
24FakeServerInvalidationService::~FakeServerInvalidationService() {
25}
26
27// static
28KeyedService* FakeServerInvalidationService::Build(
29    content::BrowserContext* context) {
30  return new FakeServerInvalidationService();
31}
32
33void FakeServerInvalidationService::RegisterInvalidationHandler(
34      syncer::InvalidationHandler* handler) {
35  invalidator_registrar_.RegisterHandler(handler);
36}
37
38void FakeServerInvalidationService::UpdateRegisteredInvalidationIds(
39      syncer::InvalidationHandler* handler,
40      const syncer::ObjectIdSet& ids) {
41  invalidator_registrar_.UpdateRegisteredIds(handler, ids);
42}
43
44void FakeServerInvalidationService::UnregisterInvalidationHandler(
45      syncer::InvalidationHandler* handler) {
46  invalidator_registrar_.UnregisterHandler(handler);
47}
48
49syncer::InvalidatorState FakeServerInvalidationService::GetInvalidatorState()
50    const {
51  return invalidator_registrar_.GetInvalidatorState();
52}
53
54std::string FakeServerInvalidationService::GetInvalidatorClientId() const {
55  return client_id_;
56}
57
58invalidation::InvalidationLogger*
59FakeServerInvalidationService::GetInvalidationLogger() {
60  return NULL;
61}
62
63void FakeServerInvalidationService::RequestDetailedStatus(
64    base::Callback<void(const base::DictionaryValue&)> caller) const {
65  base::DictionaryValue value;
66  caller.Run(value);
67}
68
69IdentityProvider* FakeServerInvalidationService::GetIdentityProvider() {
70  return &identity_provider_;
71}
72
73void FakeServerInvalidationService::OnCommit(
74    syncer::ModelTypeSet committed_model_types) {
75  syncer::ObjectIdSet object_ids = syncer::ModelTypeSetToObjectIdSet(
76      committed_model_types);
77  syncer::ObjectIdInvalidationMap invalidation_map;
78  for (syncer::ObjectIdSet::const_iterator it = object_ids.begin();
79       it != object_ids.end(); ++it) {
80    // TODO(pvalenzuela): Create more refined invalidations instead of
81    // invalidating all items of a given type.
82    invalidation_map.Insert(syncer::Invalidation::InitUnknownVersion(*it));
83  }
84  invalidator_registrar_.DispatchInvalidationsToHandlers(invalidation_map);
85}
86
87}  // namespace fake_server
88