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