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.h" 6 7#include "base/bind.h" 8#include "base/bind_helpers.h" 9#include "chrome/browser/policy/cloud/cloud_policy_constants.h" 10#include "chrome/browser/policy/cloud/cloud_policy_service.h" 11#include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h" 12#include "chrome/browser/policy/cloud/user_cloud_policy_store.h" 13#include "chrome/browser/policy/policy_types.h" 14#include "chrome/common/pref_names.h" 15 16namespace em = enterprise_management; 17 18namespace policy { 19 20UserCloudPolicyManager::UserCloudPolicyManager( 21 Profile* profile, 22 scoped_ptr<UserCloudPolicyStore> store) 23 : CloudPolicyManager( 24 PolicyNamespaceKey(GetChromeUserPolicyType(), std::string()), 25 store.get()), 26 profile_(profile), 27 store_(store.Pass()) { 28 UserCloudPolicyManagerFactory::GetInstance()->Register(profile_, this); 29} 30 31UserCloudPolicyManager::~UserCloudPolicyManager() { 32 UserCloudPolicyManagerFactory::GetInstance()->Unregister(profile_, this); 33} 34 35void UserCloudPolicyManager::Connect( 36 PrefService* local_state, scoped_ptr<CloudPolicyClient> client) { 37 core()->Connect(client.Pass()); 38 StartRefreshScheduler(); 39 core()->TrackRefreshDelayPref(local_state, prefs::kUserPolicyRefreshRate); 40} 41 42// static 43scoped_ptr<CloudPolicyClient> 44UserCloudPolicyManager::CreateCloudPolicyClient( 45 DeviceManagementService* device_management_service) { 46 return make_scoped_ptr( 47 new CloudPolicyClient(std::string(), std::string(), 48 USER_AFFILIATION_NONE, 49 NULL, device_management_service)).Pass(); 50} 51 52void UserCloudPolicyManager::DisconnectAndRemovePolicy() { 53 core()->Disconnect(); 54 store_->Clear(); 55} 56 57bool UserCloudPolicyManager::IsClientRegistered() const { 58 return client() && client()->is_registered(); 59} 60 61} // namespace policy 62