1 // Copyright (c) 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 #include "chrome/browser/policy/cloud/user_policy_signin_service_factory.h" 6 7 #include "base/prefs/pref_service.h" 8 #include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h" 9 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/signin/signin_manager_factory.h" 11 #include "chrome/common/pref_names.h" 12 #include "components/browser_context_keyed_service/browser_context_dependency_manager.h" 13 #include "components/user_prefs/pref_registry_syncable.h" 14 15 #if defined(OS_ANDROID) 16 #include "chrome/browser/policy/cloud/user_policy_signin_service_android.h" 17 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 18 #else 19 #include "chrome/browser/policy/cloud/user_policy_signin_service.h" 20 #include "chrome/browser/signin/token_service_factory.h" 21 #endif 22 23 namespace policy { 24 25 UserPolicySigninServiceFactory::UserPolicySigninServiceFactory() 26 : BrowserContextKeyedServiceFactory( 27 "UserPolicySigninService", 28 BrowserContextDependencyManager::GetInstance()) { 29 #if defined(OS_ANDROID) 30 DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance()); 31 #else 32 DependsOn(TokenServiceFactory::GetInstance()); 33 #endif 34 DependsOn(SigninManagerFactory::GetInstance()); 35 DependsOn(UserCloudPolicyManagerFactory::GetInstance()); 36 } 37 38 UserPolicySigninServiceFactory::~UserPolicySigninServiceFactory() {} 39 40 // static 41 UserPolicySigninService* UserPolicySigninServiceFactory::GetForProfile( 42 Profile* profile) { 43 return static_cast<UserPolicySigninService*>( 44 GetInstance()->GetServiceForBrowserContext(profile, true)); 45 } 46 47 // static 48 UserPolicySigninServiceFactory* UserPolicySigninServiceFactory::GetInstance() { 49 return Singleton<UserPolicySigninServiceFactory>::get(); 50 } 51 52 BrowserContextKeyedService* 53 UserPolicySigninServiceFactory::BuildServiceInstanceFor( 54 content::BrowserContext* profile) const { 55 return new UserPolicySigninService(static_cast<Profile*>(profile)); 56 } 57 58 bool 59 UserPolicySigninServiceFactory::ServiceIsCreatedWithBrowserContext() const { 60 // Create this object when the profile is created so it can track any 61 // user signin activity. 62 return true; 63 } 64 65 void UserPolicySigninServiceFactory::RegisterProfilePrefs( 66 user_prefs::PrefRegistrySyncable* user_prefs) { 67 user_prefs->RegisterBooleanPref( 68 prefs::kDisableCloudPolicyOnSignin, 69 false, 70 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 71 #if defined(OS_ANDROID) 72 user_prefs->RegisterInt64Pref( 73 prefs::kLastPolicyCheckTime, 74 0, 75 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 76 #endif 77 } 78 79 } // namespace policy 80