1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 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/chromeos/policy/user_cloud_policy_token_forwarder_factory.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chromeos.h" 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/chromeos/policy/user_cloud_policy_token_forwarder.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chrome/browser/signin/signin_manager_factory.h" 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_dependency_manager.h" 14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "components/signin/core/browser/profile_oauth2_token_service.h" 15e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "components/signin/core/browser/signin_manager.h" 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace policy { 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// static 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)UserCloudPolicyTokenForwarderFactory* 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) UserCloudPolicyTokenForwarderFactory::GetInstance() { 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return Singleton<UserCloudPolicyTokenForwarderFactory>::get(); 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)UserCloudPolicyTokenForwarderFactory::UserCloudPolicyTokenForwarderFactory() 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) : BrowserContextKeyedServiceFactory( 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) "UserCloudPolicyTokenForwarder", 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) BrowserContextDependencyManager::GetInstance()) { 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DependsOn(SigninManagerFactory::GetInstance()); 30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance()); 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DependsOn(UserCloudPolicyManagerFactoryChromeOS::GetInstance()); 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)UserCloudPolicyTokenForwarderFactory::~UserCloudPolicyTokenForwarderFactory() {} 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)KeyedService* UserCloudPolicyTokenForwarderFactory::BuildServiceInstanceFor( 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* context) const { 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Profile* profile = static_cast<Profile*>(context); 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) UserCloudPolicyManagerChromeOS* manager = 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) UserCloudPolicyManagerFactoryChromeOS::GetForProfile(profile); 41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ProfileOAuth2TokenService* token_service = 42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ProfileOAuth2TokenServiceFactory::GetForProfile(profile); 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SigninManagerBase* signin_manager = 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SigninManagerFactory::GetForProfile(profile); 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (!signin_manager || !token_service || !manager) 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return NULL; 47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return new UserCloudPolicyTokenForwarder(manager, token_service, 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) signin_manager); 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool UserCloudPolicyTokenForwarderFactory:: 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)ServiceIsCreatedWithBrowserContext() const { 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Create this object when the profile is created so it fetches the token 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // during startup. 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return true; 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)bool UserCloudPolicyTokenForwarderFactory::ServiceIsNULLWhileTesting() const { 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // This is only needed in a handful of tests that manually create the object. 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return true; 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace policy 64