| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/invalidation/impl/fake_invalidation_service.h" |
| |
| #include "base/callback.h" |
| #include "base/values.h" |
| #include "components/invalidation/impl/invalidation_service_util.h" |
| #include "components/invalidation/public/object_id_invalidation_map.h" |
| |
| namespace invalidation { |
| |
| FakeInvalidationService::FakeInvalidationService() |
| : client_id_(GenerateInvalidatorClientId()) { |
| invalidator_registrar_.UpdateInvalidatorState(syncer::INVALIDATIONS_ENABLED); |
| } |
| |
| FakeInvalidationService::~FakeInvalidationService() { |
| } |
| |
| void FakeInvalidationService::RegisterInvalidationHandler( |
| syncer::InvalidationHandler* handler) { |
| invalidator_registrar_.RegisterHandler(handler); |
| } |
| |
| bool FakeInvalidationService::UpdateRegisteredInvalidationIds( |
| syncer::InvalidationHandler* handler, |
| const syncer::ObjectIdSet& ids) { |
| return invalidator_registrar_.UpdateRegisteredIds(handler, ids); |
| } |
| |
| void FakeInvalidationService::UnregisterInvalidationHandler( |
| syncer::InvalidationHandler* handler) { |
| invalidator_registrar_.UnregisterHandler(handler); |
| } |
| |
| syncer::InvalidatorState FakeInvalidationService::GetInvalidatorState() const { |
| return invalidator_registrar_.GetInvalidatorState(); |
| } |
| |
| std::string FakeInvalidationService::GetInvalidatorClientId() const { |
| return client_id_; |
| } |
| |
| InvalidationLogger* FakeInvalidationService::GetInvalidationLogger() { |
| return nullptr; |
| } |
| |
| void FakeInvalidationService::RequestDetailedStatus( |
| base::Callback<void(const base::DictionaryValue&)> caller) const { |
| base::DictionaryValue value; |
| caller.Run(value); |
| } |
| |
| void FakeInvalidationService::SetInvalidatorState( |
| syncer::InvalidatorState state) { |
| invalidator_registrar_.UpdateInvalidatorState(state); |
| } |
| |
| void FakeInvalidationService::EmitInvalidationForTest( |
| const syncer::Invalidation& invalidation) { |
| // This function might need to modify the invalidator, so we start by making |
| // an identical copy of it. |
| syncer::Invalidation invalidation_copy(invalidation); |
| |
| // If no one is listening to this invalidation, do not send it out. |
| syncer::ObjectIdSet registered_ids = |
| invalidator_registrar_.GetAllRegisteredIds(); |
| if (registered_ids.find(invalidation.object_id()) == registered_ids.end()) { |
| mock_ack_handler_.RegisterUnsentInvalidation(&invalidation_copy); |
| return; |
| } |
| |
| // Otherwise, register the invalidation with the mock_ack_handler_ and deliver |
| // it to the appropriate consumer. |
| mock_ack_handler_.RegisterInvalidation(&invalidation_copy); |
| syncer::ObjectIdInvalidationMap invalidation_map; |
| invalidation_map.Insert(invalidation_copy); |
| invalidator_registrar_.DispatchInvalidationsToHandlers(invalidation_map); |
| } |
| |
| syncer::MockAckHandler* FakeInvalidationService::GetMockAckHandler() { |
| return &mock_ack_handler_; |
| } |
| |
| } // namespace invalidation |