diff options
Diffstat (limited to 'chromium/components/policy/core/browser/configuration_policy_handler.cc')
-rw-r--r-- | chromium/components/policy/core/browser/configuration_policy_handler.cc | 298 |
1 files changed, 0 insertions, 298 deletions
diff --git a/chromium/components/policy/core/browser/configuration_policy_handler.cc b/chromium/components/policy/core/browser/configuration_policy_handler.cc deleted file mode 100644 index d1e4833a596..00000000000 --- a/chromium/components/policy/core/browser/configuration_policy_handler.cc +++ /dev/null @@ -1,298 +0,0 @@ -// Copyright (c) 2012 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. - -#include "components/policy/core/browser/configuration_policy_handler.h" - -#include <algorithm> - -#include "base/callback.h" -#include "base/files/file_path.h" -#include "base/logging.h" -#include "base/prefs/pref_value_map.h" -#include "base/strings/string16.h" -#include "base/strings/string_number_conversions.h" -#include "base/strings/string_util.h" -#include "components/policy/core/browser/configuration_policy_pref_store.h" -#include "components/policy/core/browser/policy_error_map.h" -#include "components/policy/core/common/policy_map.h" -#include "grit/component_strings.h" -#include "url/gurl.h" - -namespace policy { - -// ConfigurationPolicyHandler implementation ----------------------------------- - -// static -std::string ConfigurationPolicyHandler::ValueTypeToString(Value::Type type) { - static const char* strings[] = { - "null", - "boolean", - "integer", - "double", - "string", - "binary", - "dictionary", - "list" - }; - CHECK(static_cast<size_t>(type) < arraysize(strings)); - return std::string(strings[type]); -} - -ConfigurationPolicyHandler::ConfigurationPolicyHandler() { -} - -ConfigurationPolicyHandler::~ConfigurationPolicyHandler() { -} - -void ConfigurationPolicyHandler::PrepareForDisplaying( - PolicyMap* policies) const {} - - -// TypeCheckingPolicyHandler implementation ------------------------------------ - -TypeCheckingPolicyHandler::TypeCheckingPolicyHandler( - const char* policy_name, - Value::Type value_type) - : policy_name_(policy_name), - value_type_(value_type) { -} - -TypeCheckingPolicyHandler::~TypeCheckingPolicyHandler() { -} - -const char* TypeCheckingPolicyHandler::policy_name() const { - return policy_name_; -} - -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.GetValue(policy_name_); - if (*value && !(*value)->IsType(value_type_)) { - errors->AddError(policy_name_, - IDS_POLICY_TYPE_ERROR, - ValueTypeToString(value_type_)); - return false; - } - return true; -} - - -// IntRangePolicyHandlerBase implementation ------------------------------------ - -IntRangePolicyHandlerBase::IntRangePolicyHandlerBase( - const char* policy_name, - int min, - int max, - bool clamp) - : TypeCheckingPolicyHandler(policy_name, base::Value::TYPE_INTEGER), - min_(min), - max_(max), - clamp_(clamp) { -} - -bool IntRangePolicyHandlerBase::CheckPolicySettings(const PolicyMap& policies, - PolicyErrorMap* errors) { - const base::Value* value; - return CheckAndGetValue(policies, errors, &value) && - EnsureInRange(value, NULL, errors); -} - -IntRangePolicyHandlerBase::~IntRangePolicyHandlerBase() { -} - -bool IntRangePolicyHandlerBase::EnsureInRange(const base::Value* input, - int* output, - PolicyErrorMap* errors) { - if (!input) - return true; - - int value; - if (!input->GetAsInteger(&value)) { - NOTREACHED(); - return false; - } - - if (value < min_ || value > max_) { - if (errors) { - errors->AddError(policy_name(), - IDS_POLICY_OUT_OF_RANGE_ERROR, - base::IntToString(value)); - } - - if (!clamp_) - return false; - - value = std::min(std::max(value, min_), max_); - } - - if (output) - *output = value; - return true; -} - - -// StringToIntEnumListPolicyHandler implementation ----------------------------- - -StringToIntEnumListPolicyHandler::StringToIntEnumListPolicyHandler( - const char* policy_name, - const char* pref_path, - const MappingEntry* mapping_begin, - const MappingEntry* mapping_end) - : TypeCheckingPolicyHandler(policy_name, base::Value::TYPE_LIST), - pref_path_(pref_path), - mapping_begin_(mapping_begin), - mapping_end_(mapping_end) {} - -bool StringToIntEnumListPolicyHandler::CheckPolicySettings( - const PolicyMap& policies, - PolicyErrorMap* errors) { - const base::Value* value; - return CheckAndGetValue(policies, errors, &value) && - Convert(value, NULL, errors); -} - -void StringToIntEnumListPolicyHandler::ApplyPolicySettings( - const PolicyMap& policies, - PrefValueMap* prefs) { - if (!pref_path_) - return; - const base::Value* value = policies.GetValue(policy_name()); - scoped_ptr<base::ListValue> list(new base::ListValue()); - if (value && Convert(value, list.get(), NULL)) - prefs->SetValue(pref_path_, list.release()); -} - -bool StringToIntEnumListPolicyHandler::Convert(const base::Value* input, - base::ListValue* output, - PolicyErrorMap* errors) { - if (!input) - return true; - - const base::ListValue* list_value = NULL; - if (!input->GetAsList(&list_value)) { - NOTREACHED(); - return false; - } - - for (base::ListValue::const_iterator entry(list_value->begin()); - entry != list_value->end(); ++entry) { - std::string entry_value; - if (!(*entry)->GetAsString(&entry_value)) { - if (errors) { - errors->AddError(policy_name(), - entry - list_value->begin(), - IDS_POLICY_TYPE_ERROR, - ValueTypeToString(base::Value::TYPE_STRING)); - } - continue; - } - bool found = false; - for (const MappingEntry* mapping_entry(mapping_begin_); - mapping_entry != mapping_end_; ++mapping_entry) { - if (mapping_entry->enum_value == entry_value) { - found = true; - if (output) - output->AppendInteger(mapping_entry->int_value); - break; - } - } - if (!found) { - if (errors) { - errors->AddError(policy_name(), - entry - list_value->begin(), - IDS_POLICY_OUT_OF_RANGE_ERROR); - } - } - } - - return true; -} - - -// IntRangePolicyHandler implementation ---------------------------------------- - -IntRangePolicyHandler::IntRangePolicyHandler(const char* policy_name, - const char* pref_path, - int min, - int max, - bool clamp) - : IntRangePolicyHandlerBase(policy_name, min, max, clamp), - pref_path_(pref_path) { -} - -IntRangePolicyHandler::~IntRangePolicyHandler() { -} - -void IntRangePolicyHandler::ApplyPolicySettings(const PolicyMap& policies, - PrefValueMap* prefs) { - if (!pref_path_) - return; - const base::Value* value = policies.GetValue(policy_name()); - int value_in_range; - if (value && EnsureInRange(value, &value_in_range, NULL)) { - prefs->SetValue(pref_path_, - base::Value::CreateIntegerValue(value_in_range)); - } -} - - -// IntPercentageToDoublePolicyHandler implementation --------------------------- - -IntPercentageToDoublePolicyHandler::IntPercentageToDoublePolicyHandler( - const char* policy_name, - const char* pref_path, - int min, - int max, - bool clamp) - : IntRangePolicyHandlerBase(policy_name, min, max, clamp), - pref_path_(pref_path) { -} - -IntPercentageToDoublePolicyHandler::~IntPercentageToDoublePolicyHandler() { -} - -void IntPercentageToDoublePolicyHandler::ApplyPolicySettings( - const PolicyMap& policies, - PrefValueMap* prefs) { - if (!pref_path_) - return; - const base::Value* value = policies.GetValue(policy_name()); - int percentage; - if (value && EnsureInRange(value, &percentage, NULL)) { - prefs->SetValue(pref_path_, base::Value::CreateDoubleValue( - static_cast<double>(percentage) / 100.)); - } -} - - -// SimplePolicyHandler implementation ------------------------------------------ - -SimplePolicyHandler::SimplePolicyHandler( - const char* policy_name, - const char* pref_path, - Value::Type value_type) - : TypeCheckingPolicyHandler(policy_name, value_type), - pref_path_(pref_path) { -} - -SimplePolicyHandler::~SimplePolicyHandler() { -} - -void SimplePolicyHandler::ApplyPolicySettings(const PolicyMap& policies, - PrefValueMap* prefs) { - if (!pref_path_) - return; - const Value* value = policies.GetValue(policy_name()); - if (value) - prefs->SetValue(pref_path_, value->DeepCopy()); -} - -} // namespace policy |