user_cloud_policy_manager_factory.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/logging.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/policy/cloud/user_cloud_policy_manager.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/policy/cloud/user_cloud_policy_store.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/profiles/profile_dependency_manager.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace policy { 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)UserCloudPolicyManagerFactory* UserCloudPolicyManagerFactory::GetInstance() { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return Singleton<UserCloudPolicyManagerFactory>::get(); 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)UserCloudPolicyManager* UserCloudPolicyManagerFactory::GetForProfile( 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* profile) { 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return GetInstance()->GetManagerForProfile(profile); 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<UserCloudPolicyManager> 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UserCloudPolicyManagerFactory::CreateForProfile(Profile* profile, 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool force_immediate_load) { 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return GetInstance()->CreateManagerForProfile(profile, force_immediate_load); 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)UserCloudPolicyManagerFactory::UserCloudPolicyManagerFactory() 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : ProfileKeyedBaseFactory("UserCloudPolicyManager", 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ProfileDependencyManager::GetInstance()) {} 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)UserCloudPolicyManagerFactory::~UserCloudPolicyManagerFactory() {} 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)UserCloudPolicyManager* UserCloudPolicyManagerFactory::GetManagerForProfile( 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* profile) { 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ManagerMap::const_iterator it = managers_.find(profile); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return it != managers_.end() ? it->second : NULL; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<UserCloudPolicyManager> 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UserCloudPolicyManagerFactory::CreateManagerForProfile( 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* profile, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool force_immediate_load) { 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<policy::UserCloudPolicyStore> store( 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) policy::UserCloudPolicyStore::Create(profile)); 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (force_immediate_load) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) store->LoadImmediately(); 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return make_scoped_ptr( 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) new policy::UserCloudPolicyManager(profile, store.Pass())); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void UserCloudPolicyManagerFactory::ProfileShutdown(Profile* profile) { 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UserCloudPolicyManager* manager = GetManagerForProfile(profile); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (manager) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) manager->Shutdown(); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void UserCloudPolicyManagerFactory::SetEmptyTestingFactory(Profile* profile) {} 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void UserCloudPolicyManagerFactory::CreateServiceNow(Profile* profile) {} 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void UserCloudPolicyManagerFactory::Register(Profile* profile, 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UserCloudPolicyManager* instance) { 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UserCloudPolicyManager*& entry = managers_[profile]; 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(!entry); 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) entry = instance; 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void UserCloudPolicyManagerFactory::Unregister( 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* profile, 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UserCloudPolicyManager* instance) { 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ManagerMap::iterator entry = managers_.find(profile); 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (entry != managers_.end()) { 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK_EQ(instance, entry->second); 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) managers_.erase(entry); 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NOTREACHED(); 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace policy 86