| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/device_policy_cache.h" | 5 #include "chrome/browser/policy/device_policy_cache.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 SetReady(); | 340 SetReady(); |
| 341 } | 341 } |
| 342 | 342 |
| 343 void DevicePolicyCache::CheckFetchingDone() { | 343 void DevicePolicyCache::CheckFetchingDone() { |
| 344 if (policy_fetch_pending_) { | 344 if (policy_fetch_pending_) { |
| 345 CloudPolicyCacheBase::SetFetchingDone(); | 345 CloudPolicyCacheBase::SetFetchingDone(); |
| 346 policy_fetch_pending_ = false; | 346 policy_fetch_pending_ = false; |
| 347 } | 347 } |
| 348 } | 348 } |
| 349 | 349 |
| 350 void DevicePolicyCache::DecodeDevicePolicy( |
| 351 const em::ChromeDeviceSettingsProto& policy, |
| 352 PolicyMap* policies) { |
| 353 // Decode the various groups of policies. |
| 354 DecodeLoginPolicies(policy, policies); |
| 355 DecodeKioskPolicies(policy, policies); |
| 356 DecodeNetworkPolicies(policy, policies, install_attributes_); |
| 357 DecodeReportingPolicies(policy, policies); |
| 358 DecodeGenericPolicies(policy, policies); |
| 359 } |
| 360 |
| 350 // static | 361 // static |
| 351 void DevicePolicyCache::DecodeLoginPolicies( | 362 void DevicePolicyCache::DecodeLoginPolicies( |
| 352 const em::ChromeDeviceSettingsProto& policy, | 363 const em::ChromeDeviceSettingsProto& policy, |
| 353 PolicyMap* policies) { | 364 PolicyMap* policies) { |
| 354 if (policy.has_guest_mode_enabled()) { | 365 if (policy.has_guest_mode_enabled()) { |
| 355 const em::GuestModeEnabledProto& container(policy.guest_mode_enabled()); | 366 const em::GuestModeEnabledProto& container(policy.guest_mode_enabled()); |
| 356 if (container.has_guest_mode_enabled()) { | 367 if (container.has_guest_mode_enabled()) { |
| 357 policies->Set(key::kDeviceGuestModeEnabled, | 368 policies->Set(key::kDeviceGuestModeEnabled, |
| 358 POLICY_LEVEL_MANDATORY, | 369 POLICY_LEVEL_MANDATORY, |
| 359 POLICY_SCOPE_MACHINE, | 370 POLICY_SCOPE_MACHINE, |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 466 policies->Set(key::kDeviceAppPack, | 477 policies->Set(key::kDeviceAppPack, |
| 467 POLICY_LEVEL_MANDATORY, | 478 POLICY_LEVEL_MANDATORY, |
| 468 POLICY_SCOPE_MACHINE, | 479 POLICY_SCOPE_MACHINE, |
| 469 app_pack_list); | 480 app_pack_list); |
| 470 } | 481 } |
| 471 } | 482 } |
| 472 | 483 |
| 473 // static | 484 // static |
| 474 void DevicePolicyCache::DecodeNetworkPolicies( | 485 void DevicePolicyCache::DecodeNetworkPolicies( |
| 475 const em::ChromeDeviceSettingsProto& policy, | 486 const em::ChromeDeviceSettingsProto& policy, |
| 476 PolicyMap* policies) { | 487 PolicyMap* policies, |
| 488 EnterpriseInstallAttributes* install_attributes) { |
| 477 if (policy.has_device_proxy_settings()) { | 489 if (policy.has_device_proxy_settings()) { |
| 478 const em::DeviceProxySettingsProto& container( | 490 const em::DeviceProxySettingsProto& container( |
| 479 policy.device_proxy_settings()); | 491 policy.device_proxy_settings()); |
| 480 scoped_ptr<DictionaryValue> proxy_settings(new DictionaryValue); | 492 scoped_ptr<DictionaryValue> proxy_settings(new DictionaryValue); |
| 481 if (container.has_proxy_mode()) | 493 if (container.has_proxy_mode()) |
| 482 proxy_settings->SetString(key::kProxyMode, container.proxy_mode()); | 494 proxy_settings->SetString(key::kProxyMode, container.proxy_mode()); |
| 483 if (container.has_proxy_server()) | 495 if (container.has_proxy_server()) |
| 484 proxy_settings->SetString(key::kProxyServer, container.proxy_server()); | 496 proxy_settings->SetString(key::kProxyServer, container.proxy_server()); |
| 485 if (container.has_proxy_pac_url()) | 497 if (container.has_proxy_pac_url()) |
| 486 proxy_settings->SetString(key::kProxyPacUrl, container.proxy_pac_url()); | 498 proxy_settings->SetString(key::kProxyPacUrl, container.proxy_pac_url()); |
| 487 if (container.has_proxy_bypass_list()) { | 499 if (container.has_proxy_bypass_list()) { |
| 488 proxy_settings->SetString(key::kProxyBypassList, | 500 proxy_settings->SetString(key::kProxyBypassList, |
| 489 container.proxy_bypass_list()); | 501 container.proxy_bypass_list()); |
| 490 } | 502 } |
| 503 |
| 504 // Figure out the level. Proxy policy is mandatory in kiosk mode. |
| 505 PolicyLevel level = POLICY_LEVEL_RECOMMENDED; |
| 506 if (install_attributes->GetMode() == DEVICE_MODE_KIOSK) |
| 507 level = POLICY_LEVEL_MANDATORY; |
| 508 |
| 491 if (!proxy_settings->empty()) { | 509 if (!proxy_settings->empty()) { |
| 492 policies->Set(key::kProxySettings, | 510 policies->Set(key::kProxySettings, |
| 493 POLICY_LEVEL_RECOMMENDED, | 511 level, |
| 494 POLICY_SCOPE_MACHINE, | 512 POLICY_SCOPE_MACHINE, |
| 495 proxy_settings.release()); | 513 proxy_settings.release()); |
| 496 } | 514 } |
| 497 } | 515 } |
| 498 | 516 |
| 499 if (policy.has_data_roaming_enabled()) { | 517 if (policy.has_data_roaming_enabled()) { |
| 500 const em::DataRoamingEnabledProto& container(policy.data_roaming_enabled()); | 518 const em::DataRoamingEnabledProto& container(policy.data_roaming_enabled()); |
| 501 if (container.has_data_roaming_enabled()) { | 519 if (container.has_data_roaming_enabled()) { |
| 502 policies->Set(key::kDeviceDataRoamingEnabled, | 520 policies->Set(key::kDeviceDataRoamingEnabled, |
| 503 POLICY_LEVEL_MANDATORY, | 521 POLICY_LEVEL_MANDATORY, |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 629 urls->Append(Value::CreateStringValue(*entry)); | 647 urls->Append(Value::CreateStringValue(*entry)); |
| 630 } | 648 } |
| 631 policies->Set(key::kDeviceStartUpUrls, | 649 policies->Set(key::kDeviceStartUpUrls, |
| 632 POLICY_LEVEL_MANDATORY, | 650 POLICY_LEVEL_MANDATORY, |
| 633 POLICY_SCOPE_MACHINE, | 651 POLICY_SCOPE_MACHINE, |
| 634 urls); | 652 urls); |
| 635 } | 653 } |
| 636 } | 654 } |
| 637 } | 655 } |
| 638 | 656 |
| 639 // static | |
| 640 void DevicePolicyCache::DecodeDevicePolicy( | |
| 641 const em::ChromeDeviceSettingsProto& policy, | |
| 642 PolicyMap* policies) { | |
| 643 // Decode the various groups of policies. | |
| 644 DecodeLoginPolicies(policy, policies); | |
| 645 DecodeKioskPolicies(policy, policies); | |
| 646 DecodeNetworkPolicies(policy, policies); | |
| 647 DecodeReportingPolicies(policy, policies); | |
| 648 DecodeGenericPolicies(policy, policies); | |
| 649 } | |
| 650 | |
| 651 } // namespace policy | 657 } // namespace policy |
| OLD | NEW |