Index: chrome/browser/policy/configuration_policy_handler.h |
diff --git a/chrome/browser/policy/configuration_policy_handler.h b/chrome/browser/policy/configuration_policy_handler.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4e91ad51977987136eb98b382bab27ae1b5a5948 |
--- /dev/null |
+++ b/chrome/browser/policy/configuration_policy_handler.h |
@@ -0,0 +1,274 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_HANDLER_H_ |
+#define CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_HANDLER_H_ |
+#pragma once |
+ |
+#include "base/memory/scoped_ptr.h" |
+#include "base/values.h" |
+#include "chrome/browser/policy/configuration_policy_handler_interface.h" |
+#include "chrome/browser/prefs/incognito_mode_prefs.h" |
+#include "policy/configuration_policy_type.h" |
+ |
+namespace policy { |
+ |
+// Abstract class derived from ConfigurationPolicyHandlerInterface that should |
+// be subclassed to handle a single policy (not a combination of policies). |
+class CheckPolicyValueType : public ConfigurationPolicyHandlerInterface { |
Mattias Nissler (ping if slow)
2011/09/20 13:12:25
Maybe rename to TypeCheckingPolicyHandler?
simo
2011/09/22 11:43:26
Done.
|
+ public: |
+ CheckPolicyValueType(ConfigurationPolicyType policy, |
+ base::Value::Type value_type, |
+ const char* pref_path); |
Mattias Nissler (ping if slow)
2011/09/20 13:12:25
Why do you have the pref_path as a constructor arg
simo
2011/09/22 11:43:26
I've removed it and I'm using PolicyStatus::GetPol
|
+ |
+ // ConfigurationPolicyHandlerInterface method. Returns true if the value of |
+ // the policy is of the correct type and false otherwise. |
+ virtual bool CheckPolicySettings(PolicyMap* policies, |
+ PolicyErrorMap* errors) OVERRIDE; |
+ |
+ protected: |
+ virtual ~CheckPolicyValueType(); |
+ |
+ // Returns a weak reference to the value pointed to by policy_value_.get(). |
Mattias Nissler (ping if slow)
2011/09/20 13:12:25
Comment doesn't apply?
simo
2011/09/22 11:43:26
Done.
|
+ ConfigurationPolicyType policy_type() const; |
+ const char* pref_path() const; |
+ |
+ private: |
+ static std::string ValueTypeToString(Value::Type type); |
+ |
+ // The ConfigurationPolicyType of the policy. |
+ ConfigurationPolicyType policy_type_; |
+ |
+ // The type the value of the policy should have. |
+ base::Value::Type value_type_; |
+ |
+ // The DictionaryValue path of the preference the policy maps to. |
+ const char* pref_path_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(CheckPolicyValueType); |
+}; |
+ |
+// ConfigurationPolicyHandlerInterface implementation for policies that map |
+// directly to a preference. |
+class SimplePolicyHandler : public CheckPolicyValueType { |
+ public: |
+ // SimplePolicyHandler takes ownership of |value|.|value| must be non-NULL. |
+ SimplePolicyHandler(ConfigurationPolicyType policy, |
+ base::Value::Type value_type, |
+ const char* pref_path); |
+ |
+ virtual ~SimplePolicyHandler(); |
+ |
+ // ConfigurationPolicyHandlerInterface method: |
+ virtual void ApplyPolicySettings(PolicyMap* policies, |
+ PrefValueMap* prefs) OVERRIDE; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(SimplePolicyHandler); |
+}; |
+ |
+// ConfigurationPolicyHandlerInterface implementation for the SyncDisabled |
+// policy. |
+class SyncPolicyHandler : public CheckPolicyValueType { |
+ public: |
+ // SyncPolicyHandler takes ownership of |value|. |value| must be non-NULL. |
+ SyncPolicyHandler(); |
+ virtual ~SyncPolicyHandler(); |
+ |
+ // ConfigurationPolicyHandlerInterface method: |
+ virtual void ApplyPolicySettings(PolicyMap* policies, |
+ PrefValueMap* prefs) OVERRIDE; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(SyncPolicyHandler); |
+}; |
+ |
+// ConfigurationPolicyHandlerInterface implementation for the AutofillEnabled |
+// policy. |
+class AutofillPolicyHandler : public CheckPolicyValueType { |
+ public: |
+ // AutofillPolicyHandler takes ownership of |value|. |value| must be non-NULL. |
+ AutofillPolicyHandler(); |
+ virtual ~AutofillPolicyHandler(); |
+ |
+ // ConfigurationPolicyHandlerInterface method: |
+ virtual void ApplyPolicySettings(PolicyMap* policies, |
+ PrefValueMap* prefs) OVERRIDE; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(AutofillPolicyHandler); |
+}; |
+ |
+// ConfigurationPolicyHandlerInterface implementation for the DownloadDirectory |
+// policy. |
+class DownloadDirPolicyHandler : public CheckPolicyValueType { |
+ public: |
+ // DownloadDirPolicyHandler takes ownership of |value|. |value| must be |
+ // non-NULL. |
+ DownloadDirPolicyHandler(); |
+ virtual ~DownloadDirPolicyHandler(); |
+ |
+ // CheckPolicyValueType method: |
+ virtual bool CheckPolicySettings(PolicyMap* map, |
+ PolicyErrorMap* errors) OVERRIDE; |
+ |
+ // ConfigurationPolicyHandlerInterface method: |
+ virtual void ApplyPolicySettings(PolicyMap* policies, |
+ PrefValueMap* prefs) OVERRIDE; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(DownloadDirPolicyHandler); |
+}; |
+ |
+// ConfigurationPolicyHandlerInterface implementation for the DiskCacheDir |
+// policy. |
+class DiskCacheDirPolicyHandler : public CheckPolicyValueType { |
+ public: |
+ // DiskCacheDirPolicyHandler takes ownership of |value|. |value| must be |
+ // non-NULL. |
+ explicit DiskCacheDirPolicyHandler(); |
+ virtual ~DiskCacheDirPolicyHandler(); |
+ |
+ // ConfigurationPolicyHandlerInterface method: |
+ virtual void ApplyPolicySettings(PolicyMap* policies, |
+ PrefValueMap* prefs) OVERRIDE; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(DiskCacheDirPolicyHandler); |
+}; |
+ |
+// ConfigurationPolicyHandlerInterface implementation for the |
+// FileSelectionDialogsHandler policy. |
+class FileSelectionDialogsHandler : public CheckPolicyValueType { |
+ public: |
+ // FileSelectionDialogsHandler takes ownership of |value|. |value| must be |
+ // non-NULL. |
+ FileSelectionDialogsHandler(); |
+ virtual ~FileSelectionDialogsHandler(); |
+ |
+ // ConfigurationPolicyHandlerInterface method: |
+ virtual void ApplyPolicySettings(PolicyMap* policies, |
+ PrefValueMap* prefs) OVERRIDE; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(FileSelectionDialogsHandler); |
+}; |
+ |
+// ConfigurationPolicyHandlerInterface implementation for the BookmarkBarEnabled |
+// policy. |
+class BookmarksPolicyHandler : public CheckPolicyValueType { |
+ public: |
+ // BookmarksPolicyHandler takes ownership of |value|. |value| must be |
+ // non-NULL. |
+ BookmarksPolicyHandler(); |
+ virtual ~BookmarksPolicyHandler(); |
+ |
+ // ConfigurationPolicyHandlerInterface method: |
+ virtual void ApplyPolicySettings(PolicyMap* policies, |
+ PrefValueMap* prefs) OVERRIDE; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(BookmarksPolicyHandler); |
+}; |
+ |
+// ConfigurationPolicyHandlerInterface implementation for the incognito mode |
+// policies. |
+class IncognitoModePolicyHandler : public ConfigurationPolicyHandlerInterface { |
+ public: |
+ // IncognitoModePolicyHandler takes ownership of |incognito_mode_availability| |
+ // and |incognito_enabled_value|.Set |incognito_mode_availability| or |
+ // |incognito_enabled_value| to NULL if there is no value for the |
+ // corresponding policy. |
+ IncognitoModePolicyHandler(); |
+ virtual ~IncognitoModePolicyHandler(); |
+ |
+ // ConfigurationPolicyHandlerInterface methods: |
+ virtual bool CheckPolicySettings(PolicyMap* policies, |
+ PolicyErrorMap* errors) OVERRIDE; |
+ virtual void ApplyPolicySettings(PolicyMap* policies, |
+ PrefValueMap* prefs) OVERRIDE; |
+ |
+ private: |
+ // The value of kPolicyIncognitoModeAvailability as an enum. |
+ IncognitoModePrefs::Availability availability_enum_value_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(IncognitoModePolicyHandler); |
+}; |
+ |
+// ConfigurationPolicyHandlerInterface implementation for the |
+// DefaultSearchEncodings policy. |
+class DefaultSearchEncodingsPolicyHandler : public CheckPolicyValueType { |
+ public: |
+ DefaultSearchEncodingsPolicyHandler(); |
+ virtual ~DefaultSearchEncodingsPolicyHandler(); |
+ |
+ // ConfigurationPolicyHandlerInterface method: |
+ virtual void ApplyPolicySettings(PolicyMap* policies, |
+ PrefValueMap* prefs) OVERRIDE; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(DefaultSearchEncodingsPolicyHandler); |
+}; |
+ |
+// ConfigurationPolicyHandlerInterface implementation for the default search |
+// policies. |
+class DefaultSearchPolicyHandler : public ConfigurationPolicyHandlerInterface { |
+ public: |
+ DefaultSearchPolicyHandler(); |
+ virtual ~DefaultSearchPolicyHandler(); |
+ |
+ // ConfigurationPolicyHandlerInterface methods: |
+ virtual bool CheckPolicySettings(PolicyMap* policies, |
+ PolicyErrorMap* errors) OVERRIDE; |
+ virtual void ApplyPolicySettings(PolicyMap* policies, |
+ PrefValueMap* prefs) OVERRIDE; |
+ |
+ private: |
+ typedef std::vector<ConfigurationPolicyHandlerInterface*> HandlerList; |
+ |
+ // Calls |CheckPolicySettings()| on each of the handlers in |handlers_| and |
+ // returns true if all of the calls return true and false otherwise. |
+ bool CheckIndividualPolicies(PolicyMap* policies, PolicyErrorMap* errors); |
+ |
+ // Returns true if the default search provider is disabled and false |
+ // otherwise. |
+ bool DefaultSearchProviderIsDisabled(PolicyMap* policies); |
+ |
+ // Returns true if the default search URL was set and is valid and false |
+ // otherwise. |
+ bool DefaultSearchURLIsPresentAndValid(PolicyMap* policies); |
+ |
+ // Make sure that the |path| if present in |prefs_|. If not, set it to |
+ // a blank string. |
+ void EnsureStringPrefExists(PrefValueMap* prefs, const std::string& path); |
+ |
+ // Clears all default search preferences in |prefs|. |
+ void ClearDefaultSearchPreferences(PrefValueMap* prefs); |
+ |
+ // The ConfigurationPolicyHandlerInterface handlers for each of default search |
+ // policies. |
+ HandlerList handlers_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DefaultSearchPolicyHandler); |
+}; |
+ |
+// ConfigurationPolicyHandlerInterface implementation for the proxy policies. |
+class ProxyPolicyHandler : public ConfigurationPolicyHandlerInterface { |
+ public: |
+ ProxyPolicyHandler(); |
+ virtual ~ProxyPolicyHandler(); |
+ |
+ // ConfigurationPolicyHandlerInterface methods: |
+ virtual bool CheckPolicySettings(PolicyMap* map, |
+ PolicyErrorMap* errors) OVERRIDE; |
+ virtual void ApplyPolicySettings(PolicyMap* policies, |
+ PrefValueMap* prefs) OVERRIDE; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(ProxyPolicyHandler); |
+}; |
+ |
+} // namespace policy |
+ |
+#endif // CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_HANDLER_H_ |