1// Copyright (c) 2013 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#ifndef CHROME_BROWSER_POLICY_PROFILE_POLICY_CONNECTOR_H_ 6#define CHROME_BROWSER_POLICY_PROFILE_POLICY_CONNECTOR_H_ 7 8#include <string> 9 10#include "base/basictypes.h" 11#include "base/memory/scoped_ptr.h" 12#include "components/keyed_service/core/keyed_service.h" 13 14namespace user_manager { 15class User; 16} 17 18namespace policy { 19 20class CloudPolicyManager; 21class ConfigurationPolicyProvider; 22class PolicyService; 23class SchemaRegistry; 24 25// A KeyedService that creates and manages the per-Profile policy 26// components. 27class ProfilePolicyConnector : public KeyedService { 28 public: 29 ProfilePolicyConnector(); 30 virtual ~ProfilePolicyConnector(); 31 32 // If |force_immediate_load| then disk caches will be loaded synchronously. 33 void Init(bool force_immediate_load, 34#if defined(OS_CHROMEOS) 35 const user_manager::User* user, 36#endif 37 SchemaRegistry* schema_registry, 38 CloudPolicyManager* user_cloud_policy_manager); 39 40 void InitForTesting(scoped_ptr<PolicyService> service); 41 42 // KeyedService: 43 virtual void Shutdown() OVERRIDE; 44 45 // This is never NULL. 46 PolicyService* policy_service() const { return policy_service_.get(); } 47 48 // Returns true if this Profile is under cloud policy management. 49 bool IsManaged() const; 50 51 // Returns the cloud policy management domain, if this Profile is under 52 // cloud policy management. Otherwise returns an empty string. 53 std::string GetManagementDomain() const; 54 55 // Returns true if the |name| Chrome policy is currently set via the 56 // CloudPolicyManager and isn't being overridden by a higher-level provider. 57 bool IsPolicyFromCloudPolicy(const char* name) const; 58 59 private: 60#if defined(ENABLE_CONFIGURATION_POLICY) 61#if defined(OS_CHROMEOS) 62 // Some of the user policy configuration affects browser global state, and 63 // can only come from one Profile. |is_primary_user_| is true if this 64 // connector belongs to the first signed-in Profile, and in that case that 65 // Profile's policy is the one that affects global policy settings in 66 // local state. 67 bool is_primary_user_; 68 69 scoped_ptr<ConfigurationPolicyProvider> special_user_policy_provider_; 70#endif // defined(OS_CHROMEOS) 71 72 scoped_ptr<ConfigurationPolicyProvider> forwarding_policy_provider_; 73 CloudPolicyManager* user_cloud_policy_manager_; 74#endif // defined(ENABLE_CONFIGURATION_POLICY) 75 76 scoped_ptr<PolicyService> policy_service_; 77 78 DISALLOW_COPY_AND_ASSIGN(ProfilePolicyConnector); 79}; 80 81} // namespace policy 82 83#endif // CHROME_BROWSER_POLICY_PROFILE_POLICY_CONNECTOR_H_ 84