OLD | NEW |
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/network_state_handler.h" | 5 #include "chromeos/network/network_state_handler.h" |
6 | 6 |
| 7 #include "base/bind.h" |
7 #include "base/format_macros.h" | 8 #include "base/format_macros.h" |
8 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
9 #include "base/string_util.h" | 10 #include "base/string_util.h" |
10 #include "base/stringprintf.h" | 11 #include "base/stringprintf.h" |
11 #include "base/values.h" | 12 #include "base/values.h" |
12 #include "chromeos/network/device_state.h" | 13 #include "chromeos/network/device_state.h" |
13 #include "chromeos/network/managed_state.h" | 14 #include "chromeos/network/managed_state.h" |
14 #include "chromeos/network/network_event_log.h" | 15 #include "chromeos/network/network_event_log.h" |
15 #include "chromeos/network/network_state.h" | 16 #include "chromeos/network/network_state.h" |
16 #include "chromeos/network/network_state_handler_observer.h" | 17 #include "chromeos/network/network_state_handler_observer.h" |
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 list->clear(); | 291 list->clear(); |
291 for (ManagedStateList::const_iterator iter = network_list_.begin(); | 292 for (ManagedStateList::const_iterator iter = network_list_.begin(); |
292 iter != network_list_.end(); ++iter) { | 293 iter != network_list_.end(); ++iter) { |
293 const NetworkState* network = (*iter)->AsNetworkState(); | 294 const NetworkState* network = (*iter)->AsNetworkState(); |
294 DCHECK(network); | 295 DCHECK(network); |
295 list->push_back(network); | 296 list->push_back(network); |
296 } | 297 } |
297 } | 298 } |
298 | 299 |
299 void NetworkStateHandler::RequestScan() const { | 300 void NetworkStateHandler::RequestScan() const { |
| 301 network_event_log::AddEntry(kLogModule, "RequestScan", ""); |
300 shill_property_handler_->RequestScan(); | 302 shill_property_handler_->RequestScan(); |
301 } | 303 } |
302 | 304 |
| 305 void NetworkStateHandler::WaitForScan(const std::string& type, |
| 306 const base::Closure& callback) { |
| 307 scan_complete_callbacks_[type].push_back(callback); |
| 308 if (!GetScanningByType(type)) |
| 309 RequestScan(); |
| 310 } |
| 311 |
| 312 void NetworkStateHandler::ConnectToBestWifiNetwork() { |
| 313 network_event_log::AddEntry(kLogModule, "ConnectToBestWifiNetwork", ""); |
| 314 WaitForScan(flimflam::kTypeWifi, |
| 315 base::Bind(&internal::ShillPropertyHandler::ConnectToBestServices, |
| 316 shill_property_handler_->AsWeakPtr())); |
| 317 } |
| 318 |
303 //------------------------------------------------------------------------------ | 319 //------------------------------------------------------------------------------ |
304 // ShillPropertyHandler::Delegate overrides | 320 // ShillPropertyHandler::Delegate overrides |
305 | 321 |
306 void NetworkStateHandler::UpdateManagedList(ManagedState::ManagedType type, | 322 void NetworkStateHandler::UpdateManagedList(ManagedState::ManagedType type, |
307 const base::ListValue& entries) { | 323 const base::ListValue& entries) { |
308 ManagedStateList* managed_list = GetManagedList(type); | 324 ManagedStateList* managed_list = GetManagedList(type); |
309 VLOG(2) << "UpdateManagedList: " << type; | 325 VLOG(2) << "UpdateManagedList: " << type; |
310 // Create a map of existing entries. | 326 // Create a map of existing entries. |
311 std::map<std::string, ManagedState*> managed_map; | 327 std::map<std::string, ManagedState*> managed_map; |
312 for (ManagedStateList::iterator iter = managed_list->begin(); | 328 for (ManagedStateList::iterator iter = managed_list->begin(); |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
422 const base::Value& value) { | 438 const base::Value& value) { |
423 DeviceState* device = GetModifiableDeviceState(device_path); | 439 DeviceState* device = GetModifiableDeviceState(device_path); |
424 if (!device) | 440 if (!device) |
425 return; | 441 return; |
426 if (!device->PropertyChanged(key, value)) | 442 if (!device->PropertyChanged(key, value)) |
427 return; | 443 return; |
428 | 444 |
429 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, | 445 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, |
430 DeviceListChanged()); | 446 DeviceListChanged()); |
431 | 447 |
| 448 if (key == flimflam::kScanningProperty && device->scanning() == false) |
| 449 ScanCompleted(device->type()); |
| 450 |
432 std::string detail = device->name() + "." + key; | 451 std::string detail = device->name() + "." + key; |
433 std::string vstr = ValueAsString(value); | 452 std::string vstr = ValueAsString(value); |
434 if (!vstr.empty()) | 453 if (!vstr.empty()) |
435 detail += " = " + vstr; | 454 detail += " = " + vstr; |
436 network_event_log::AddEntry(kLogModule, "DevicePropertyUpdated", detail); | 455 network_event_log::AddEntry(kLogModule, "DevicePropertyUpdated", detail); |
437 } | 456 } |
438 | 457 |
439 void NetworkStateHandler::ManagerPropertyChanged() { | 458 void NetworkStateHandler::ManagerPropertyChanged() { |
440 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, | 459 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, |
441 NetworkManagerChanged()); | 460 NetworkManagerChanged()); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
542 } | 561 } |
543 | 562 |
544 void NetworkStateHandler::NetworkPropertiesUpdated( | 563 void NetworkStateHandler::NetworkPropertiesUpdated( |
545 const NetworkState* network) { | 564 const NetworkState* network) { |
546 if (network->path() == connecting_network_ && !network->IsConnectingState()) | 565 if (network->path() == connecting_network_ && !network->IsConnectingState()) |
547 connecting_network_.clear(); | 566 connecting_network_.clear(); |
548 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, | 567 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, |
549 NetworkPropertiesUpdated(network)); | 568 NetworkPropertiesUpdated(network)); |
550 } | 569 } |
551 | 570 |
| 571 void NetworkStateHandler::ScanCompleted(const std::string& type) { |
| 572 size_t num_callbacks = scan_complete_callbacks_.count(type); |
| 573 network_event_log::AddEntry( |
| 574 kLogModule, "ScanCompleted", |
| 575 base::StringPrintf("%s: %"PRIuS, type.c_str(), num_callbacks)); |
| 576 if (num_callbacks == 0) |
| 577 return; |
| 578 ScanCallbackList& callback_list = scan_complete_callbacks_[type]; |
| 579 for (ScanCallbackList::iterator iter = callback_list.begin(); |
| 580 iter != callback_list.end(); ++iter) { |
| 581 (*iter).Run(); |
| 582 } |
| 583 scan_complete_callbacks_.erase(type); |
| 584 } |
| 585 |
552 } // namespace chromeos | 586 } // namespace chromeos |
OLD | NEW |