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