| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #include "chrome/browser/policy/configuration_policy_handler.h" | 5 #include "chrome/browser/policy/configuration_policy_handler.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 #include "chrome/browser/prefs/proxy_config_dictionary.h" | 24 #include "chrome/browser/prefs/proxy_config_dictionary.h" |
| 25 #include "chrome/browser/prefs/proxy_prefs.h" | 25 #include "chrome/browser/prefs/proxy_prefs.h" |
| 26 #include "chrome/browser/search_engines/search_terms_data.h" | 26 #include "chrome/browser/search_engines/search_terms_data.h" |
| 27 #include "chrome/browser/search_engines/template_url.h" | 27 #include "chrome/browser/search_engines/template_url.h" |
| 28 #include "chrome/common/content_settings.h" | 28 #include "chrome/common/content_settings.h" |
| 29 #include "chrome/common/pref_names.h" | 29 #include "chrome/common/pref_names.h" |
| 30 #include "grit/generated_resources.h" | 30 #include "grit/generated_resources.h" |
| 31 #include "policy/configuration_policy_type.h" | 31 #include "policy/configuration_policy_type.h" |
| 32 #include "policy/policy_constants.h" | 32 #include "policy/policy_constants.h" |
| 33 | 33 |
| 34 #if defined(OS_CHROMEOS) |
| 35 #include "chrome/browser/policy/configuration_policy_handler_chromeos.h" |
| 36 #endif |
| 37 |
| 34 namespace policy { | 38 namespace policy { |
| 35 | 39 |
| 36 namespace { | 40 namespace { |
| 37 | 41 |
| 38 // Implementations of ConfigurationPolicyHandler ------------------------------- | 42 // Implementations of ConfigurationPolicyHandler ------------------------------- |
| 39 | 43 |
| 40 // Abstract class derived from ConfigurationPolicyHandler that should be | |
| 41 // subclassed to handle a single policy (not a combination of policies). | |
| 42 class TypeCheckingPolicyHandler : public ConfigurationPolicyHandler { | |
| 43 public: | |
| 44 TypeCheckingPolicyHandler(ConfigurationPolicyType policy_type, | |
| 45 base::Value::Type value_type); | |
| 46 | |
| 47 // ConfigurationPolicyHandler methods: | |
| 48 virtual bool CheckPolicySettings(const PolicyMap* policies, | |
| 49 PolicyErrorMap* errors) OVERRIDE; | |
| 50 | |
| 51 protected: | |
| 52 virtual ~TypeCheckingPolicyHandler(); | |
| 53 | |
| 54 ConfigurationPolicyType policy_type() const; | |
| 55 | |
| 56 private: | |
| 57 // The ConfigurationPolicyType of the policy. | |
| 58 ConfigurationPolicyType policy_type_; | |
| 59 | |
| 60 // The type the value of the policy should have. | |
| 61 base::Value::Type value_type_; | |
| 62 | |
| 63 DISALLOW_COPY_AND_ASSIGN(TypeCheckingPolicyHandler); | |
| 64 }; | |
| 65 | |
| 66 // ConfigurationPolicyHandler for policies that map directly to a preference. | 44 // ConfigurationPolicyHandler for policies that map directly to a preference. |
| 67 class SimplePolicyHandler : public TypeCheckingPolicyHandler { | 45 class SimplePolicyHandler : public TypeCheckingPolicyHandler { |
| 68 public: | 46 public: |
| 69 SimplePolicyHandler(ConfigurationPolicyType policy_type, | 47 SimplePolicyHandler(ConfigurationPolicyType policy_type, |
| 70 base::Value::Type value_type, | 48 base::Value::Type value_type, |
| 71 const char* pref_path); | 49 const char* pref_path); |
| 72 virtual ~SimplePolicyHandler(); | 50 virtual ~SimplePolicyHandler(); |
| 73 | 51 |
| 74 // ConfigurationPolicyHandler methods: | 52 // ConfigurationPolicyHandler methods: |
| 75 virtual void ApplyPolicySettings(const PolicyMap* policies, | 53 virtual void ApplyPolicySettings(const PolicyMap* policies, |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 // Converts the deprecated ProxyServerMode policy value to a ProxyMode value | 227 // Converts the deprecated ProxyServerMode policy value to a ProxyMode value |
| 250 // and places the result in |mode_value|. Returns true if the conversion | 228 // and places the result in |mode_value|. Returns true if the conversion |
| 251 // succeeded and false otherwise. | 229 // succeeded and false otherwise. |
| 252 bool CheckProxyModeAndServerMode(const PolicyMap* policies, | 230 bool CheckProxyModeAndServerMode(const PolicyMap* policies, |
| 253 PolicyErrorMap* errors, | 231 PolicyErrorMap* errors, |
| 254 std::string* mode_value); | 232 std::string* mode_value); |
| 255 | 233 |
| 256 DISALLOW_COPY_AND_ASSIGN(ProxyPolicyHandler); | 234 DISALLOW_COPY_AND_ASSIGN(ProxyPolicyHandler); |
| 257 }; | 235 }; |
| 258 | 236 |
| 259 // | 237 // ConfigurationPolicyHandler for policies that enable/disable Javascript. |
| 260 class JavascriptPolicyHandler : public ConfigurationPolicyHandler { | 238 class JavascriptPolicyHandler : public ConfigurationPolicyHandler { |
| 261 public: | 239 public: |
| 262 JavascriptPolicyHandler(); | 240 JavascriptPolicyHandler(); |
| 263 virtual ~JavascriptPolicyHandler(); | 241 virtual ~JavascriptPolicyHandler(); |
| 264 | 242 |
| 265 // ConfigurationPolicyHandler methods: | 243 // ConfigurationPolicyHandler methods: |
| 266 virtual bool CheckPolicySettings(const PolicyMap* policies, | 244 virtual bool CheckPolicySettings(const PolicyMap* policies, |
| 267 PolicyErrorMap* errors) OVERRIDE; | 245 PolicyErrorMap* errors) OVERRIDE; |
| 268 virtual void ApplyPolicySettings(const PolicyMap* policies, | 246 virtual void ApplyPolicySettings(const PolicyMap* policies, |
| 269 PrefValueMap* prefs) OVERRIDE; | 247 PrefValueMap* prefs) OVERRIDE; |
| 270 | 248 |
| 271 private: | 249 private: |
| 272 DISALLOW_COPY_AND_ASSIGN(JavascriptPolicyHandler); | 250 DISALLOW_COPY_AND_ASSIGN(JavascriptPolicyHandler); |
| 273 }; | 251 }; |
| 274 | 252 |
| 275 | |
| 276 // Helper classes -------------------------------------------------------------- | 253 // Helper classes -------------------------------------------------------------- |
| 277 | 254 |
| 278 // Implementation of SearchTermsData just for validation. | 255 // Implementation of SearchTermsData just for validation. |
| 279 class SearchTermsDataForValidation : public SearchTermsData { | 256 class SearchTermsDataForValidation : public SearchTermsData { |
| 280 public: | 257 public: |
| 281 SearchTermsDataForValidation() {} | 258 SearchTermsDataForValidation() {} |
| 282 | 259 |
| 283 // Implementation of SearchTermsData. | 260 // Implementation of SearchTermsData. |
| 284 virtual std::string GoogleBaseURLValue() const { | 261 virtual std::string GoogleBaseURLValue() const { |
| 285 return "http://www.google.com/"; | 262 return "http://www.google.com/"; |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 "string", | 508 "string", |
| 532 "binary", | 509 "binary", |
| 533 "dictionary", | 510 "dictionary", |
| 534 "list" | 511 "list" |
| 535 }; | 512 }; |
| 536 DCHECK(static_cast<size_t>(type) < arraysize(strings)); | 513 DCHECK(static_cast<size_t>(type) < arraysize(strings)); |
| 537 return std::string(strings[type]); | 514 return std::string(strings[type]); |
| 538 } | 515 } |
| 539 | 516 |
| 540 | 517 |
| 541 // TypeCheckingPolicyHandler implementation ------------------------------------ | |
| 542 | |
| 543 TypeCheckingPolicyHandler::TypeCheckingPolicyHandler( | |
| 544 ConfigurationPolicyType policy_type, | |
| 545 Value::Type value_type) | |
| 546 : policy_type_(policy_type), | |
| 547 value_type_(value_type) { | |
| 548 } | |
| 549 | |
| 550 TypeCheckingPolicyHandler::~TypeCheckingPolicyHandler() { | |
| 551 } | |
| 552 | |
| 553 ConfigurationPolicyType TypeCheckingPolicyHandler::policy_type() const { | |
| 554 return policy_type_; | |
| 555 } | |
| 556 | |
| 557 bool TypeCheckingPolicyHandler::CheckPolicySettings(const PolicyMap* policies, | |
| 558 PolicyErrorMap* errors) { | |
| 559 const Value* value = policies->Get(policy_type_); | |
| 560 if (value && value_type_ != value->GetType()) { | |
| 561 errors->AddError(policy_type_, | |
| 562 IDS_POLICY_TYPE_ERROR, | |
| 563 ValueTypeToString(value_type_)); | |
| 564 return false; | |
| 565 } | |
| 566 return true; | |
| 567 } | |
| 568 | |
| 569 | |
| 570 // SimplePolicyHandler implementation ------------------------------------------ | 518 // SimplePolicyHandler implementation ------------------------------------------ |
| 571 | 519 |
| 572 SimplePolicyHandler::SimplePolicyHandler( | 520 SimplePolicyHandler::SimplePolicyHandler( |
| 573 ConfigurationPolicyType policy_type, | 521 ConfigurationPolicyType policy_type, |
| 574 Value::Type value_type, | 522 Value::Type value_type, |
| 575 const char* pref_path) | 523 const char* pref_path) |
| 576 : TypeCheckingPolicyHandler(policy_type, value_type), | 524 : TypeCheckingPolicyHandler(policy_type, value_type), |
| 577 pref_path_(pref_path) { | 525 pref_path_(pref_path) { |
| 578 } | 526 } |
| 579 | 527 |
| (...skipping 706 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1286 // javascript globally. | 1234 // javascript globally. |
| 1287 if (!enabled) | 1235 if (!enabled) |
| 1288 setting = CONTENT_SETTING_BLOCK; | 1236 setting = CONTENT_SETTING_BLOCK; |
| 1289 } | 1237 } |
| 1290 | 1238 |
| 1291 if (setting != CONTENT_SETTING_DEFAULT) | 1239 if (setting != CONTENT_SETTING_DEFAULT) |
| 1292 prefs->SetValue(prefs::kManagedDefaultJavaScriptSetting, | 1240 prefs->SetValue(prefs::kManagedDefaultJavaScriptSetting, |
| 1293 Value::CreateIntegerValue(setting)); | 1241 Value::CreateIntegerValue(setting)); |
| 1294 } | 1242 } |
| 1295 | 1243 |
| 1296 | |
| 1297 } // namespace | 1244 } // namespace |
| 1298 | 1245 |
| 1299 | 1246 |
| 1300 // ConfigurationPolicyHandler implementation ----------------------------------- | 1247 // ConfigurationPolicyHandler implementation ----------------------------------- |
| 1301 | 1248 |
| 1302 // static | 1249 // static |
| 1303 ConfigurationPolicyHandler::HandlerList* | 1250 ConfigurationPolicyHandler::HandlerList* |
| 1304 ConfigurationPolicyHandler::CreateHandlerList() { | 1251 ConfigurationPolicyHandler::CreateHandlerList() { |
| 1305 HandlerList* list = new HandlerList; | 1252 HandlerList* list = new HandlerList; |
| 1306 | 1253 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1317 list->push_back(new FileSelectionDialogsHandler()); | 1264 list->push_back(new FileSelectionDialogsHandler()); |
| 1318 list->push_back(new IncognitoModePolicyHandler()); | 1265 list->push_back(new IncognitoModePolicyHandler()); |
| 1319 list->push_back(new JavascriptPolicyHandler()); | 1266 list->push_back(new JavascriptPolicyHandler()); |
| 1320 list->push_back(new ProxyPolicyHandler()); | 1267 list->push_back(new ProxyPolicyHandler()); |
| 1321 list->push_back(new SyncPolicyHandler()); | 1268 list->push_back(new SyncPolicyHandler()); |
| 1322 | 1269 |
| 1323 #if !defined(OS_CHROMEOS) | 1270 #if !defined(OS_CHROMEOS) |
| 1324 list->push_back(new DownloadDirPolicyHandler()); | 1271 list->push_back(new DownloadDirPolicyHandler()); |
| 1325 #endif // !defined(OS_CHROME0S) | 1272 #endif // !defined(OS_CHROME0S) |
| 1326 | 1273 |
| 1274 #if defined(OS_CHROMEOS) |
| 1275 list->push_back( |
| 1276 new NetworkConfigurationPolicyHandler( |
| 1277 kPolicyDeviceOpenNetworkConfiguration)); |
| 1278 list->push_back( |
| 1279 new NetworkConfigurationPolicyHandler( |
| 1280 kPolicyOpenNetworkConfiguration)); |
| 1281 #endif |
| 1282 |
| 1327 return list; | 1283 return list; |
| 1328 } | 1284 } |
| 1329 | 1285 |
| 1286 // TypeCheckingPolicyHandler implementation ------------------------------------ |
| 1287 |
| 1288 TypeCheckingPolicyHandler::TypeCheckingPolicyHandler( |
| 1289 ConfigurationPolicyType policy_type, |
| 1290 Value::Type value_type) |
| 1291 : policy_type_(policy_type), |
| 1292 value_type_(value_type) { |
| 1293 } |
| 1294 |
| 1295 TypeCheckingPolicyHandler::~TypeCheckingPolicyHandler() { |
| 1296 } |
| 1297 |
| 1298 ConfigurationPolicyType TypeCheckingPolicyHandler::policy_type() const { |
| 1299 return policy_type_; |
| 1300 } |
| 1301 |
| 1302 bool TypeCheckingPolicyHandler::CheckPolicySettings(const PolicyMap* policies, |
| 1303 PolicyErrorMap* errors) { |
| 1304 const Value* value = NULL; |
| 1305 return CheckAndGetValue(policies, errors, &value); |
| 1306 } |
| 1307 |
| 1308 bool TypeCheckingPolicyHandler::CheckAndGetValue(const PolicyMap* policies, |
| 1309 PolicyErrorMap* errors, |
| 1310 const Value** value) { |
| 1311 *value = policies->Get(policy_type_); |
| 1312 if (*value && !(*value)->IsType(value_type_)) { |
| 1313 errors->AddError(policy_type_, |
| 1314 IDS_POLICY_TYPE_ERROR, |
| 1315 ValueTypeToString(value_type_)); |
| 1316 return false; |
| 1317 } |
| 1318 return true; |
| 1319 } |
| 1320 |
| 1330 } // namespace policy | 1321 } // namespace policy |
| OLD | NEW |