user_cloud_policy_manager_factory.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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_cloud_policy_manager_factory.h" 6 7#include "base/command_line.h" 8#include "base/logging.h" 9#include "chrome/browser/policy/cloud/user_cloud_policy_manager.h" 10#include "chrome/browser/policy/cloud/user_cloud_policy_store.h" 11#include "chrome/browser/profiles/profile.h" 12#include "chrome/browser/profiles/profile_dependency_manager.h" 13#include "chrome/common/chrome_switches.h" 14 15namespace policy { 16 17// static 18UserCloudPolicyManagerFactory* UserCloudPolicyManagerFactory::GetInstance() { 19 return Singleton<UserCloudPolicyManagerFactory>::get(); 20} 21 22// static 23UserCloudPolicyManager* UserCloudPolicyManagerFactory::GetForProfile( 24 Profile* profile) { 25 return GetInstance()->GetManagerForProfile(profile); 26} 27 28// static 29scoped_ptr<UserCloudPolicyManager> 30 UserCloudPolicyManagerFactory::CreateForProfile(Profile* profile, 31 bool force_immediate_load) { 32 return GetInstance()->CreateManagerForProfile(profile, force_immediate_load); 33} 34 35UserCloudPolicyManagerFactory::UserCloudPolicyManagerFactory() 36 : ProfileKeyedBaseFactory("UserCloudPolicyManager", 37 ProfileDependencyManager::GetInstance()) {} 38 39UserCloudPolicyManagerFactory::~UserCloudPolicyManagerFactory() {} 40 41UserCloudPolicyManager* UserCloudPolicyManagerFactory::GetManagerForProfile( 42 Profile* profile) { 43 // Get the manager for the original profile, since the PolicyService is 44 // also shared between the incognito Profile and the original Profile. 45 ManagerMap::const_iterator it = managers_.find(profile->GetOriginalProfile()); 46 return it != managers_.end() ? it->second : NULL; 47} 48 49scoped_ptr<UserCloudPolicyManager> 50 UserCloudPolicyManagerFactory::CreateManagerForProfile( 51 Profile* profile, 52 bool force_immediate_load) { 53 if (CommandLine::ForCurrentProcess()->HasSwitch( 54 switches::kDisableCloudPolicyOnSignin)) { 55 return scoped_ptr<UserCloudPolicyManager>(); 56 } 57 scoped_ptr<UserCloudPolicyStore> store(UserCloudPolicyStore::Create(profile)); 58 if (force_immediate_load) 59 store->LoadImmediately(); 60 scoped_ptr<UserCloudPolicyManager> manager( 61 new UserCloudPolicyManager(profile, store.Pass())); 62 manager->Init(); 63 return manager.Pass(); 64} 65 66void UserCloudPolicyManagerFactory::ProfileShutdown( 67 content::BrowserContext* context) { 68 Profile* profile = static_cast<Profile*>(context); 69 if (profile->IsOffTheRecord()) 70 return; 71 UserCloudPolicyManager* manager = GetManagerForProfile(profile); 72 if (manager) { 73 manager->CloudPolicyManager::Shutdown(); 74 manager->ProfileKeyedService::Shutdown(); 75 } 76} 77 78void UserCloudPolicyManagerFactory::SetEmptyTestingFactory( 79 content::BrowserContext* profile) { 80} 81 82void UserCloudPolicyManagerFactory::CreateServiceNow( 83 content::BrowserContext* profile) { 84} 85 86void UserCloudPolicyManagerFactory::Register(Profile* profile, 87 UserCloudPolicyManager* instance) { 88 UserCloudPolicyManager*& entry = managers_[profile]; 89 DCHECK(!entry); 90 entry = instance; 91} 92 93void UserCloudPolicyManagerFactory::Unregister( 94 Profile* profile, 95 UserCloudPolicyManager* instance) { 96 ManagerMap::iterator entry = managers_.find(profile); 97 if (entry != managers_.end()) { 98 DCHECK_EQ(instance, entry->second); 99 managers_.erase(entry); 100 } else { 101 NOTREACHED(); 102 } 103} 104 105} // namespace policy 106