1 // Copyright (c) 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 #ifndef CHROME_BROWSER_INVALIDATION_INVALIDATION_SERVICE_FACTORY_H_ 6 #define CHROME_BROWSER_INVALIDATION_INVALIDATION_SERVICE_FACTORY_H_ 7 8 #include "base/basictypes.h" 9 #include "base/memory/singleton.h" 10 #include "components/browser_context_keyed_service/browser_context_keyed_service_factory.h" 11 12 namespace user_prefs { 13 class PrefRegistrySyncable; 14 } 15 16 namespace syncer { 17 class Invalidator; 18 } 19 20 class Profile; 21 22 namespace invalidation { 23 24 class InvalidationService; 25 class P2PInvalidationService; 26 class FakeInvalidationService; 27 28 // A BrowserContextKeyedServiceFactory to construct InvalidationServices. The 29 // implementation of the InvalidationService may be completely different on 30 // different platforms; this class should help to hide this complexity. It also 31 // exposes some factory methods that are useful for setting up tests that rely 32 // on invalidations. 33 class InvalidationServiceFactory : public BrowserContextKeyedServiceFactory { 34 public: 35 static InvalidationService* GetForProfile(Profile* profile); 36 37 static InvalidationServiceFactory* GetInstance(); 38 39 // A helper function to set this factory to return FakeInvalidationServices 40 // instead of the default InvalidationService objects. 41 void SetBuildOnlyFakeInvalidatorsForTest(bool test_mode_enabled); 42 43 // These helper functions to set the factory to build a test-only type of 44 // invalidator and return the instance immeidately. 45 P2PInvalidationService* BuildAndUseP2PInvalidationServiceForTest( 46 content::BrowserContext* context); 47 48 private: 49 friend struct DefaultSingletonTraits<InvalidationServiceFactory>; 50 51 InvalidationServiceFactory(); 52 virtual ~InvalidationServiceFactory(); 53 54 // BrowserContextKeyedServiceFactory: 55 virtual BrowserContextKeyedService* BuildServiceInstanceFor( 56 content::BrowserContext* context) const OVERRIDE; 57 virtual void RegisterProfilePrefs( 58 user_prefs::PrefRegistrySyncable* registry) OVERRIDE; 59 60 // If true, this factory will return only FakeInvalidationService instances. 61 bool build_fake_invalidators_; 62 63 DISALLOW_COPY_AND_ASSIGN(InvalidationServiceFactory); 64 }; 65 66 } // namespace invalidation 67 68 #endif // CHROME_BROWSER_INVALIDATION_INVALIDATION_SERVICE_FACTORY_H_ 69