Index: chrome/browser/policy/configuration_policy_handler.cc |
diff --git a/chrome/browser/policy/configuration_policy_handler.cc b/chrome/browser/policy/configuration_policy_handler.cc |
index 5d4b25256035b9ffe75476799a2d9a45389a97bc..acd96463eed10fbdcf4f6bb5709ed5a7734d9e34 100644 |
--- a/chrome/browser/policy/configuration_policy_handler.cc |
+++ b/chrome/browser/policy/configuration_policy_handler.cc |
@@ -31,38 +31,16 @@ |
#include "policy/configuration_policy_type.h" |
#include "policy/policy_constants.h" |
+#if defined(OS_CHROMEOS) |
+#include "chrome/browser/policy/configuration_policy_handler_chromeos.h" |
+#endif |
+ |
namespace policy { |
namespace { |
// Implementations of ConfigurationPolicyHandler ------------------------------- |
-// Abstract class derived from ConfigurationPolicyHandler that should be |
-// subclassed to handle a single policy (not a combination of policies). |
-class TypeCheckingPolicyHandler : public ConfigurationPolicyHandler { |
- public: |
- TypeCheckingPolicyHandler(ConfigurationPolicyType policy_type, |
- base::Value::Type value_type); |
- |
- // ConfigurationPolicyHandler methods: |
- virtual bool CheckPolicySettings(const PolicyMap* policies, |
- PolicyErrorMap* errors) OVERRIDE; |
- |
- 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); |
-}; |
- |
// ConfigurationPolicyHandler for policies that map directly to a preference. |
class SimplePolicyHandler : public TypeCheckingPolicyHandler { |
public: |
@@ -256,7 +234,7 @@ class ProxyPolicyHandler : public ConfigurationPolicyHandler { |
DISALLOW_COPY_AND_ASSIGN(ProxyPolicyHandler); |
}; |
-// |
+// ConfigurationPolicyHandler for policies that enable/disable Javascript. |
class JavascriptPolicyHandler : public ConfigurationPolicyHandler { |
public: |
JavascriptPolicyHandler(); |
@@ -272,7 +250,6 @@ class JavascriptPolicyHandler : public ConfigurationPolicyHandler { |
DISALLOW_COPY_AND_ASSIGN(JavascriptPolicyHandler); |
}; |
- |
// Helper classes -------------------------------------------------------------- |
// Implementation of SearchTermsData just for validation. |
@@ -538,35 +515,6 @@ std::string ValueTypeToString(Value::Type type) { |
} |
-// TypeCheckingPolicyHandler implementation ------------------------------------ |
- |
-TypeCheckingPolicyHandler::TypeCheckingPolicyHandler( |
- ConfigurationPolicyType policy_type, |
- Value::Type value_type) |
- : policy_type_(policy_type), |
- value_type_(value_type) { |
-} |
- |
-TypeCheckingPolicyHandler::~TypeCheckingPolicyHandler() { |
-} |
- |
-ConfigurationPolicyType TypeCheckingPolicyHandler::policy_type() const { |
- return policy_type_; |
-} |
- |
-bool TypeCheckingPolicyHandler::CheckPolicySettings(const PolicyMap* policies, |
- PolicyErrorMap* errors) { |
- const Value* value = policies->Get(policy_type_); |
- if (value && value_type_ != value->GetType()) { |
- errors->AddError(policy_type_, |
- IDS_POLICY_TYPE_ERROR, |
- ValueTypeToString(value_type_)); |
- return false; |
- } |
- return true; |
-} |
- |
- |
// SimplePolicyHandler implementation ------------------------------------------ |
SimplePolicyHandler::SimplePolicyHandler( |
@@ -1293,7 +1241,6 @@ void JavascriptPolicyHandler::ApplyPolicySettings(const PolicyMap* policies, |
Value::CreateIntegerValue(setting)); |
} |
- |
} // namespace |
@@ -1324,7 +1271,51 @@ ConfigurationPolicyHandler::HandlerList* |
list->push_back(new DownloadDirPolicyHandler()); |
#endif // !defined(OS_CHROME0S) |
+#if defined(OS_CHROMEOS) |
+ list->push_back( |
+ new NetworkConfigurationPolicyHandler( |
+ kPolicyDeviceOpenNetworkConfiguration)); |
+ list->push_back( |
+ new NetworkConfigurationPolicyHandler( |
+ kPolicyOpenNetworkConfiguration)); |
+#endif |
+ |
return list; |
} |
+// TypeCheckingPolicyHandler implementation ------------------------------------ |
+ |
+TypeCheckingPolicyHandler::TypeCheckingPolicyHandler( |
+ ConfigurationPolicyType policy_type, |
+ Value::Type value_type) |
+ : policy_type_(policy_type), |
+ value_type_(value_type) { |
+} |
+ |
+TypeCheckingPolicyHandler::~TypeCheckingPolicyHandler() { |
+} |
+ |
+ConfigurationPolicyType TypeCheckingPolicyHandler::policy_type() const { |
+ return policy_type_; |
+} |
+ |
+bool TypeCheckingPolicyHandler::CheckPolicySettings(const PolicyMap* policies, |
+ PolicyErrorMap* errors) { |
+ const Value* value = NULL; |
+ return CheckAndGetValue(policies, errors, &value); |
+} |
+ |
+bool TypeCheckingPolicyHandler::CheckAndGetValue(const PolicyMap* policies, |
+ PolicyErrorMap* errors, |
+ const Value** value) { |
+ *value = policies->Get(policy_type_); |
+ if (*value && !(*value)->IsType(value_type_)) { |
+ errors->AddError(policy_type_, |
+ IDS_POLICY_TYPE_ERROR, |
+ ValueTypeToString(value_type_)); |
+ return false; |
+ } |
+ return true; |
+} |
+ |
} // namespace policy |