1 // Copyright (c) 2012 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_PROFILES_GAIA_INFO_UPDATE_SERVICE_FACTORY_H_ 6 #define CHROME_BROWSER_PROFILES_GAIA_INFO_UPDATE_SERVICE_FACTORY_H_ 7 8 #include "base/memory/singleton.h" 9 #include "components/keyed_service/content/browser_context_keyed_service_factory.h" 10 11 class GAIAInfoUpdateService; 12 class Profile; 13 14 namespace user_prefs { 15 class PrefRegistrySyncable; 16 } 17 18 // Singleton that owns all GAIAInfoUpdateServices and associates them with 19 // Profiles. Listens for the Profile's destruction notification and cleans up 20 // the associated GAIAInfoUpdateService. 21 class GAIAInfoUpdateServiceFactory : public BrowserContextKeyedServiceFactory { 22 public: 23 // Returns the instance of GAIAInfoUpdateService associated with this profile 24 // (creating one if none exists). Returns NULL if this profile cannot have a 25 // GAIAInfoUpdateService (for example, if |profile| is incognito). 26 static GAIAInfoUpdateService* GetForProfile(Profile* profile); 27 28 // Returns an instance of the GAIAInfoUpdateServiceFactory singleton. 29 static GAIAInfoUpdateServiceFactory* GetInstance(); 30 31 private: 32 friend struct DefaultSingletonTraits<GAIAInfoUpdateServiceFactory>; 33 34 GAIAInfoUpdateServiceFactory(); 35 virtual ~GAIAInfoUpdateServiceFactory(); 36 37 // BrowserContextKeyedServiceFactory: 38 virtual KeyedService* BuildServiceInstanceFor( 39 content::BrowserContext* context) const OVERRIDE; 40 41 virtual void RegisterProfilePrefs( 42 user_prefs::PrefRegistrySyncable* registry) OVERRIDE; 43 virtual bool ServiceIsNULLWhileTesting() const OVERRIDE; 44 45 DISALLOW_COPY_AND_ASSIGN(GAIAInfoUpdateServiceFactory); 46 }; 47 48 #endif // CHROME_BROWSER_PROFILES_GAIA_INFO_UPDATE_SERVICE_FACTORY_H_ 49