| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chromeos/network/managed_network_configuration_handler_impl.h" | 5 #include "chromeos/network/managed_network_configuration_handler_impl.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 #include "chromeos/network/network_ui_data.h" | 31 #include "chromeos/network/network_ui_data.h" |
| 32 #include "chromeos/network/network_util.h" | 32 #include "chromeos/network/network_util.h" |
| 33 #include "chromeos/network/onc/onc_merger.h" | 33 #include "chromeos/network/onc/onc_merger.h" |
| 34 #include "chromeos/network/onc/onc_signature.h" | 34 #include "chromeos/network/onc/onc_signature.h" |
| 35 #include "chromeos/network/onc/onc_translator.h" | 35 #include "chromeos/network/onc/onc_translator.h" |
| 36 #include "chromeos/network/onc/onc_utils.h" | 36 #include "chromeos/network/onc/onc_utils.h" |
| 37 #include "chromeos/network/onc/onc_validator.h" | 37 #include "chromeos/network/onc/onc_validator.h" |
| 38 #include "chromeos/network/policy_util.h" | 38 #include "chromeos/network/policy_util.h" |
| 39 #include "chromeos/network/prohibited_technologies_handler.h" | 39 #include "chromeos/network/prohibited_technologies_handler.h" |
| 40 #include "chromeos/network/shill_property_util.h" | 40 #include "chromeos/network/shill_property_util.h" |
| 41 #include "chromeos/network/tether_constants.h" |
| 41 #include "components/onc/onc_constants.h" | 42 #include "components/onc/onc_constants.h" |
| 42 #include "third_party/cros_system_api/dbus/service_constants.h" | 43 #include "third_party/cros_system_api/dbus/service_constants.h" |
| 43 | 44 |
| 44 namespace chromeos { | 45 namespace chromeos { |
| 45 | 46 |
| 46 namespace { | 47 namespace { |
| 47 | 48 |
| 48 using GuidToPolicyMap = ManagedNetworkConfigurationHandler::GuidToPolicyMap; | 49 using GuidToPolicyMap = ManagedNetworkConfigurationHandler::GuidToPolicyMap; |
| 49 | 50 |
| 50 // These are error strings used for error callbacks. None of these error | 51 // These are error strings used for error callbacks. None of these error |
| (...skipping 29 matching lines...) Expand all Loading... |
| 80 } | 81 } |
| 81 | 82 |
| 82 const base::DictionaryValue* GetByGUID(const GuidToPolicyMap& policies, | 83 const base::DictionaryValue* GetByGUID(const GuidToPolicyMap& policies, |
| 83 const std::string& guid) { | 84 const std::string& guid) { |
| 84 auto it = policies.find(guid); | 85 auto it = policies.find(guid); |
| 85 if (it == policies.end()) | 86 if (it == policies.end()) |
| 86 return NULL; | 87 return NULL; |
| 87 return it->second.get(); | 88 return it->second.get(); |
| 88 } | 89 } |
| 89 | 90 |
| 91 bool IsTetherShillDictionary(const base::DictionaryValue& dict) { |
| 92 std::string network_type; |
| 93 return dict.GetStringWithoutPathExpansion(shill::kTypeProperty, |
| 94 &network_type) && |
| 95 network_type == kTypeTether; |
| 96 } |
| 97 |
| 90 } // namespace | 98 } // namespace |
| 91 | 99 |
| 92 struct ManagedNetworkConfigurationHandlerImpl::Policies { | 100 struct ManagedNetworkConfigurationHandlerImpl::Policies { |
| 93 ~Policies(); | 101 ~Policies(); |
| 94 | 102 |
| 95 GuidToPolicyMap per_network_config; | 103 GuidToPolicyMap per_network_config; |
| 96 base::DictionaryValue global_network_config; | 104 base::DictionaryValue global_network_config; |
| 97 }; | 105 }; |
| 98 | 106 |
| 99 ManagedNetworkConfigurationHandlerImpl::Policies::~Policies() {} | 107 ManagedNetworkConfigurationHandlerImpl::Policies::~Policies() {} |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 const std::string& userhash, | 144 const std::string& userhash, |
| 137 const network_handler::DictionaryResultCallback& callback, | 145 const network_handler::DictionaryResultCallback& callback, |
| 138 const network_handler::ErrorCallback& error_callback, | 146 const network_handler::ErrorCallback& error_callback, |
| 139 const std::string& service_path, | 147 const std::string& service_path, |
| 140 std::unique_ptr<base::DictionaryValue> shill_properties) { | 148 std::unique_ptr<base::DictionaryValue> shill_properties) { |
| 141 std::string profile_path; | 149 std::string profile_path; |
| 142 shill_properties->GetStringWithoutPathExpansion(shill::kProfileProperty, | 150 shill_properties->GetStringWithoutPathExpansion(shill::kProfileProperty, |
| 143 &profile_path); | 151 &profile_path); |
| 144 const NetworkProfile* profile = | 152 const NetworkProfile* profile = |
| 145 network_profile_handler_->GetProfileForPath(profile_path); | 153 network_profile_handler_->GetProfileForPath(profile_path); |
| 146 if (!profile) | 154 if (!profile && !IsTetherShillDictionary(*shill_properties)) { |
| 155 // Tether networks are not expected to have an associated profile; only |
| 156 // log an error if the provided properties do not correspond to a |
| 157 // Tether network. |
| 147 NET_LOG_ERROR("No profile for service: " + profile_path, service_path); | 158 NET_LOG_ERROR("No profile for service: " + profile_path, service_path); |
| 159 } |
| 148 | 160 |
| 149 std::unique_ptr<NetworkUIData> ui_data = | 161 std::unique_ptr<NetworkUIData> ui_data = |
| 150 shill_property_util::GetUIDataFromProperties(*shill_properties); | 162 shill_property_util::GetUIDataFromProperties(*shill_properties); |
| 151 | 163 |
| 152 const base::DictionaryValue* user_settings = NULL; | 164 const base::DictionaryValue* user_settings = nullptr; |
| 153 | 165 |
| 154 if (ui_data && profile) { | 166 if (ui_data && profile) { |
| 155 user_settings = ui_data->user_settings(); | 167 user_settings = ui_data->user_settings(); |
| 156 } else if (profile) { | 168 } else if (profile) { |
| 157 NET_LOG_DEBUG("Service contains empty or invalid UIData", service_path); | 169 NET_LOG_DEBUG("Service contains empty or invalid UIData", service_path); |
| 158 // TODO(pneubeck): add a conversion of user configured entries of old | 170 // TODO(pneubeck): add a conversion of user configured entries of old |
| 159 // ChromeOS versions. We will have to use a heuristic to determine which | 171 // ChromeOS versions. We will have to use a heuristic to determine which |
| 160 // properties _might_ be user configured. | 172 // properties _might_ be user configured. |
| 161 } | 173 } |
| 162 | 174 |
| 163 std::string guid; | 175 std::string guid; |
| 164 shill_properties->GetStringWithoutPathExpansion(shill::kGuidProperty, &guid); | 176 shill_properties->GetStringWithoutPathExpansion(shill::kGuidProperty, &guid); |
| 165 | 177 |
| 166 ::onc::ONCSource onc_source; | 178 ::onc::ONCSource onc_source; |
| 167 FindPolicyByGUID(userhash, guid, &onc_source); | 179 FindPolicyByGUID(userhash, guid, &onc_source); |
| 168 const NetworkState* network_state = | 180 const NetworkState* network_state = |
| 169 network_state_handler_->GetNetworkState(service_path); | 181 network_state_handler_->GetNetworkState(service_path); |
| 170 std::unique_ptr<base::DictionaryValue> active_settings( | 182 std::unique_ptr<base::DictionaryValue> active_settings( |
| 171 onc::TranslateShillServiceToONCPart(*shill_properties, onc_source, | 183 onc::TranslateShillServiceToONCPart(*shill_properties, onc_source, |
| 172 &onc::kNetworkWithStateSignature, | 184 &onc::kNetworkWithStateSignature, |
| 173 network_state)); | 185 network_state)); |
| 174 | 186 |
| 175 const base::DictionaryValue* network_policy = NULL; | 187 const base::DictionaryValue* network_policy = nullptr; |
| 176 const base::DictionaryValue* global_policy = NULL; | 188 const base::DictionaryValue* global_policy = nullptr; |
| 177 if (profile) { | 189 if (profile) { |
| 178 const Policies* policies = GetPoliciesForProfile(*profile); | 190 const Policies* policies = GetPoliciesForProfile(*profile); |
| 179 if (!policies) { | 191 if (!policies) { |
| 180 InvokeErrorCallback( | 192 InvokeErrorCallback( |
| 181 service_path, error_callback, kPoliciesNotInitialized); | 193 service_path, error_callback, kPoliciesNotInitialized); |
| 182 return; | 194 return; |
| 183 } | 195 } |
| 184 if (!guid.empty()) | 196 if (!guid.empty()) |
| 185 network_policy = GetByGUID(policies->per_network_config, guid); | 197 network_policy = GetByGUID(policies->per_network_config, guid); |
| 186 global_policy = &policies->global_network_config; | 198 global_policy = &policies->global_network_config; |
| (...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 906 std::unique_ptr<base::DictionaryValue> network_properties, | 918 std::unique_ptr<base::DictionaryValue> network_properties, |
| 907 GetDevicePropertiesCallback send_callback, | 919 GetDevicePropertiesCallback send_callback, |
| 908 const std::string& error_name, | 920 const std::string& error_name, |
| 909 std::unique_ptr<base::DictionaryValue> error_data) { | 921 std::unique_ptr<base::DictionaryValue> error_data) { |
| 910 NET_LOG_ERROR("Error getting device properties", service_path); | 922 NET_LOG_ERROR("Error getting device properties", service_path); |
| 911 send_callback.Run(service_path, std::move(network_properties)); | 923 send_callback.Run(service_path, std::move(network_properties)); |
| 912 } | 924 } |
| 913 | 925 |
| 914 | 926 |
| 915 } // namespace chromeos | 927 } // namespace chromeos |
| OLD | NEW |