|  | // Copyright 2014 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_invalidator.h" | 
|  |  | 
|  | #include <memory> | 
|  |  | 
|  | #include "base/compiler_specific.h" | 
|  | #include "components/invalidation/impl/invalidator_test_template.h" | 
|  | #include "testing/gtest/include/gtest/gtest.h" | 
|  |  | 
|  | namespace syncer { | 
|  |  | 
|  | namespace { | 
|  |  | 
|  | class FakeInvalidatorTestDelegate { | 
|  | public: | 
|  | FakeInvalidatorTestDelegate() {} | 
|  |  | 
|  | ~FakeInvalidatorTestDelegate() { | 
|  | DestroyInvalidator(); | 
|  | } | 
|  |  | 
|  | void CreateInvalidator( | 
|  | const std::string& invalidator_client_id, | 
|  | const std::string& initial_state, | 
|  | const base::WeakPtr<InvalidationStateTracker>& | 
|  | invalidation_state_tracker) { | 
|  | DCHECK(!invalidator_.get()); | 
|  | invalidator_.reset(new FakeInvalidator()); | 
|  | } | 
|  |  | 
|  | FakeInvalidator* GetInvalidator() { | 
|  | return invalidator_.get(); | 
|  | } | 
|  |  | 
|  | void DestroyInvalidator() { | 
|  | invalidator_.reset(); | 
|  | } | 
|  |  | 
|  | void WaitForInvalidator() { | 
|  | // Do Nothing. | 
|  | } | 
|  |  | 
|  | void TriggerOnInvalidatorStateChange(InvalidatorState state) { | 
|  | invalidator_->EmitOnInvalidatorStateChange(state); | 
|  | } | 
|  |  | 
|  | void TriggerOnIncomingInvalidation( | 
|  | const ObjectIdInvalidationMap& invalidation_map) { | 
|  | invalidator_->EmitOnIncomingInvalidation(invalidation_map); | 
|  | } | 
|  |  | 
|  | private: | 
|  | std::unique_ptr<FakeInvalidator> invalidator_; | 
|  | }; | 
|  |  | 
|  | INSTANTIATE_TYPED_TEST_CASE_P( | 
|  | FakeInvalidatorTest, InvalidatorTest, | 
|  | FakeInvalidatorTestDelegate); | 
|  |  | 
|  | }  // namespace | 
|  |  | 
|  | }  // namespace syncer |