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

Side by Side Diff: chromeos/network/onc/onc_utils.cc

Issue 2816513002: Revert of Change base::Value::ListStorage to std::vector<base::Value> (Closed)
Patch Set: Created 3 years, 8 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
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 "chromeos/network/onc/onc_utils.h" 5 #include "chromeos/network/onc/onc_utils.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/base64.h" 10 #include "base/base64.h"
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 if (!field_signature) 274 if (!field_signature)
275 continue; 275 continue;
276 276
277 ExpandStringsInOncObject(*field_signature->value_signature, 277 ExpandStringsInOncObject(*field_signature->value_signature,
278 substitution, inner_object); 278 substitution, inner_object);
279 } 279 }
280 } 280 }
281 281
282 void ExpandStringsInNetworks(const StringSubstitution& substitution, 282 void ExpandStringsInNetworks(const StringSubstitution& substitution,
283 base::ListValue* network_configs) { 283 base::ListValue* network_configs) {
284 for (auto& entry : *network_configs) { 284 for (const auto& entry : *network_configs) {
285 base::DictionaryValue* network = nullptr; 285 base::DictionaryValue* network = nullptr;
286 entry.GetAsDictionary(&network); 286 entry->GetAsDictionary(&network);
287 DCHECK(network); 287 DCHECK(network);
288 ExpandStringsInOncObject( 288 ExpandStringsInOncObject(
289 kNetworkConfigurationSignature, substitution, network); 289 kNetworkConfigurationSignature, substitution, network);
290 } 290 }
291 } 291 }
292 292
293 void FillInHexSSIDFieldsInOncObject(const OncValueSignature& signature, 293 void FillInHexSSIDFieldsInOncObject(const OncValueSignature& signature,
294 base::DictionaryValue* onc_object) { 294 base::DictionaryValue* onc_object) {
295 if (&signature == &kWiFiSignature) 295 if (&signature == &kWiFiSignature)
296 FillInHexSSIDField(onc_object); 296 FillInHexSSIDField(onc_object);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 } 400 }
401 } 401 }
402 return decoded; 402 return decoded;
403 } 403 }
404 404
405 CertPEMsByGUIDMap GetServerAndCACertsByGUID( 405 CertPEMsByGUIDMap GetServerAndCACertsByGUID(
406 const base::ListValue& certificates) { 406 const base::ListValue& certificates) {
407 CertPEMsByGUIDMap certs_by_guid; 407 CertPEMsByGUIDMap certs_by_guid;
408 for (const auto& entry : certificates) { 408 for (const auto& entry : certificates) {
409 const base::DictionaryValue* cert = nullptr; 409 const base::DictionaryValue* cert = nullptr;
410 bool entry_is_dictionary = entry.GetAsDictionary(&cert); 410 bool entry_is_dictionary = entry->GetAsDictionary(&cert);
411 DCHECK(entry_is_dictionary); 411 DCHECK(entry_is_dictionary);
412 412
413 std::string guid; 413 std::string guid;
414 cert->GetStringWithoutPathExpansion(certificate::kGUID, &guid); 414 cert->GetStringWithoutPathExpansion(certificate::kGUID, &guid);
415 std::string cert_type; 415 std::string cert_type;
416 cert->GetStringWithoutPathExpansion(certificate::kType, &cert_type); 416 cert->GetStringWithoutPathExpansion(certificate::kType, &cert_type);
417 if (cert_type != certificate::kServer && 417 if (cert_type != certificate::kServer &&
418 cert_type != certificate::kAuthority) { 418 cert_type != certificate::kAuthority) {
419 continue; 419 continue;
420 } 420 }
421 std::string x509_data; 421 std::string x509_data;
422 cert->GetStringWithoutPathExpansion(certificate::kX509, &x509_data); 422 cert->GetStringWithoutPathExpansion(certificate::kX509, &x509_data);
423 423
424 std::string der = DecodePEM(x509_data); 424 std::string der = DecodePEM(x509_data);
425 std::string pem; 425 std::string pem;
426 if (der.empty() || !net::X509Certificate::GetPEMEncodedFromDER(der, &pem)) { 426 if (der.empty() || !net::X509Certificate::GetPEMEncodedFromDER(der, &pem)) {
427 LOG(ERROR) << "Certificate with GUID " << guid 427 LOG(ERROR) << "Certificate with GUID " << guid
428 << " is not in PEM encoding."; 428 << " is not in PEM encoding.";
429 continue; 429 continue;
430 } 430 }
431 certs_by_guid[guid] = pem; 431 certs_by_guid[guid] = pem;
432 } 432 }
433 433
434 return certs_by_guid; 434 return certs_by_guid;
435 } 435 }
436 436
437 void FillInHexSSIDFieldsInNetworks(base::ListValue* network_configs) { 437 void FillInHexSSIDFieldsInNetworks(base::ListValue* network_configs) {
438 for (auto& entry : *network_configs) { 438 for (const auto& entry : *network_configs) {
439 base::DictionaryValue* network = nullptr; 439 base::DictionaryValue* network = nullptr;
440 entry.GetAsDictionary(&network); 440 entry->GetAsDictionary(&network);
441 DCHECK(network); 441 DCHECK(network);
442 FillInHexSSIDFieldsInOncObject(kNetworkConfigurationSignature, network); 442 FillInHexSSIDFieldsInOncObject(kNetworkConfigurationSignature, network);
443 } 443 }
444 } 444 }
445 445
446 } // namespace 446 } // namespace
447 447
448 bool ParseAndValidateOncForImport(const std::string& onc_blob, 448 bool ParseAndValidateOncForImport(const std::string& onc_blob,
449 ONCSource onc_source, 449 ONCSource onc_source,
450 const std::string& passphrase, 450 const std::string& passphrase,
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 base::DictionaryValue* onc_object) { 596 base::DictionaryValue* onc_object) {
597 const base::ListValue* guid_ref_list = nullptr; 597 const base::ListValue* guid_ref_list = nullptr;
598 if (!onc_object->GetListWithoutPathExpansion(key_guid_ref_list, 598 if (!onc_object->GetListWithoutPathExpansion(key_guid_ref_list,
599 &guid_ref_list)) { 599 &guid_ref_list)) {
600 return true; 600 return true;
601 } 601 }
602 602
603 std::unique_ptr<base::ListValue> pem_list(new base::ListValue); 603 std::unique_ptr<base::ListValue> pem_list(new base::ListValue);
604 for (const auto& entry : *guid_ref_list) { 604 for (const auto& entry : *guid_ref_list) {
605 std::string guid_ref; 605 std::string guid_ref;
606 bool entry_is_string = entry.GetAsString(&guid_ref); 606 bool entry_is_string = entry->GetAsString(&guid_ref);
607 DCHECK(entry_is_string); 607 DCHECK(entry_is_string);
608 608
609 std::string pem_encoded; 609 std::string pem_encoded;
610 if (!GUIDRefToPEMEncoding(certs_by_guid, guid_ref, &pem_encoded)) 610 if (!GUIDRefToPEMEncoding(certs_by_guid, guid_ref, &pem_encoded))
611 return false; 611 return false;
612 612
613 pem_list->AppendString(pem_encoded); 613 pem_list->AppendString(pem_encoded);
614 } 614 }
615 615
616 onc_object->RemoveWithoutPathExpansion(key_guid_ref_list, nullptr); 616 onc_object->RemoveWithoutPathExpansion(key_guid_ref_list, nullptr);
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 } 723 }
724 724
725 } // namespace 725 } // namespace
726 726
727 bool ResolveServerCertRefsInNetworks(const CertPEMsByGUIDMap& certs_by_guid, 727 bool ResolveServerCertRefsInNetworks(const CertPEMsByGUIDMap& certs_by_guid,
728 base::ListValue* network_configs) { 728 base::ListValue* network_configs) {
729 bool success = true; 729 bool success = true;
730 for (base::ListValue::iterator it = network_configs->begin(); 730 for (base::ListValue::iterator it = network_configs->begin();
731 it != network_configs->end(); ) { 731 it != network_configs->end(); ) {
732 base::DictionaryValue* network = nullptr; 732 base::DictionaryValue* network = nullptr;
733 it->GetAsDictionary(&network); 733 (*it)->GetAsDictionary(&network);
734 if (!ResolveServerCertRefsInNetwork(certs_by_guid, network)) { 734 if (!ResolveServerCertRefsInNetwork(certs_by_guid, network)) {
735 std::string guid; 735 std::string guid;
736 network->GetStringWithoutPathExpansion(network_config::kGUID, &guid); 736 network->GetStringWithoutPathExpansion(network_config::kGUID, &guid);
737 // This might happen even with correct validation, if the referenced 737 // This might happen even with correct validation, if the referenced
738 // certificate couldn't be imported. 738 // certificate couldn't be imported.
739 LOG(ERROR) << "Couldn't resolve some certificate reference of network " 739 LOG(ERROR) << "Couldn't resolve some certificate reference of network "
740 << guid; 740 << guid;
741 it = network_configs->Erase(it, nullptr); 741 it = network_configs->Erase(it, nullptr);
742 success = false; 742 success = false;
743 continue; 743 continue;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 ProxyConfigDictionary::EncodeAndAppendProxyServer(url_scheme, proxy_server, 850 ProxyConfigDictionary::EncodeAndAppendProxyServer(url_scheme, proxy_server,
851 spec); 851 spec);
852 } 852 }
853 853
854 net::ProxyBypassRules ConvertOncExcludeDomainsToBypassRules( 854 net::ProxyBypassRules ConvertOncExcludeDomainsToBypassRules(
855 const base::ListValue& onc_exclude_domains) { 855 const base::ListValue& onc_exclude_domains) {
856 net::ProxyBypassRules rules; 856 net::ProxyBypassRules rules;
857 for (base::ListValue::const_iterator it = onc_exclude_domains.begin(); 857 for (base::ListValue::const_iterator it = onc_exclude_domains.begin();
858 it != onc_exclude_domains.end(); ++it) { 858 it != onc_exclude_domains.end(); ++it) {
859 std::string rule; 859 std::string rule;
860 it->GetAsString(&rule); 860 (*it)->GetAsString(&rule);
861 rules.AddRuleFromString(rule); 861 rules.AddRuleFromString(rule);
862 } 862 }
863 return rules; 863 return rules;
864 } 864 }
865 865
866 std::string SchemeToString(net::ProxyServer::Scheme scheme) { 866 std::string SchemeToString(net::ProxyServer::Scheme scheme) {
867 switch (scheme) { 867 switch (scheme) {
868 case net::ProxyServer::SCHEME_DIRECT: 868 case net::ProxyServer::SCHEME_DIRECT:
869 return kDirectScheme; 869 return kDirectScheme;
870 case net::ProxyServer::SCHEME_HTTP: 870 case net::ProxyServer::SCHEME_HTTP:
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
1036 } 1036 }
1037 1037
1038 namespace { 1038 namespace {
1039 1039
1040 const base::DictionaryValue* GetNetworkConfigByGUID( 1040 const base::DictionaryValue* GetNetworkConfigByGUID(
1041 const base::ListValue& network_configs, 1041 const base::ListValue& network_configs,
1042 const std::string& guid) { 1042 const std::string& guid) {
1043 for (base::ListValue::const_iterator it = network_configs.begin(); 1043 for (base::ListValue::const_iterator it = network_configs.begin();
1044 it != network_configs.end(); ++it) { 1044 it != network_configs.end(); ++it) {
1045 const base::DictionaryValue* network = NULL; 1045 const base::DictionaryValue* network = NULL;
1046 it->GetAsDictionary(&network); 1046 (*it)->GetAsDictionary(&network);
1047 DCHECK(network); 1047 DCHECK(network);
1048 1048
1049 std::string current_guid; 1049 std::string current_guid;
1050 network->GetStringWithoutPathExpansion(::onc::network_config::kGUID, 1050 network->GetStringWithoutPathExpansion(::onc::network_config::kGUID,
1051 &current_guid); 1051 &current_guid);
1052 if (current_guid == guid) 1052 if (current_guid == guid)
1053 return network; 1053 return network;
1054 } 1054 }
1055 return NULL; 1055 return NULL;
1056 } 1056 }
1057 1057
1058 const base::DictionaryValue* GetNetworkConfigForEthernetWithoutEAP( 1058 const base::DictionaryValue* GetNetworkConfigForEthernetWithoutEAP(
1059 const base::ListValue& network_configs) { 1059 const base::ListValue& network_configs) {
1060 VLOG(2) << "Search for ethernet policy without EAP."; 1060 VLOG(2) << "Search for ethernet policy without EAP.";
1061 for (base::ListValue::const_iterator it = network_configs.begin(); 1061 for (base::ListValue::const_iterator it = network_configs.begin();
1062 it != network_configs.end(); ++it) { 1062 it != network_configs.end(); ++it) {
1063 const base::DictionaryValue* network = NULL; 1063 const base::DictionaryValue* network = NULL;
1064 it->GetAsDictionary(&network); 1064 (*it)->GetAsDictionary(&network);
1065 DCHECK(network); 1065 DCHECK(network);
1066 1066
1067 std::string type; 1067 std::string type;
1068 network->GetStringWithoutPathExpansion(::onc::network_config::kType, &type); 1068 network->GetStringWithoutPathExpansion(::onc::network_config::kType, &type);
1069 if (type != ::onc::network_type::kEthernet) 1069 if (type != ::onc::network_type::kEthernet)
1070 continue; 1070 continue;
1071 1071
1072 const base::DictionaryValue* ethernet = NULL; 1072 const base::DictionaryValue* ethernet = NULL;
1073 network->GetDictionaryWithoutPathExpansion(::onc::network_config::kEthernet, 1073 network->GetDictionaryWithoutPathExpansion(::onc::network_config::kEthernet,
1074 &ethernet); 1074 &ethernet);
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1180 user->username_hash()); 1180 user->username_hash());
1181 if (!profile) { 1181 if (!profile) {
1182 *error = "User profile doesn't exist."; 1182 *error = "User profile doesn't exist.";
1183 return; 1183 return;
1184 } 1184 }
1185 1185
1186 bool ethernet_not_found = false; 1186 bool ethernet_not_found = false;
1187 for (base::ListValue::const_iterator it = expanded_networks->begin(); 1187 for (base::ListValue::const_iterator it = expanded_networks->begin();
1188 it != expanded_networks->end(); ++it) { 1188 it != expanded_networks->end(); ++it) {
1189 const base::DictionaryValue* network = NULL; 1189 const base::DictionaryValue* network = NULL;
1190 it->GetAsDictionary(&network); 1190 (*it)->GetAsDictionary(&network);
1191 DCHECK(network); 1191 DCHECK(network);
1192 1192
1193 // Remove irrelevant fields. 1193 // Remove irrelevant fields.
1194 onc::Normalizer normalizer(true /* remove recommended fields */); 1194 onc::Normalizer normalizer(true /* remove recommended fields */);
1195 std::unique_ptr<base::DictionaryValue> normalized_network = 1195 std::unique_ptr<base::DictionaryValue> normalized_network =
1196 normalizer.NormalizeObject(&onc::kNetworkConfigurationSignature, 1196 normalizer.NormalizeObject(&onc::kNetworkConfigurationSignature,
1197 *network); 1197 *network);
1198 1198
1199 // TODO(pneubeck): Use ONC and ManagedNetworkConfigurationHandler instead. 1199 // TODO(pneubeck): Use ONC and ManagedNetworkConfigurationHandler instead.
1200 // crbug.com/457936 1200 // crbug.com/457936
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1319 const PrefService* local_state_prefs, 1319 const PrefService* local_state_prefs,
1320 const NetworkState& network) { 1320 const NetworkState& network) {
1321 ::onc::ONCSource ignored_onc_source; 1321 ::onc::ONCSource ignored_onc_source;
1322 const base::DictionaryValue* policy = onc::GetPolicyForNetwork( 1322 const base::DictionaryValue* policy = onc::GetPolicyForNetwork(
1323 profile_prefs, local_state_prefs, network, &ignored_onc_source); 1323 profile_prefs, local_state_prefs, network, &ignored_onc_source);
1324 return policy != NULL; 1324 return policy != NULL;
1325 } 1325 }
1326 1326
1327 } // namespace onc 1327 } // namespace onc
1328 } // namespace chromeos 1328 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/network/onc/onc_translator_shill_to_onc.cc ('k') | chromeos/network/onc/onc_utils_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698