Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Side by Side Diff: chrome/browser/policy/device_policy_cache.cc

Issue 10388254: Introduce a device setting controlling allowed connection types for AU. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase and fix some bugs. Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 11 matching lines...) Expand all
22 #include "chrome/browser/policy/app_pack_updater.h" 22 #include "chrome/browser/policy/app_pack_updater.h"
23 #include "chrome/browser/policy/cloud_policy_data_store.h" 23 #include "chrome/browser/policy/cloud_policy_data_store.h"
24 #include "chrome/browser/policy/enterprise_install_attributes.h" 24 #include "chrome/browser/policy/enterprise_install_attributes.h"
25 #include "chrome/browser/policy/enterprise_metrics.h" 25 #include "chrome/browser/policy/enterprise_metrics.h"
26 #include "chrome/browser/policy/policy_map.h" 26 #include "chrome/browser/policy/policy_map.h"
27 #include "chrome/browser/policy/proto/device_management_backend.pb.h" 27 #include "chrome/browser/policy/proto/device_management_backend.pb.h"
28 #include "chrome/browser/policy/proto/device_management_local.pb.h" 28 #include "chrome/browser/policy/proto/device_management_local.pb.h"
29 #include "chromeos/dbus/dbus_thread_manager.h" 29 #include "chromeos/dbus/dbus_thread_manager.h"
30 #include "chromeos/dbus/update_engine_client.h" 30 #include "chromeos/dbus/update_engine_client.h"
31 #include "policy/policy_constants.h" 31 #include "policy/policy_constants.h"
32 #include "third_party/cros_system_api/dbus/service_constants.h"
32 33
34 using google::protobuf::RepeatedField;
33 using google::protobuf::RepeatedPtrField; 35 using google::protobuf::RepeatedPtrField;
34 36
35 namespace em = enterprise_management; 37 namespace em = enterprise_management;
36 38
37 namespace { 39 namespace {
38 40
39 // Stores policy, updates the owner key if required and reports the status 41 // Stores policy, updates the owner key if required and reports the status
40 // through a callback. 42 // through a callback.
41 class StorePolicyOperation : public chromeos::OwnerManager::KeyUpdateDelegate { 43 class StorePolicyOperation : public chromeos::OwnerManager::KeyUpdateDelegate {
42 public: 44 public:
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 if (value < std::numeric_limits<int>::min() || 107 if (value < std::numeric_limits<int>::min() ||
106 value > std::numeric_limits<int>::max()) { 108 value > std::numeric_limits<int>::max()) {
107 LOG(WARNING) << "Integer value " << value 109 LOG(WARNING) << "Integer value " << value
108 << " out of numeric limits, ignoring."; 110 << " out of numeric limits, ignoring.";
109 return NULL; 111 return NULL;
110 } 112 }
111 113
112 return Value::CreateIntegerValue(static_cast<int>(value)); 114 return Value::CreateIntegerValue(static_cast<int>(value));
113 } 115 }
114 116
117 Value* DecodeConnectionType(int value) {
118 static const char* const kConnectionTypes[] = {
119 flimflam::kTypeEthernet,
120 flimflam::kTypeWifi,
121 flimflam::kTypeWimax,
122 flimflam::kTypeBluetooth,
123 flimflam::kTypeCellular,
124 };
125
126 if (value < 0 || value >= static_cast<int>(arraysize(kConnectionTypes)))
127 return NULL;
128
129 return Value::CreateStringValue(kConnectionTypes[value]);
130 }
131
115 } // namespace 132 } // namespace
116 133
117 namespace policy { 134 namespace policy {
118 135
119 DevicePolicyCache::DevicePolicyCache( 136 DevicePolicyCache::DevicePolicyCache(
120 CloudPolicyDataStore* data_store, 137 CloudPolicyDataStore* data_store,
121 EnterpriseInstallAttributes* install_attributes) 138 EnterpriseInstallAttributes* install_attributes)
122 : data_store_(data_store), 139 : data_store_(data_store),
123 install_attributes_(install_attributes), 140 install_attributes_(install_attributes),
124 signed_settings_helper_(chromeos::SignedSettingsHelper::Get()), 141 signed_settings_helper_(chromeos::SignedSettingsHelper::Get()),
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 } 366 }
350 367
351 void DevicePolicyCache::DecodeDevicePolicy( 368 void DevicePolicyCache::DecodeDevicePolicy(
352 const em::ChromeDeviceSettingsProto& policy, 369 const em::ChromeDeviceSettingsProto& policy,
353 PolicyMap* policies) { 370 PolicyMap* policies) {
354 // Decode the various groups of policies. 371 // Decode the various groups of policies.
355 DecodeLoginPolicies(policy, policies); 372 DecodeLoginPolicies(policy, policies);
356 DecodeKioskPolicies(policy, policies, install_attributes_); 373 DecodeKioskPolicies(policy, policies, install_attributes_);
357 DecodeNetworkPolicies(policy, policies, install_attributes_); 374 DecodeNetworkPolicies(policy, policies, install_attributes_);
358 DecodeReportingPolicies(policy, policies); 375 DecodeReportingPolicies(policy, policies);
376 DecodeAutoUpdatePolicies(policy, policies);
359 DecodeGenericPolicies(policy, policies); 377 DecodeGenericPolicies(policy, policies);
360 } 378 }
361 379
362 // static 380 // static
363 void DevicePolicyCache::DecodeLoginPolicies( 381 void DevicePolicyCache::DecodeLoginPolicies(
364 const em::ChromeDeviceSettingsProto& policy, 382 const em::ChromeDeviceSettingsProto& policy,
365 PolicyMap* policies) { 383 PolicyMap* policies) {
366 if (policy.has_guest_mode_enabled()) { 384 if (policy.has_guest_mode_enabled()) {
367 const em::GuestModeEnabledProto& container(policy.guest_mode_enabled()); 385 const em::GuestModeEnabledProto& container(policy.guest_mode_enabled());
368 if (container.has_guest_mode_enabled()) { 386 if (container.has_guest_mode_enabled()) {
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 if (container.has_report_location()) { 600 if (container.has_report_location()) {
583 policies->Set(key::kReportDeviceLocation, 601 policies->Set(key::kReportDeviceLocation,
584 POLICY_LEVEL_MANDATORY, 602 POLICY_LEVEL_MANDATORY,
585 POLICY_SCOPE_MACHINE, 603 POLICY_SCOPE_MACHINE,
586 Value::CreateBooleanValue(container.report_location())); 604 Value::CreateBooleanValue(container.report_location()));
587 } 605 }
588 } 606 }
589 } 607 }
590 608
591 // static 609 // static
592 void DevicePolicyCache::DecodeGenericPolicies( 610 void DevicePolicyCache::DecodeAutoUpdatePolicies(
593 const em::ChromeDeviceSettingsProto& policy, 611 const em::ChromeDeviceSettingsProto& policy,
594 PolicyMap* policies) { 612 PolicyMap* policies) {
595 if (policy.has_device_policy_refresh_rate()) {
596 const em::DevicePolicyRefreshRateProto& container(
597 policy.device_policy_refresh_rate());
598 if (container.has_device_policy_refresh_rate()) {
599 policies->Set(key::kDevicePolicyRefreshRate,
600 POLICY_LEVEL_MANDATORY,
601 POLICY_SCOPE_MACHINE,
602 DecodeIntegerValue(container.device_policy_refresh_rate()));
603 }
604 }
605
606 if (policy.has_metrics_enabled()) {
607 const em::MetricsEnabledProto& container(policy.metrics_enabled());
608 if (container.has_metrics_enabled()) {
609 policies->Set(key::kDeviceMetricsReportingEnabled,
610 POLICY_LEVEL_MANDATORY,
611 POLICY_SCOPE_MACHINE,
612 Value::CreateBooleanValue(container.metrics_enabled()));
613 }
614 }
615
616 if (policy.has_release_channel()) { 613 if (policy.has_release_channel()) {
617 const em::ReleaseChannelProto& container(policy.release_channel()); 614 const em::ReleaseChannelProto& container(policy.release_channel());
618 if (container.has_release_channel()) { 615 if (container.has_release_channel()) {
619 std::string channel(container.release_channel()); 616 std::string channel(container.release_channel());
620 policies->Set(key::kChromeOsReleaseChannel, 617 policies->Set(key::kChromeOsReleaseChannel,
621 POLICY_LEVEL_MANDATORY, 618 POLICY_LEVEL_MANDATORY,
622 POLICY_SCOPE_MACHINE, 619 POLICY_SCOPE_MACHINE,
623 Value::CreateStringValue(channel)); 620 Value::CreateStringValue(channel));
624 // TODO(dubroy): Once http://crosbug.com/17015 is implemented, we won't 621 // TODO(dubroy): Once http://crosbug.com/17015 is implemented, we won't
625 // have to pass the channel in here, only ping the update engine to tell 622 // have to pass the channel in here, only ping the update engine to tell
(...skipping 19 matching lines...) Expand all
645 Value::CreateBooleanValue(container.update_disabled())); 642 Value::CreateBooleanValue(container.update_disabled()));
646 } 643 }
647 644
648 if (container.has_target_version_prefix()) { 645 if (container.has_target_version_prefix()) {
649 policies->Set(key::kDeviceTargetVersionPrefix, 646 policies->Set(key::kDeviceTargetVersionPrefix,
650 POLICY_LEVEL_MANDATORY, 647 POLICY_LEVEL_MANDATORY,
651 POLICY_SCOPE_MACHINE, 648 POLICY_SCOPE_MACHINE,
652 Value::CreateStringValue( 649 Value::CreateStringValue(
653 container.target_version_prefix())); 650 container.target_version_prefix()));
654 } 651 }
652
653 // target_version_display_name is not actually a policy, but a display
654 // string for target_version_prefix, so we ignore it.
655
656 if (container.has_scatter_factor_in_seconds()) {
657 policies->Set(key::kDeviceUpdateScatterFactor,
658 POLICY_LEVEL_MANDATORY,
659 POLICY_SCOPE_MACHINE,
660 Value::CreateIntegerValue(
661 container.scatter_factor_in_seconds()));
662 }
663
664 if (container.allowed_connection_types_size()) {
665 ListValue* allowed_connection_types = new ListValue();
666 RepeatedField<int>::const_iterator entry;
667 for (entry = container.allowed_connection_types().begin();
668 entry != container.allowed_connection_types().end();
669 ++entry) {
670 base::Value* value = DecodeConnectionType(*entry);
671 if (value)
672 allowed_connection_types->Append(value);
673 }
674 policies->Set(key::kDeviceUpdateAllowedConnectionTypes,
675 POLICY_LEVEL_MANDATORY,
676 POLICY_SCOPE_MACHINE,
677 allowed_connection_types);
678 }
679 }
680 }
681
682 // static
683 void DevicePolicyCache::DecodeGenericPolicies(
684 const em::ChromeDeviceSettingsProto& policy,
685 PolicyMap* policies) {
686 if (policy.has_device_policy_refresh_rate()) {
687 const em::DevicePolicyRefreshRateProto& container(
688 policy.device_policy_refresh_rate());
689 if (container.has_device_policy_refresh_rate()) {
690 policies->Set(key::kDevicePolicyRefreshRate,
691 POLICY_LEVEL_MANDATORY,
692 POLICY_SCOPE_MACHINE,
693 DecodeIntegerValue(container.device_policy_refresh_rate()));
694 }
695 }
696
697 if (policy.has_metrics_enabled()) {
698 const em::MetricsEnabledProto& container(policy.metrics_enabled());
699 if (container.has_metrics_enabled()) {
700 policies->Set(key::kDeviceMetricsReportingEnabled,
701 POLICY_LEVEL_MANDATORY,
702 POLICY_SCOPE_MACHINE,
703 Value::CreateBooleanValue(container.metrics_enabled()));
704 }
655 } 705 }
656 706
657 if (policy.has_start_up_urls()) { 707 if (policy.has_start_up_urls()) {
658 const em::StartUpUrlsProto& container(policy.start_up_urls()); 708 const em::StartUpUrlsProto& container(policy.start_up_urls());
659 if (container.start_up_urls_size()) { 709 if (container.start_up_urls_size()) {
660 ListValue* urls = new ListValue(); 710 ListValue* urls = new ListValue();
661 RepeatedPtrField<std::string>::const_iterator entry; 711 RepeatedPtrField<std::string>::const_iterator entry;
662 for (entry = container.start_up_urls().begin(); 712 for (entry = container.start_up_urls().begin();
663 entry != container.start_up_urls().end(); 713 entry != container.start_up_urls().end();
664 ++entry) { 714 ++entry) {
665 urls->Append(Value::CreateStringValue(*entry)); 715 urls->Append(Value::CreateStringValue(*entry));
666 } 716 }
667 policies->Set(key::kDeviceStartUpUrls, 717 policies->Set(key::kDeviceStartUpUrls,
668 POLICY_LEVEL_MANDATORY, 718 POLICY_LEVEL_MANDATORY,
669 POLICY_SCOPE_MACHINE, 719 POLICY_SCOPE_MACHINE,
670 urls); 720 urls);
671 } 721 }
672 } 722 }
673 } 723 }
674 724
675 } // namespace policy 725 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/device_policy_cache.h ('k') | chrome/browser/policy/proto/chrome_device_policy.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698