profile_oauth2_token_service_factory.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chrome/browser/signin/chrome_signin_client_factory.h" 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/signin/profile_oauth2_token_service.h" 107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/ui/global_error/global_error_service_factory.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/webdata/web_data_service_factory.h" 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_dependency_manager.h" 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(OS_ANDROID) 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/signin/android_profile_oauth2_token_service.h" 16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#else 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/signin/mutable_profile_oauth2_token_service.h" 18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif 19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ProfileOAuth2TokenServiceWrapperImpl 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) : public ProfileOAuth2TokenServiceWrapper { 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public: 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) explicit ProfileOAuth2TokenServiceWrapperImpl(Profile* profile); 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ~ProfileOAuth2TokenServiceWrapperImpl(); 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // ProfileOAuth2TokenServiceWrapper: 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ProfileOAuth2TokenService* GetProfileOAuth2TokenService() OVERRIDE; 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // KeyedService: 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void Shutdown() OVERRIDE; 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private: 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<ProfileOAuth2TokenService> profile_oauth2_token_service_; 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProfileOAuth2TokenServiceWrapperImpl::ProfileOAuth2TokenServiceWrapperImpl( 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Profile* profile) { 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile_oauth2_token_service_.reset(new ProfileOAuth2TokenServiceFactory:: 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PlatformSpecificOAuth2TokenService()); 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ChromeSigninClient* client = 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ChromeSigninClientFactory::GetInstance()->GetForProfile(profile); 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) profile_oauth2_token_service_->Initialize(client, profile); 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProfileOAuth2TokenServiceWrapperImpl::~ProfileOAuth2TokenServiceWrapperImpl() {} 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void ProfileOAuth2TokenServiceWrapperImpl::Shutdown() { 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) profile_oauth2_token_service_->Shutdown(); 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProfileOAuth2TokenService* 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProfileOAuth2TokenServiceWrapperImpl::GetProfileOAuth2TokenService() { 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return profile_oauth2_token_service_.get(); 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ProfileOAuth2TokenServiceFactory::ProfileOAuth2TokenServiceFactory() 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) : BrowserContextKeyedServiceFactory( 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) "ProfileOAuth2TokenService", 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) BrowserContextDependencyManager::GetInstance()) { 607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DependsOn(GlobalErrorServiceFactory::GetInstance()); 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DependsOn(WebDataServiceFactory::GetInstance()); 62a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DependsOn(ChromeSigninClientFactory::GetInstance()); 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ProfileOAuth2TokenServiceFactory::~ProfileOAuth2TokenServiceFactory() { 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// static 69a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)ProfileOAuth2TokenService* 70a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)ProfileOAuth2TokenServiceFactory::GetForProfile(Profile* profile) { 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ProfileOAuth2TokenServiceWrapper* wrapper = 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static_cast<ProfileOAuth2TokenServiceWrapper*>( 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetInstance()->GetServiceForBrowserContext(profile, true)); 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!wrapper) 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return NULL; 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return wrapper->GetProfileOAuth2TokenService(); 777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 78a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// static 80a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)ProfileOAuth2TokenServiceFactory::PlatformSpecificOAuth2TokenService* 81a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)ProfileOAuth2TokenServiceFactory::GetPlatformSpecificForProfile( 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Profile* profile) { 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ProfileOAuth2TokenService* service = 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ProfileOAuth2TokenServiceFactory::GetForProfile(profile); 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return static_cast<PlatformSpecificOAuth2TokenService*>(service); 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// static 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ProfileOAuth2TokenServiceFactory* 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ProfileOAuth2TokenServiceFactory::GetInstance() { 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return Singleton<ProfileOAuth2TokenServiceFactory>::get(); 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 94a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)KeyedService* ProfileOAuth2TokenServiceFactory::BuildServiceInstanceFor( 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::BrowserContext* context) const { 96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Profile* profile = static_cast<Profile*>(context); 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return new ProfileOAuth2TokenServiceWrapperImpl(profile); 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 99