// Copyright (c) 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. #ifndef CHROME_BROWSER_INVALIDATION_INVALIDATION_SERVICE_FACTORY_H_ #define CHROME_BROWSER_INVALIDATION_INVALIDATION_SERVICE_FACTORY_H_ #include "base/basictypes.h" #include "base/memory/singleton.h" #include "chrome/browser/profiles/profile_keyed_service_factory.h" namespace syncer { class Invalidator; } class InvalidationFrontend; class Profile; namespace invalidation { // A ProfileKeyedServiceFactory to construct InvalidationServices. The // implementation of the InvalidationService may be completely different on // different platforms; this class should help to hide this complexity. It also // exposes some factory methods that are useful for setting up tests that rely // on invalidations. class InvalidationServiceFactory : public ProfileKeyedServiceFactory { public: // TODO(rlarocque): Re-enable this once InvalidationFrontend can extend // ProfileKeyedService. // static InvalidationFrontend* GetForProfile(Profile* profile); static InvalidationServiceFactory* GetInstance(); static ProfileKeyedService* BuildP2PInvalidationServiceFor(Profile* profile); static ProfileKeyedService* BuildTestServiceInstanceFor(Profile* profile); private: friend struct DefaultSingletonTraits; InvalidationServiceFactory(); virtual ~InvalidationServiceFactory(); // ProfileKeyedServiceFactory: virtual ProfileKeyedService* BuildServiceInstanceFor( content::BrowserContext* profile) const OVERRIDE; // TODO(rlarocque): Use this class, not InvalidatorStorage, to register // for user prefs. // virtual void RegisterUserPrefs(PrefRegistrySyncable* registry) OVERRIDE; DISALLOW_COPY_AND_ASSIGN(InvalidationServiceFactory); }; } // namespace invalidation #endif // CHROME_BROWSER_INVALIDATION_INVALIDATION_SERVICE_FACTORY_H_