| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_HANDLER_H_ | 5 #ifndef COMPONENTS_POLICY_CORE_BROWSER_CONFIGURATION_POLICY_HANDLER_H_ |
| 6 #define CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_HANDLER_H_ | 6 #define COMPONENTS_POLICY_CORE_BROWSER_CONFIGURATION_POLICY_HANDLER_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
| 12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 13 #include "base/values.h" | 13 #include "base/values.h" |
| 14 #include "components/policy/policy_export.h" |
| 14 | 15 |
| 15 class PrefValueMap; | 16 class PrefValueMap; |
| 16 | 17 |
| 17 namespace policy { | 18 namespace policy { |
| 18 | 19 |
| 19 class PolicyErrorMap; | 20 class PolicyErrorMap; |
| 20 class PolicyMap; | 21 class PolicyMap; |
| 21 | 22 |
| 22 // Maps a policy type to a preference path, and to the expected value type. | 23 // Maps a policy type to a preference path, and to the expected value type. |
| 23 struct PolicyToPreferenceMapEntry { | 24 struct POLICY_EXPORT PolicyToPreferenceMapEntry { |
| 24 const char* const policy_name; | 25 const char* const policy_name; |
| 25 const char* const preference_path; | 26 const char* const preference_path; |
| 26 const base::Value::Type value_type; | 27 const base::Value::Type value_type; |
| 27 }; | 28 }; |
| 28 | 29 |
| 29 // An abstract super class that subclasses should implement to map policies to | 30 // An abstract super class that subclasses should implement to map policies to |
| 30 // their corresponding preferences, and to check whether the policies are valid. | 31 // their corresponding preferences, and to check whether the policies are valid. |
| 31 class ConfigurationPolicyHandler { | 32 class POLICY_EXPORT ConfigurationPolicyHandler { |
| 32 public: | 33 public: |
| 33 static std::string ValueTypeToString(Value::Type type); | 34 static std::string ValueTypeToString(Value::Type type); |
| 34 | 35 |
| 35 ConfigurationPolicyHandler(); | 36 ConfigurationPolicyHandler(); |
| 36 virtual ~ConfigurationPolicyHandler(); | 37 virtual ~ConfigurationPolicyHandler(); |
| 37 | 38 |
| 38 // Returns whether the policy settings handled by this | 39 // Returns whether the policy settings handled by this |
| 39 // ConfigurationPolicyHandler can be applied. Fills |errors| with error | 40 // ConfigurationPolicyHandler can be applied. Fills |errors| with error |
| 40 // messages or warnings. |errors| may contain error messages even when | 41 // messages or warnings. |errors| may contain error messages even when |
| 41 // |CheckPolicySettings()| returns true. | 42 // |CheckPolicySettings()| returns true. |
| 42 virtual bool CheckPolicySettings(const PolicyMap& policies, | 43 virtual bool CheckPolicySettings(const PolicyMap& policies, |
| 43 PolicyErrorMap* errors) = 0; | 44 PolicyErrorMap* errors) = 0; |
| 44 | 45 |
| 45 // Processes the policies handled by this ConfigurationPolicyHandler and sets | 46 // Processes the policies handled by this ConfigurationPolicyHandler and sets |
| 46 // the appropriate preferences in |prefs|. | 47 // the appropriate preferences in |prefs|. |
| 47 virtual void ApplyPolicySettings(const PolicyMap& policies, | 48 virtual void ApplyPolicySettings(const PolicyMap& policies, |
| 48 PrefValueMap* prefs) = 0; | 49 PrefValueMap* prefs) = 0; |
| 49 | 50 |
| 50 // Modifies the values of some of the policies in |policies| so that they | 51 // Modifies the values of some of the policies in |policies| so that they |
| 51 // are more suitable to display to the user. This can be used to remove | 52 // are more suitable to display to the user. This can be used to remove |
| 52 // sensitive values such as passwords, or to pretty-print values. | 53 // sensitive values such as passwords, or to pretty-print values. |
| 53 virtual void PrepareForDisplaying(PolicyMap* policies) const; | 54 virtual void PrepareForDisplaying(PolicyMap* policies) const; |
| 54 | 55 |
| 55 private: | 56 private: |
| 56 DISALLOW_COPY_AND_ASSIGN(ConfigurationPolicyHandler); | 57 DISALLOW_COPY_AND_ASSIGN(ConfigurationPolicyHandler); |
| 57 }; | 58 }; |
| 58 | 59 |
| 59 // Abstract class derived from ConfigurationPolicyHandler that should be | 60 // Abstract class derived from ConfigurationPolicyHandler that should be |
| 60 // subclassed to handle a single policy (not a combination of policies). | 61 // subclassed to handle a single policy (not a combination of policies). |
| 61 class TypeCheckingPolicyHandler : public ConfigurationPolicyHandler { | 62 class POLICY_EXPORT TypeCheckingPolicyHandler |
| 63 : public ConfigurationPolicyHandler { |
| 62 public: | 64 public: |
| 63 TypeCheckingPolicyHandler(const char* policy_name, | 65 TypeCheckingPolicyHandler(const char* policy_name, |
| 64 base::Value::Type value_type); | 66 base::Value::Type value_type); |
| 65 virtual ~TypeCheckingPolicyHandler(); | 67 virtual ~TypeCheckingPolicyHandler(); |
| 66 | 68 |
| 67 // ConfigurationPolicyHandler methods: | 69 // ConfigurationPolicyHandler methods: |
| 68 virtual bool CheckPolicySettings(const PolicyMap& policies, | 70 virtual bool CheckPolicySettings(const PolicyMap& policies, |
| 69 PolicyErrorMap* errors) OVERRIDE; | 71 PolicyErrorMap* errors) OVERRIDE; |
| 70 | 72 |
| 71 const char* policy_name() const; | 73 const char* policy_name() const; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 82 | 84 |
| 83 // The type the value of the policy should have. | 85 // The type the value of the policy should have. |
| 84 base::Value::Type value_type_; | 86 base::Value::Type value_type_; |
| 85 | 87 |
| 86 DISALLOW_COPY_AND_ASSIGN(TypeCheckingPolicyHandler); | 88 DISALLOW_COPY_AND_ASSIGN(TypeCheckingPolicyHandler); |
| 87 }; | 89 }; |
| 88 | 90 |
| 89 // Abstract class derived from TypeCheckingPolicyHandler that ensures an int | 91 // Abstract class derived from TypeCheckingPolicyHandler that ensures an int |
| 90 // policy's value lies in an allowed range. Either clamps or rejects values | 92 // policy's value lies in an allowed range. Either clamps or rejects values |
| 91 // outside the range. | 93 // outside the range. |
| 92 class IntRangePolicyHandlerBase : public TypeCheckingPolicyHandler { | 94 class POLICY_EXPORT IntRangePolicyHandlerBase |
| 95 : public TypeCheckingPolicyHandler { |
| 93 public: | 96 public: |
| 94 IntRangePolicyHandlerBase(const char* policy_name, | 97 IntRangePolicyHandlerBase(const char* policy_name, |
| 95 int min, | 98 int min, |
| 96 int max, | 99 int max, |
| 97 bool clamp); | 100 bool clamp); |
| 98 | 101 |
| 99 // ConfigurationPolicyHandler: | 102 // ConfigurationPolicyHandler: |
| 100 virtual bool CheckPolicySettings(const PolicyMap& policies, | 103 virtual bool CheckPolicySettings(const PolicyMap& policies, |
| 101 PolicyErrorMap* errors) OVERRIDE; | 104 PolicyErrorMap* errors) OVERRIDE; |
| 102 | 105 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 118 int max_; | 121 int max_; |
| 119 | 122 |
| 120 // Whether to clamp values lying outside the allowed range instead of | 123 // Whether to clamp values lying outside the allowed range instead of |
| 121 // rejecting them. | 124 // rejecting them. |
| 122 bool clamp_; | 125 bool clamp_; |
| 123 | 126 |
| 124 DISALLOW_COPY_AND_ASSIGN(IntRangePolicyHandlerBase); | 127 DISALLOW_COPY_AND_ASSIGN(IntRangePolicyHandlerBase); |
| 125 }; | 128 }; |
| 126 | 129 |
| 127 // ConfigurationPolicyHandler for policies that map directly to a preference. | 130 // ConfigurationPolicyHandler for policies that map directly to a preference. |
| 128 class SimplePolicyHandler : public TypeCheckingPolicyHandler { | 131 class POLICY_EXPORT SimplePolicyHandler : public TypeCheckingPolicyHandler { |
| 129 public: | 132 public: |
| 130 SimplePolicyHandler(const char* policy_name, | 133 SimplePolicyHandler(const char* policy_name, |
| 131 const char* pref_path, | 134 const char* pref_path, |
| 132 base::Value::Type value_type); | 135 base::Value::Type value_type); |
| 133 virtual ~SimplePolicyHandler(); | 136 virtual ~SimplePolicyHandler(); |
| 134 | 137 |
| 135 // ConfigurationPolicyHandler methods: | 138 // ConfigurationPolicyHandler methods: |
| 136 virtual void ApplyPolicySettings(const PolicyMap& policies, | 139 virtual void ApplyPolicySettings(const PolicyMap& policies, |
| 137 PrefValueMap* prefs) OVERRIDE; | 140 PrefValueMap* prefs) OVERRIDE; |
| 138 | 141 |
| 139 private: | 142 private: |
| 140 // The DictionaryValue path of the preference the policy maps to. | 143 // The DictionaryValue path of the preference the policy maps to. |
| 141 const char* pref_path_; | 144 const char* pref_path_; |
| 142 | 145 |
| 143 DISALLOW_COPY_AND_ASSIGN(SimplePolicyHandler); | 146 DISALLOW_COPY_AND_ASSIGN(SimplePolicyHandler); |
| 144 }; | 147 }; |
| 145 | 148 |
| 146 // A policy handler implementation that maps a string enum list to an int enum | 149 // A policy handler implementation that maps a string enum list to an int enum |
| 147 // list as specified by a mapping table. | 150 // list as specified by a mapping table. |
| 148 class StringToIntEnumListPolicyHandler : public TypeCheckingPolicyHandler { | 151 class POLICY_EXPORT StringToIntEnumListPolicyHandler |
| 152 : public TypeCheckingPolicyHandler { |
| 149 public: | 153 public: |
| 150 struct MappingEntry { | 154 struct POLICY_EXPORT MappingEntry { |
| 151 const char* enum_value; | 155 const char* enum_value; |
| 152 int int_value; | 156 int int_value; |
| 153 }; | 157 }; |
| 154 | 158 |
| 155 StringToIntEnumListPolicyHandler(const char* policy_name, | 159 StringToIntEnumListPolicyHandler(const char* policy_name, |
| 156 const char* pref_path, | 160 const char* pref_path, |
| 157 const MappingEntry* mapping_begin, | 161 const MappingEntry* mapping_begin, |
| 158 const MappingEntry* mapping_end); | 162 const MappingEntry* mapping_end); |
| 159 | 163 |
| 160 // ConfigurationPolicyHandler methods: | 164 // ConfigurationPolicyHandler methods: |
| (...skipping 14 matching lines...) Expand all Loading... |
| 175 | 179 |
| 176 // The mapping table. | 180 // The mapping table. |
| 177 const MappingEntry* mapping_begin_; | 181 const MappingEntry* mapping_begin_; |
| 178 const MappingEntry* mapping_end_; | 182 const MappingEntry* mapping_end_; |
| 179 | 183 |
| 180 DISALLOW_COPY_AND_ASSIGN(StringToIntEnumListPolicyHandler); | 184 DISALLOW_COPY_AND_ASSIGN(StringToIntEnumListPolicyHandler); |
| 181 }; | 185 }; |
| 182 | 186 |
| 183 // A policy handler implementation that ensures an int policy's value lies in an | 187 // A policy handler implementation that ensures an int policy's value lies in an |
| 184 // allowed range. | 188 // allowed range. |
| 185 class IntRangePolicyHandler : public IntRangePolicyHandlerBase { | 189 class POLICY_EXPORT IntRangePolicyHandler : public IntRangePolicyHandlerBase { |
| 186 public: | 190 public: |
| 187 IntRangePolicyHandler(const char* policy_name, | 191 IntRangePolicyHandler(const char* policy_name, |
| 188 const char* pref_path, | 192 const char* pref_path, |
| 189 int min, | 193 int min, |
| 190 int max, | 194 int max, |
| 191 bool clamp); | 195 bool clamp); |
| 192 virtual ~IntRangePolicyHandler(); | 196 virtual ~IntRangePolicyHandler(); |
| 193 | 197 |
| 194 // ConfigurationPolicyHandler: | 198 // ConfigurationPolicyHandler: |
| 195 virtual void ApplyPolicySettings(const PolicyMap& policies, | 199 virtual void ApplyPolicySettings(const PolicyMap& policies, |
| 196 PrefValueMap* prefs) OVERRIDE; | 200 PrefValueMap* prefs) OVERRIDE; |
| 197 | 201 |
| 198 private: | 202 private: |
| 199 // Name of the pref to write. | 203 // Name of the pref to write. |
| 200 const char* pref_path_; | 204 const char* pref_path_; |
| 201 | 205 |
| 202 DISALLOW_COPY_AND_ASSIGN(IntRangePolicyHandler); | 206 DISALLOW_COPY_AND_ASSIGN(IntRangePolicyHandler); |
| 203 }; | 207 }; |
| 204 | 208 |
| 205 // A policy handler implementation that maps an int percentage value to a | 209 // A policy handler implementation that maps an int percentage value to a |
| 206 // double. | 210 // double. |
| 207 class IntPercentageToDoublePolicyHandler : public IntRangePolicyHandlerBase { | 211 class POLICY_EXPORT IntPercentageToDoublePolicyHandler |
| 212 : public IntRangePolicyHandlerBase { |
| 208 public: | 213 public: |
| 209 IntPercentageToDoublePolicyHandler(const char* policy_name, | 214 IntPercentageToDoublePolicyHandler(const char* policy_name, |
| 210 const char* pref_path, | 215 const char* pref_path, |
| 211 int min, | 216 int min, |
| 212 int max, | 217 int max, |
| 213 bool clamp); | 218 bool clamp); |
| 214 virtual ~IntPercentageToDoublePolicyHandler(); | 219 virtual ~IntPercentageToDoublePolicyHandler(); |
| 215 | 220 |
| 216 // ConfigurationPolicyHandler: | 221 // ConfigurationPolicyHandler: |
| 217 virtual void ApplyPolicySettings(const PolicyMap& policies, | 222 virtual void ApplyPolicySettings(const PolicyMap& policies, |
| 218 PrefValueMap* prefs) OVERRIDE; | 223 PrefValueMap* prefs) OVERRIDE; |
| 219 | 224 |
| 220 private: | 225 private: |
| 221 // Name of the pref to write. | 226 // Name of the pref to write. |
| 222 const char* pref_path_; | 227 const char* pref_path_; |
| 223 | 228 |
| 224 DISALLOW_COPY_AND_ASSIGN(IntPercentageToDoublePolicyHandler); | 229 DISALLOW_COPY_AND_ASSIGN(IntPercentageToDoublePolicyHandler); |
| 225 }; | 230 }; |
| 226 | 231 |
| 227 } // namespace policy | 232 } // namespace policy |
| 228 | 233 |
| 229 #endif // CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_HANDLER_H_ | 234 #endif // COMPONENTS_POLICY_CORE_BROWSER_CONFIGURATION_POLICY_HANDLER_H_ |
| OLD | NEW |