Index: chrome/browser/signin/profile_oauth2_token_service_factory.cc |
diff --git a/chrome/browser/signin/profile_oauth2_token_service_factory.cc b/chrome/browser/signin/profile_oauth2_token_service_factory.cc |
index c8baf9eb598cf63fa61020bf92d29f7b3c5fd866..3ab15fe08edb981082800d3d1f47750b5722d27c 100644 |
--- a/chrome/browser/signin/profile_oauth2_token_service_factory.cc |
+++ b/chrome/browser/signin/profile_oauth2_token_service_factory.cc |
@@ -16,6 +16,40 @@ |
#include "chrome/browser/signin/mutable_profile_oauth2_token_service.h" |
#endif |
+class ProfileOAuth2TokenServiceWrapperImpl |
+ : public ProfileOAuth2TokenServiceWrapper { |
+ public: |
+ explicit ProfileOAuth2TokenServiceWrapperImpl(Profile* profile); |
+ virtual ~ProfileOAuth2TokenServiceWrapperImpl(); |
+ |
+ // ProfileOAuth2TokenServiceWrapper: |
+ virtual ProfileOAuth2TokenService* GetProfileOAuth2TokenService() OVERRIDE; |
+ |
+ // BrowserContextKeyedService: |
+ virtual void Shutdown() OVERRIDE; |
+ |
+ private: |
+ scoped_ptr<ProfileOAuth2TokenService> profile_oauth2_token_service_; |
+}; |
+ |
+ProfileOAuth2TokenServiceWrapperImpl::ProfileOAuth2TokenServiceWrapperImpl( |
+ Profile* profile) { |
+ profile_oauth2_token_service_.reset(new ProfileOAuth2TokenServiceFactory:: |
+ PlatformSpecificOAuth2TokenService()); |
+ profile_oauth2_token_service_->Initialize(profile); |
+} |
+ |
+ProfileOAuth2TokenServiceWrapperImpl::~ProfileOAuth2TokenServiceWrapperImpl() {} |
+ |
+void ProfileOAuth2TokenServiceWrapperImpl::Shutdown() { |
+ profile_oauth2_token_service_->Shutdown(); |
+} |
+ |
+ProfileOAuth2TokenService* |
+ProfileOAuth2TokenServiceWrapperImpl::GetProfileOAuth2TokenService() { |
+ return profile_oauth2_token_service_.get(); |
+} |
+ |
ProfileOAuth2TokenServiceFactory::ProfileOAuth2TokenServiceFactory() |
: BrowserContextKeyedServiceFactory( |
"ProfileOAuth2TokenService", |
@@ -27,18 +61,24 @@ ProfileOAuth2TokenServiceFactory::ProfileOAuth2TokenServiceFactory() |
ProfileOAuth2TokenServiceFactory::~ProfileOAuth2TokenServiceFactory() { |
} |
+// static |
ProfileOAuth2TokenService* |
ProfileOAuth2TokenServiceFactory::GetForProfile(Profile* profile) { |
- return static_cast<ProfileOAuth2TokenService*>( |
- GetInstance()->GetServiceForBrowserContext(profile, true)); |
+ ProfileOAuth2TokenServiceWrapper* wrapper = |
+ static_cast<ProfileOAuth2TokenServiceWrapper*>( |
+ GetInstance()->GetServiceForBrowserContext(profile, true)); |
+ if (!wrapper) |
+ return NULL; |
+ return wrapper->GetProfileOAuth2TokenService(); |
} |
// static |
ProfileOAuth2TokenServiceFactory::PlatformSpecificOAuth2TokenService* |
ProfileOAuth2TokenServiceFactory::GetPlatformSpecificForProfile( |
Profile* profile) { |
- return static_cast<PlatformSpecificOAuth2TokenService*>( |
- GetForProfile(profile)); |
+ ProfileOAuth2TokenService* service = |
+ ProfileOAuth2TokenServiceFactory::GetForProfile(profile); |
+ return static_cast<PlatformSpecificOAuth2TokenService*>(service); |
} |
// static |
@@ -51,8 +91,5 @@ BrowserContextKeyedService* |
ProfileOAuth2TokenServiceFactory::BuildServiceInstanceFor( |
content::BrowserContext* context) const { |
Profile* profile = static_cast<Profile*>(context); |
- PlatformSpecificOAuth2TokenService* service = |
- new PlatformSpecificOAuth2TokenService(); |
- service->Initialize(profile); |
- return service; |
+ return new ProfileOAuth2TokenServiceWrapperImpl(profile); |
} |