fake_server_invalidation_service.cc revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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 "components/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 self_notify_(true), 21 identity_provider_(&token_service_) { 22 invalidator_registrar_.UpdateInvalidatorState(syncer::INVALIDATIONS_ENABLED); 23} 24 25FakeServerInvalidationService::~FakeServerInvalidationService() { 26} 27 28// static 29KeyedService* FakeServerInvalidationService::Build( 30 content::BrowserContext* context) { 31 return new FakeServerInvalidationService(); 32} 33 34void FakeServerInvalidationService::RegisterInvalidationHandler( 35 syncer::InvalidationHandler* handler) { 36 invalidator_registrar_.RegisterHandler(handler); 37} 38 39void FakeServerInvalidationService::UpdateRegisteredInvalidationIds( 40 syncer::InvalidationHandler* handler, 41 const syncer::ObjectIdSet& ids) { 42 invalidator_registrar_.UpdateRegisteredIds(handler, ids); 43} 44 45void FakeServerInvalidationService::UnregisterInvalidationHandler( 46 syncer::InvalidationHandler* handler) { 47 invalidator_registrar_.UnregisterHandler(handler); 48} 49 50syncer::InvalidatorState FakeServerInvalidationService::GetInvalidatorState() 51 const { 52 return invalidator_registrar_.GetInvalidatorState(); 53} 54 55std::string FakeServerInvalidationService::GetInvalidatorClientId() const { 56 return client_id_; 57} 58 59invalidation::InvalidationLogger* 60FakeServerInvalidationService::GetInvalidationLogger() { 61 return NULL; 62} 63 64void FakeServerInvalidationService::RequestDetailedStatus( 65 base::Callback<void(const base::DictionaryValue&)> caller) const { 66 base::DictionaryValue value; 67 caller.Run(value); 68} 69 70IdentityProvider* FakeServerInvalidationService::GetIdentityProvider() { 71 return &identity_provider_; 72} 73 74void FakeServerInvalidationService::EnableSelfNotifications() { 75 self_notify_ = true; 76} 77 78void FakeServerInvalidationService::DisableSelfNotifications() { 79 self_notify_ = false; 80} 81 82void FakeServerInvalidationService::OnCommit( 83 const std::string& committer_id, 84 syncer::ModelTypeSet committed_model_types) { 85 syncer::ObjectIdSet object_ids = syncer::ModelTypeSetToObjectIdSet( 86 committed_model_types); 87 syncer::ObjectIdInvalidationMap invalidation_map; 88 for (syncer::ObjectIdSet::const_iterator it = object_ids.begin(); 89 it != object_ids.end(); ++it) { 90 // TODO(pvalenzuela): Create more refined invalidations instead of 91 // invalidating all items of a given type. 92 93 if (self_notify_ || client_id_ != committer_id) { 94 invalidation_map.Insert(syncer::Invalidation::InitUnknownVersion(*it)); 95 } 96 } 97 invalidator_registrar_.DispatchInvalidationsToHandlers(invalidation_map); 98} 99 100} // namespace fake_server 101