user_cloud_policy_manager_factory.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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/logging.h" 8#include "chrome/browser/policy/cloud/user_cloud_policy_manager.h" 9#include "chrome/browser/policy/cloud/user_cloud_policy_store.h" 10#include "chrome/browser/profiles/profile_dependency_manager.h" 11 12namespace policy { 13 14// static 15UserCloudPolicyManagerFactory* UserCloudPolicyManagerFactory::GetInstance() { 16 return Singleton<UserCloudPolicyManagerFactory>::get(); 17} 18 19// static 20UserCloudPolicyManager* UserCloudPolicyManagerFactory::GetForProfile( 21 Profile* profile) { 22 return GetInstance()->GetManagerForProfile(profile); 23} 24 25// static 26scoped_ptr<UserCloudPolicyManager> 27 UserCloudPolicyManagerFactory::CreateForProfile(Profile* profile, 28 bool force_immediate_load) { 29 return GetInstance()->CreateManagerForProfile(profile, force_immediate_load); 30} 31 32UserCloudPolicyManagerFactory::UserCloudPolicyManagerFactory() 33 : ProfileKeyedBaseFactory("UserCloudPolicyManager", 34 ProfileDependencyManager::GetInstance()) {} 35 36UserCloudPolicyManagerFactory::~UserCloudPolicyManagerFactory() {} 37 38UserCloudPolicyManager* UserCloudPolicyManagerFactory::GetManagerForProfile( 39 Profile* profile) { 40 ManagerMap::const_iterator it = managers_.find(profile); 41 return it != managers_.end() ? it->second : NULL; 42} 43 44scoped_ptr<UserCloudPolicyManager> 45 UserCloudPolicyManagerFactory::CreateManagerForProfile( 46 Profile* profile, 47 bool force_immediate_load) { 48 scoped_ptr<policy::UserCloudPolicyStore> store( 49 policy::UserCloudPolicyStore::Create(profile)); 50 if (force_immediate_load) 51 store->LoadImmediately(); 52 return make_scoped_ptr( 53 new policy::UserCloudPolicyManager(profile, store.Pass())); 54} 55 56void UserCloudPolicyManagerFactory::ProfileShutdown(Profile* profile) { 57 UserCloudPolicyManager* manager = GetManagerForProfile(profile); 58 if (manager) 59 manager->Shutdown(); 60} 61 62void UserCloudPolicyManagerFactory::SetEmptyTestingFactory(Profile* profile) {} 63 64void UserCloudPolicyManagerFactory::CreateServiceNow(Profile* profile) {} 65 66void UserCloudPolicyManagerFactory::Register(Profile* profile, 67 UserCloudPolicyManager* instance) { 68 UserCloudPolicyManager*& entry = managers_[profile]; 69 DCHECK(!entry); 70 entry = instance; 71} 72 73void UserCloudPolicyManagerFactory::Unregister( 74 Profile* profile, 75 UserCloudPolicyManager* instance) { 76 ManagerMap::iterator entry = managers_.find(profile); 77 if (entry != managers_.end()) { 78 DCHECK_EQ(instance, entry->second); 79 managers_.erase(entry); 80 } else { 81 NOTREACHED(); 82 } 83} 84 85} // namespace policy 86