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

Side by Side Diff: chromeos/network/network_state_handler.cc

Issue 13004024: Add ConnectToBestServices call when Certs are loaded (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Wait for scan to complete before calling ConnectToBest Created 7 years, 9 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 "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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698