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 <set> | 7 #include <set> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 const std::string& error_name) { | 62 const std::string& error_name) { |
63 std::string error_msg = "ManagedConfig Error: " + error_name; | 63 std::string error_msg = "ManagedConfig Error: " + error_name; |
64 NET_LOG_ERROR(error_msg, service_path); | 64 NET_LOG_ERROR(error_msg, service_path); |
65 network_handler::RunErrorCallback( | 65 network_handler::RunErrorCallback( |
66 error_callback, service_path, error_name, error_msg); | 66 error_callback, service_path, error_name, error_msg); |
67 } | 67 } |
68 | 68 |
69 void LogErrorWithDict(const tracked_objects::Location& from_where, | 69 void LogErrorWithDict(const tracked_objects::Location& from_where, |
70 const std::string& error_name, | 70 const std::string& error_name, |
71 scoped_ptr<base::DictionaryValue> error_data) { | 71 scoped_ptr<base::DictionaryValue> error_data) { |
72 LOG(ERROR) << from_where.ToString() << ": " << error_name; | 72 network_event_log::internal::AddEntry( |
| 73 from_where.file_name(), from_where.line_number(), |
| 74 network_event_log::LOG_LEVEL_ERROR, |
| 75 error_name, ""); |
73 } | 76 } |
74 | 77 |
75 const base::DictionaryValue* GetByGUID(const GuidToPolicyMap& policies, | 78 const base::DictionaryValue* GetByGUID(const GuidToPolicyMap& policies, |
76 const std::string& guid) { | 79 const std::string& guid) { |
77 GuidToPolicyMap::const_iterator it = policies.find(guid); | 80 GuidToPolicyMap::const_iterator it = policies.find(guid); |
78 if (it == policies.end()) | 81 if (it == policies.end()) |
79 return NULL; | 82 return NULL; |
80 return it->second; | 83 return it->second; |
81 } | 84 } |
82 | 85 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 void ManagedNetworkConfigurationHandlerImpl::GetManagedPropertiesCallback( | 139 void ManagedNetworkConfigurationHandlerImpl::GetManagedPropertiesCallback( |
137 const network_handler::DictionaryResultCallback& callback, | 140 const network_handler::DictionaryResultCallback& callback, |
138 const network_handler::ErrorCallback& error_callback, | 141 const network_handler::ErrorCallback& error_callback, |
139 const std::string& service_path, | 142 const std::string& service_path, |
140 const base::DictionaryValue& shill_properties) { | 143 const base::DictionaryValue& shill_properties) { |
141 std::string profile_path; | 144 std::string profile_path; |
142 shill_properties.GetStringWithoutPathExpansion(shill::kProfileProperty, | 145 shill_properties.GetStringWithoutPathExpansion(shill::kProfileProperty, |
143 &profile_path); | 146 &profile_path); |
144 const NetworkProfile* profile = | 147 const NetworkProfile* profile = |
145 network_profile_handler_->GetProfileForPath(profile_path); | 148 network_profile_handler_->GetProfileForPath(profile_path); |
146 if (!profile) { | 149 if (!profile) |
147 LOG(ERROR) << "No or no known profile received for service " | 150 NET_LOG_ERROR("No profile for service: " + profile_path, service_path); |
148 << service_path << "."; | |
149 } | |
150 | 151 |
151 scoped_ptr<NetworkUIData> ui_data = | 152 scoped_ptr<NetworkUIData> ui_data = |
152 shill_property_util::GetUIDataFromProperties(shill_properties); | 153 shill_property_util::GetUIDataFromProperties(shill_properties); |
153 | 154 |
154 const base::DictionaryValue* user_settings = NULL; | 155 const base::DictionaryValue* user_settings = NULL; |
155 const base::DictionaryValue* shared_settings = NULL; | 156 const base::DictionaryValue* shared_settings = NULL; |
156 | 157 |
157 if (ui_data && profile) { | 158 if (ui_data && profile) { |
158 if (profile->type() == NetworkProfile::TYPE_SHARED) | 159 if (profile->type() == NetworkProfile::TYPE_SHARED) |
159 shared_settings = ui_data->user_settings(); | 160 shared_settings = ui_data->user_settings(); |
160 else if (profile->type() == NetworkProfile::TYPE_USER) | 161 else if (profile->type() == NetworkProfile::TYPE_USER) |
161 user_settings = ui_data->user_settings(); | 162 user_settings = ui_data->user_settings(); |
162 else | 163 else |
163 NOTREACHED(); | 164 NOTREACHED(); |
164 } else if (profile) { | 165 } else if (profile) { |
165 LOG(WARNING) << "Service " << service_path << " of profile " | 166 NET_LOG_ERROR("Service contains empty or invalid UIData", service_path); |
166 << profile_path << " contains no or no valid UIData."; | |
167 // TODO(pneubeck): add a conversion of user configured entries of old | 167 // TODO(pneubeck): add a conversion of user configured entries of old |
168 // ChromeOS versions. We will have to use a heuristic to determine which | 168 // ChromeOS versions. We will have to use a heuristic to determine which |
169 // properties _might_ be user configured. | 169 // properties _might_ be user configured. |
170 } | 170 } |
171 | 171 |
172 scoped_ptr<base::DictionaryValue> active_settings( | 172 scoped_ptr<base::DictionaryValue> active_settings( |
173 onc::TranslateShillServiceToONCPart( | 173 onc::TranslateShillServiceToONCPart( |
174 shill_properties, | 174 shill_properties, |
175 &onc::kNetworkWithStateSignature)); | 175 &onc::kNetworkWithStateSignature)); |
176 | 176 |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 it != network_configs_onc.end(); ++it) { | 370 it != network_configs_onc.end(); ++it) { |
371 const base::DictionaryValue* network = NULL; | 371 const base::DictionaryValue* network = NULL; |
372 (*it)->GetAsDictionary(&network); | 372 (*it)->GetAsDictionary(&network); |
373 DCHECK(network); | 373 DCHECK(network); |
374 | 374 |
375 std::string guid; | 375 std::string guid; |
376 network->GetStringWithoutPathExpansion(::onc::network_config::kGUID, &guid); | 376 network->GetStringWithoutPathExpansion(::onc::network_config::kGUID, &guid); |
377 DCHECK(!guid.empty()); | 377 DCHECK(!guid.empty()); |
378 | 378 |
379 if (policies->per_network_config.count(guid) > 0) { | 379 if (policies->per_network_config.count(guid) > 0) { |
380 LOG(ERROR) << "ONC from " << ToDebugString(onc_source, userhash) | 380 NET_LOG_ERROR("ONC from " + ToDebugString(onc_source, userhash) + |
381 << " contains several entries for the same GUID " | 381 " contains several entries for the same GUID ", guid); |
382 << guid << "."; | |
383 delete policies->per_network_config[guid]; | 382 delete policies->per_network_config[guid]; |
384 } | 383 } |
385 const base::DictionaryValue* new_entry = network->DeepCopy(); | 384 const base::DictionaryValue* new_entry = network->DeepCopy(); |
386 policies->per_network_config[guid] = new_entry; | 385 policies->per_network_config[guid] = new_entry; |
387 | 386 |
388 const base::DictionaryValue* old_entry = old_per_network_config[guid]; | 387 const base::DictionaryValue* old_entry = old_per_network_config[guid]; |
389 if (!old_entry || !old_entry->Equals(new_entry)) | 388 if (!old_entry || !old_entry->Equals(new_entry)) |
390 modified_policies.insert(guid); | 389 modified_policies.insert(guid); |
391 } | 390 } |
392 | 391 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 void ManagedNetworkConfigurationHandlerImpl:: | 453 void ManagedNetworkConfigurationHandlerImpl:: |
455 UpdateExistingConfigurationWithPropertiesFromPolicy( | 454 UpdateExistingConfigurationWithPropertiesFromPolicy( |
456 const base::DictionaryValue& existing_properties, | 455 const base::DictionaryValue& existing_properties, |
457 const base::DictionaryValue& new_properties) { | 456 const base::DictionaryValue& new_properties) { |
458 base::DictionaryValue shill_properties; | 457 base::DictionaryValue shill_properties; |
459 | 458 |
460 std::string profile; | 459 std::string profile; |
461 existing_properties.GetStringWithoutPathExpansion(shill::kProfileProperty, | 460 existing_properties.GetStringWithoutPathExpansion(shill::kProfileProperty, |
462 &profile); | 461 &profile); |
463 if (profile.empty()) { | 462 if (profile.empty()) { |
464 LOG(ERROR) << "Missing profile property."; | 463 NET_LOG_ERROR("Missing profile property", |
| 464 shill_property_util::GetNetworkIdFromProperties( |
| 465 existing_properties)); |
465 return; | 466 return; |
466 } | 467 } |
467 shill_properties.SetStringWithoutPathExpansion(shill::kProfileProperty, | 468 shill_properties.SetStringWithoutPathExpansion(shill::kProfileProperty, |
468 profile); | 469 profile); |
469 | 470 |
470 if (!shill_property_util::CopyIdentifyingProperties(existing_properties, | 471 if (!shill_property_util::CopyIdentifyingProperties(existing_properties, |
471 &shill_properties)) { | 472 &shill_properties)) { |
472 LOG(ERROR) << "Missing identifying properties."; | 473 NET_LOG_ERROR("Missing identifying properties", |
| 474 shill_property_util::GetNetworkIdFromProperties( |
| 475 existing_properties)); |
473 } | 476 } |
474 | 477 |
475 shill_properties.MergeDictionary(&new_properties); | 478 shill_properties.MergeDictionary(&new_properties); |
476 | 479 |
477 network_configuration_handler_->CreateConfiguration( | 480 network_configuration_handler_->CreateConfiguration( |
478 shill_properties, | 481 shill_properties, |
479 base::Bind( | 482 base::Bind( |
480 &ManagedNetworkConfigurationHandlerImpl::OnPolicyAppliedToNetwork, | 483 &ManagedNetworkConfigurationHandlerImpl::OnPolicyAppliedToNetwork, |
481 weak_ptr_factory_.GetWeakPtr()), | 484 weak_ptr_factory_.GetWeakPtr()), |
482 base::Bind(&LogErrorWithDict, FROM_HERE)); | 485 base::Bind(&LogErrorWithDict, FROM_HERE)); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
529 | 532 |
530 return &policies->global_network_config; | 533 return &policies->global_network_config; |
531 } | 534 } |
532 const base::DictionaryValue* | 535 const base::DictionaryValue* |
533 ManagedNetworkConfigurationHandlerImpl::FindPolicyByGuidAndProfile( | 536 ManagedNetworkConfigurationHandlerImpl::FindPolicyByGuidAndProfile( |
534 const std::string& guid, | 537 const std::string& guid, |
535 const std::string& profile_path) const { | 538 const std::string& profile_path) const { |
536 const NetworkProfile* profile = | 539 const NetworkProfile* profile = |
537 network_profile_handler_->GetProfileForPath(profile_path); | 540 network_profile_handler_->GetProfileForPath(profile_path); |
538 if (!profile) { | 541 if (!profile) { |
539 LOG(ERROR) << "Profile path unknown: " << profile_path; | 542 NET_LOG_ERROR("Profile path unknown:" + profile_path, guid); |
540 return NULL; | 543 return NULL; |
541 } | 544 } |
542 | 545 |
543 const Policies* policies = GetPoliciesForProfile(*profile); | 546 const Policies* policies = GetPoliciesForProfile(*profile); |
544 if (!policies) | 547 if (!policies) |
545 return NULL; | 548 return NULL; |
546 | 549 |
547 return GetByGUID(policies->per_network_config, guid); | 550 return GetByGUID(policies->per_network_config, guid); |
548 } | 551 } |
549 | 552 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
587 | 590 |
588 void ManagedNetworkConfigurationHandlerImpl::OnPolicyAppliedToNetwork( | 591 void ManagedNetworkConfigurationHandlerImpl::OnPolicyAppliedToNetwork( |
589 const std::string& service_path) { | 592 const std::string& service_path) { |
590 if (service_path.empty()) | 593 if (service_path.empty()) |
591 return; | 594 return; |
592 FOR_EACH_OBSERVER( | 595 FOR_EACH_OBSERVER( |
593 NetworkPolicyObserver, observers_, PolicyApplied(service_path)); | 596 NetworkPolicyObserver, observers_, PolicyApplied(service_path)); |
594 } | 597 } |
595 | 598 |
596 } // namespace chromeos | 599 } // namespace chromeos |
OLD | NEW |