1 // Copyright 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_SIGNIN_PROFILE_OAUTH2_TOKEN_SERVICE_FACTORY_H_ 6 #define CHROME_BROWSER_SIGNIN_PROFILE_OAUTH2_TOKEN_SERVICE_FACTORY_H_ 7 8 #include "base/memory/singleton.h" 9 #include "components/browser_context_keyed_service/browser_context_keyed_service_factory.h" 10 11 class ProfileOAuth2TokenService; 12 class Profile; 13 14 #if defined(OS_ANDROID) 15 class AndroidProfileOAuth2TokenService; 16 #else 17 class MutableProfileOAuth2TokenService; 18 #endif 19 20 // Singleton that owns all ProfileOAuth2TokenServices and associates them with 21 // Profiles. Listens for the Profile's destruction notification and cleans up 22 // the associated ProfileOAuth2TokenService. 23 class ProfileOAuth2TokenServiceFactory 24 : public BrowserContextKeyedServiceFactory { 25 public: 26 // Returns the instance of ProfileOAuth2TokenService associated with this 27 // profile (creating one if none exists). Returns NULL if this profile 28 // cannot have a ProfileOAuth2TokenService (for example, if |profile| is 29 // incognito). 30 static ProfileOAuth2TokenService* GetForProfile(Profile* profile); 31 32 // Returns the platform specific instance of ProfileOAuth2TokenService 33 // associated with this profile (creating one if none exists). Returns NULL 34 // if this profile cannot have a ProfileOAuth2TokenService (for example, 35 // if |profile| is incognito). 36 #if defined(OS_ANDROID) 37 static AndroidProfileOAuth2TokenService* GetPlatformSpecificForProfile( 38 Profile* profile); 39 #else 40 static MutableProfileOAuth2TokenService* GetPlatformSpecificForProfile( 41 Profile* profile); 42 #endif 43 44 // Returns an instance of the ProfileOAuth2TokenServiceFactory singleton. 45 static ProfileOAuth2TokenServiceFactory* GetInstance(); 46 47 private: 48 friend struct DefaultSingletonTraits<ProfileOAuth2TokenServiceFactory>; 49 50 #if defined(OS_ANDROID) 51 typedef AndroidProfileOAuth2TokenService PlatformSpecificOAuth2TokenService; 52 #else 53 typedef MutableProfileOAuth2TokenService PlatformSpecificOAuth2TokenService; 54 #endif 55 56 ProfileOAuth2TokenServiceFactory(); 57 virtual ~ProfileOAuth2TokenServiceFactory(); 58 59 // BrowserContextKeyedServiceFactory implementation. 60 virtual BrowserContextKeyedService* BuildServiceInstanceFor( 61 content::BrowserContext* context) const OVERRIDE; 62 63 DISALLOW_COPY_AND_ASSIGN(ProfileOAuth2TokenServiceFactory); 64 }; 65 66 #endif // CHROME_BROWSER_SIGNIN_PROFILE_OAUTH2_TOKEN_SERVICE_FACTORY_H_ 67