| Index: chrome/browser/policy/device_policy_cache.cc
|
| diff --git a/chrome/browser/policy/device_policy_cache.cc b/chrome/browser/policy/device_policy_cache.cc
|
| index 3c4bb24c158da271f038f88754fab69a12631fc3..d1b666bda7521a08129239d879550c4b942f43e2 100644
|
| --- a/chrome/browser/policy/device_policy_cache.cc
|
| +++ b/chrome/browser/policy/device_policy_cache.cc
|
| @@ -29,7 +29,9 @@
|
| #include "chromeos/dbus/dbus_thread_manager.h"
|
| #include "chromeos/dbus/update_engine_client.h"
|
| #include "policy/policy_constants.h"
|
| +#include "third_party/cros_system_api/dbus/service_constants.h"
|
|
|
| +using google::protobuf::RepeatedField;
|
| using google::protobuf::RepeatedPtrField;
|
|
|
| namespace em = enterprise_management;
|
| @@ -112,6 +114,21 @@ Value* DecodeIntegerValue(google::protobuf::int64 value) {
|
| return Value::CreateIntegerValue(static_cast<int>(value));
|
| }
|
|
|
| +Value* DecodeConnectionType(int value) {
|
| + static const char* const kConnectionTypes[] = {
|
| + flimflam::kTypeEthernet,
|
| + flimflam::kTypeWifi,
|
| + flimflam::kTypeWimax,
|
| + flimflam::kTypeBluetooth,
|
| + flimflam::kTypeCellular,
|
| + };
|
| +
|
| + if (value < 0 || value >= static_cast<int>(arraysize(kConnectionTypes)))
|
| + return NULL;
|
| +
|
| + return Value::CreateStringValue(kConnectionTypes[value]);
|
| +}
|
| +
|
| } // namespace
|
|
|
| namespace policy {
|
| @@ -356,6 +373,7 @@ void DevicePolicyCache::DecodeDevicePolicy(
|
| DecodeKioskPolicies(policy, policies, install_attributes_);
|
| DecodeNetworkPolicies(policy, policies, install_attributes_);
|
| DecodeReportingPolicies(policy, policies);
|
| + DecodeAutoUpdatePolicies(policy, policies);
|
| DecodeGenericPolicies(policy, policies);
|
| }
|
|
|
| @@ -589,30 +607,9 @@ void DevicePolicyCache::DecodeReportingPolicies(
|
| }
|
|
|
| // static
|
| -void DevicePolicyCache::DecodeGenericPolicies(
|
| +void DevicePolicyCache::DecodeAutoUpdatePolicies(
|
| const em::ChromeDeviceSettingsProto& policy,
|
| PolicyMap* policies) {
|
| - if (policy.has_device_policy_refresh_rate()) {
|
| - const em::DevicePolicyRefreshRateProto& container(
|
| - policy.device_policy_refresh_rate());
|
| - if (container.has_device_policy_refresh_rate()) {
|
| - policies->Set(key::kDevicePolicyRefreshRate,
|
| - POLICY_LEVEL_MANDATORY,
|
| - POLICY_SCOPE_MACHINE,
|
| - DecodeIntegerValue(container.device_policy_refresh_rate()));
|
| - }
|
| - }
|
| -
|
| - if (policy.has_metrics_enabled()) {
|
| - const em::MetricsEnabledProto& container(policy.metrics_enabled());
|
| - if (container.has_metrics_enabled()) {
|
| - policies->Set(key::kDeviceMetricsReportingEnabled,
|
| - POLICY_LEVEL_MANDATORY,
|
| - POLICY_SCOPE_MACHINE,
|
| - Value::CreateBooleanValue(container.metrics_enabled()));
|
| - }
|
| - }
|
| -
|
| if (policy.has_release_channel()) {
|
| const em::ReleaseChannelProto& container(policy.release_channel());
|
| if (container.has_release_channel()) {
|
| @@ -652,6 +649,59 @@ void DevicePolicyCache::DecodeGenericPolicies(
|
| Value::CreateStringValue(
|
| container.target_version_prefix()));
|
| }
|
| +
|
| + // target_version_display_name is not actually a policy, but a display
|
| + // string for target_version_prefix, so we ignore it.
|
| +
|
| + if (container.has_scatter_factor_in_seconds()) {
|
| + policies->Set(key::kDeviceUpdateScatterFactor,
|
| + POLICY_LEVEL_MANDATORY,
|
| + POLICY_SCOPE_MACHINE,
|
| + Value::CreateIntegerValue(
|
| + container.scatter_factor_in_seconds()));
|
| + }
|
| +
|
| + if (container.allowed_connection_types_size()) {
|
| + ListValue* allowed_connection_types = new ListValue();
|
| + RepeatedField<int>::const_iterator entry;
|
| + for (entry = container.allowed_connection_types().begin();
|
| + entry != container.allowed_connection_types().end();
|
| + ++entry) {
|
| + base::Value* value = DecodeConnectionType(*entry);
|
| + if (value)
|
| + allowed_connection_types->Append(value);
|
| + }
|
| + policies->Set(key::kDeviceUpdateAllowedConnectionTypes,
|
| + POLICY_LEVEL_MANDATORY,
|
| + POLICY_SCOPE_MACHINE,
|
| + allowed_connection_types);
|
| + }
|
| + }
|
| +}
|
| +
|
| +// static
|
| +void DevicePolicyCache::DecodeGenericPolicies(
|
| + const em::ChromeDeviceSettingsProto& policy,
|
| + PolicyMap* policies) {
|
| + if (policy.has_device_policy_refresh_rate()) {
|
| + const em::DevicePolicyRefreshRateProto& container(
|
| + policy.device_policy_refresh_rate());
|
| + if (container.has_device_policy_refresh_rate()) {
|
| + policies->Set(key::kDevicePolicyRefreshRate,
|
| + POLICY_LEVEL_MANDATORY,
|
| + POLICY_SCOPE_MACHINE,
|
| + DecodeIntegerValue(container.device_policy_refresh_rate()));
|
| + }
|
| + }
|
| +
|
| + if (policy.has_metrics_enabled()) {
|
| + const em::MetricsEnabledProto& container(policy.metrics_enabled());
|
| + if (container.has_metrics_enabled()) {
|
| + policies->Set(key::kDeviceMetricsReportingEnabled,
|
| + POLICY_LEVEL_MANDATORY,
|
| + POLICY_SCOPE_MACHINE,
|
| + Value::CreateBooleanValue(container.metrics_enabled()));
|
| + }
|
| }
|
|
|
| if (policy.has_start_up_urls()) {
|
|
|