Home | History | Annotate | Download | only in cloud
      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