Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(295)

Unified Diff: chrome/browser/policy/configuration_policy_handler.h

Issue 7972013: ConfigurationPolicyPrefStore refactoring to surface error messages. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: . Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..3833cb233883e213ed740d268f3ba36005e078d8
--- /dev/null
+++ b/chrome/browser/policy/configuration_policy_handler.h
@@ -0,0 +1,271 @@
+// 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 <string>
+
+#include "base/memory/scoped_ptr.h"
+#include "base/values.h"
+#include "chrome/browser/policy/configuration_policy_handler_interface.h"
+#include "chrome/browser/policy/policy_error_map.h"
+#include "chrome/browser/policy/policy_map.h"
+#include "chrome/browser/prefs/incognito_mode_prefs.h"
+#include "chrome/browser/prefs/pref_value_map.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 TypeCheckingPolicyHandler : public ConfigurationPolicyHandlerInterface {
+ public:
+ TypeCheckingPolicyHandler(ConfigurationPolicyType policy,
+ base::Value::Type value_type);
+
+ // ConfigurationPolicyHandlerInterface method. Returns true if the value of
+ // the policy is of the correct type and false otherwise.
+ virtual bool CheckPolicySettings(const PolicyMap* policies,
+ PolicyErrorMap* errors) OVERRIDE;
Mattias Nissler (ping if slow) 2011/09/30 13:33:35 Hm, why did the simpler Apply disappear from here?
+
+ protected:
+ virtual ~TypeCheckingPolicyHandler();
+
+ ConfigurationPolicyType policy_type() const;
+
+ private:
+ // The ConfigurationPolicyType of the policy.
+ ConfigurationPolicyType policy_type_;
+
+ // The type the value of the policy should have.
+ base::Value::Type value_type_;
+
+ DISALLOW_COPY_AND_ASSIGN(TypeCheckingPolicyHandler );
+};
+
+// ConfigurationPolicyHandlerInterface implementation for policies that map
+// directly to a preference.
+class SimplePolicyHandler : public TypeCheckingPolicyHandler {
+ public:
+ SimplePolicyHandler(ConfigurationPolicyType policy,
+ base::Value::Type value_type,
+ const char* pref_path);
+ virtual ~SimplePolicyHandler();
+
+ // ConfigurationPolicyHandlerInterface methods:
+ virtual void ApplyPolicySettings(const PolicyMap* policies,
+ PrefValueMap* prefs) OVERRIDE;
+
+ private:
+ // The DictionaryValue path of the preference the policy maps to.
+ const char* pref_path_;
+
+ DISALLOW_COPY_AND_ASSIGN(SimplePolicyHandler);
+};
+
+// ConfigurationPolicyHandlerInterface implementation for the SyncDisabled
+// policy.
+class SyncPolicyHandler : public TypeCheckingPolicyHandler {
+ public:
+ SyncPolicyHandler();
+ virtual ~SyncPolicyHandler();
+
+ // ConfigurationPolicyHandlerInterface methods:
+ virtual void ApplyPolicySettings(const PolicyMap* policies,
+ PrefValueMap* prefs) OVERRIDE;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(SyncPolicyHandler);
+};
+
+// ConfigurationPolicyHandlerInterface implementation for the AutofillEnabled
+// policy.
+class AutofillPolicyHandler : public TypeCheckingPolicyHandler {
+ public:
+ AutofillPolicyHandler();
+ virtual ~AutofillPolicyHandler();
+
+ // ConfigurationPolicyHandlerInterface methods:
+ virtual void ApplyPolicySettings(const PolicyMap* policies,
+ PrefValueMap* prefs) OVERRIDE;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(AutofillPolicyHandler);
+};
+
+// ConfigurationPolicyHandlerInterface implementation for the DownloadDirectory
+// policy.
+class DownloadDirPolicyHandler : public TypeCheckingPolicyHandler {
+ public:
+ DownloadDirPolicyHandler();
+ virtual ~DownloadDirPolicyHandler();
+
+ // ConfigurationPolicyHandlerInterface methods:
+ virtual void ApplyPolicySettings(const PolicyMap* policies,
+ PrefValueMap* prefs) OVERRIDE;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(DownloadDirPolicyHandler);
+};
+
+// ConfigurationPolicyHandlerInterface implementation for the DiskCacheDir
+// policy.
+class DiskCacheDirPolicyHandler : public TypeCheckingPolicyHandler {
+ public:
+ explicit DiskCacheDirPolicyHandler();
+ virtual ~DiskCacheDirPolicyHandler();
+
+ // ConfigurationPolicyHandlerInterface methods:
+ virtual void ApplyPolicySettings(const PolicyMap* policies,
+ PrefValueMap* prefs) OVERRIDE;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(DiskCacheDirPolicyHandler);
+};
+
+// ConfigurationPolicyHandlerInterface implementation for the
+// FileSelectionDialogsHandler policy.
+class FileSelectionDialogsHandler : public TypeCheckingPolicyHandler {
+ public:
+ FileSelectionDialogsHandler();
+ virtual ~FileSelectionDialogsHandler();
+
+ // ConfigurationPolicyHandlerInterface methods:
+ virtual void ApplyPolicySettings(const PolicyMap* policies,
+ PrefValueMap* prefs) OVERRIDE;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(FileSelectionDialogsHandler);
+};
+
+// ConfigurationPolicyHandlerInterface implementation for the BookmarkBarEnabled
+// policy.
+class BookmarksPolicyHandler : public TypeCheckingPolicyHandler {
+ public:
+ BookmarksPolicyHandler();
+ virtual ~BookmarksPolicyHandler();
+
+ // ConfigurationPolicyHandlerInterface methods:
+ virtual void ApplyPolicySettings(const PolicyMap* policies,
+ PrefValueMap* prefs) OVERRIDE;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(BookmarksPolicyHandler);
+};
+
+// ConfigurationPolicyHandlerInterface implementation for the incognito mode
+// policies.
+class IncognitoModePolicyHandler : public ConfigurationPolicyHandlerInterface {
+ public:
+ IncognitoModePolicyHandler();
+ virtual ~IncognitoModePolicyHandler();
+
+ // ConfigurationPolicyHandlerInterface methods:
+ virtual bool CheckPolicySettings(const PolicyMap* policies,
+ PolicyErrorMap* errors) OVERRIDE;
+ virtual void ApplyPolicySettings(const PolicyMap* policies,
+ PrefValueMap* prefs) OVERRIDE;
+
+ private:
+ IncognitoModePrefs::Availability GetAvailabilityValueAsEnum(
+ const Value* availability);
+
+ DISALLOW_COPY_AND_ASSIGN(IncognitoModePolicyHandler);
+};
+
+// ConfigurationPolicyHandlerInterface implementation for the
+// DefaultSearchEncodings policy.
+class DefaultSearchEncodingsPolicyHandler : public TypeCheckingPolicyHandler {
+ public:
+ DefaultSearchEncodingsPolicyHandler();
+ virtual ~DefaultSearchEncodingsPolicyHandler();
+
+ // ConfigurationPolicyHandlerInterface methods:
+ virtual void ApplyPolicySettings(const 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(const PolicyMap* policies,
+ PolicyErrorMap* errors) OVERRIDE;
+ virtual void ApplyPolicySettings(const 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(const PolicyMap* policies,
+ PolicyErrorMap* errors);
+
+ // Returns true if there is a value for |policy_type| in |policies| and false
+ // otherwise.
+ bool HasDefaultSearchPolicy(const PolicyMap* policies,
+ ConfigurationPolicyType policy_type);
+
+ // Returns true if any default search policies are specified in |policies| and
+ // false otherwise.
+ bool AnyDefaultSearchPoliciesSpecified(const PolicyMap* policies);
+
+ // Returns true if the default search provider is disabled and false
+ // otherwise.
+ bool DefaultSearchProviderIsDisabled(const PolicyMap* policies);
+
+ // Returns true if the default search URL was set and is valid and false
+ // otherwise.
+ bool DefaultSearchURLIsValid(const 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);
+
+ // 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(const PolicyMap* policies,
+ PolicyErrorMap* errors) OVERRIDE;
+ virtual void ApplyPolicySettings(const PolicyMap* policies,
+ PrefValueMap* prefs) OVERRIDE;
+
+ private:
+ const Value* GetProxyPolicyValue(const PolicyMap* policies,
+ ConfigurationPolicyType policy);
+
+ // Converts the deprecated ProxyServerMode policy value to a ProxyMode value
+ // and places the result in |mode_value|. Returns true if the conversion
+ // succeeded and false otherwise.
+ bool CheckProxyModeAndServerMode(const PolicyMap* policies,
+ PolicyErrorMap* errors,
+ std::string* mode_value);
+
+ DISALLOW_COPY_AND_ASSIGN(ProxyPolicyHandler);
+};
+
+} // namespace policy
+
+#endif // CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_HANDLER_H_

Powered by Google App Engine
This is Rietveld 408576698