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/bind.h" |
8 #include "base/format_macros.h" | 8 #include "base/format_macros.h" |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
433 } | 433 } |
434 managed = ManagedState::Create(type, path); | 434 managed = ManagedState::Create(type, path); |
435 managed_list->push_back(managed); | 435 managed_list->push_back(managed); |
436 } else { | 436 } else { |
437 managed = found->second; | 437 managed = found->second; |
438 managed_list->push_back(managed); | 438 managed_list->push_back(managed); |
439 managed_map.erase(found); | 439 managed_map.erase(found); |
440 } | 440 } |
441 list_entries.insert(path); | 441 list_entries.insert(path); |
442 } | 442 } |
443 // Delete any remaning entries in managed_map. | 443 // Delete any remaining entries in managed_map. |
444 STLDeleteContainerPairSecondPointers(managed_map.begin(), managed_map.end()); | 444 STLDeleteContainerPairSecondPointers(managed_map.begin(), managed_map.end()); |
445 } | 445 } |
446 | 446 |
447 void NetworkStateHandler::ProfileListChanged() { | 447 void NetworkStateHandler::ProfileListChanged() { |
448 NET_LOG_EVENT("ProfileListChanged", "Re-Requesting Network Properties"); | 448 NET_LOG_EVENT("ProfileListChanged", "Re-Requesting Network Properties"); |
449 for (ManagedStateList::iterator iter = network_list_.begin(); | 449 for (ManagedStateList::iterator iter = network_list_.begin(); |
450 iter != network_list_.end(); ++iter) { | 450 iter != network_list_.end(); ++iter) { |
451 shill_property_handler_->RequestProperties( | 451 shill_property_handler_->RequestProperties( |
452 ManagedState::MANAGED_TYPE_NETWORK, (*iter)->path()); | 452 ManagedState::MANAGED_TYPE_NETWORK, (*iter)->path()); |
453 } | 453 } |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
517 ManagedState* favorite = | 517 ManagedState* favorite = |
518 GetModifiableManagedState(&favorite_list_, service_path); | 518 GetModifiableManagedState(&favorite_list_, service_path); |
519 if (favorite) | 519 if (favorite) |
520 favorite->PropertyChanged(key, value); | 520 favorite->PropertyChanged(key, value); |
521 | 521 |
522 // Update the NetworkState. | 522 // Update the NetworkState. |
523 NetworkState* network = GetModifiableNetworkState(service_path); | 523 NetworkState* network = GetModifiableNetworkState(service_path); |
524 if (!network) | 524 if (!network) |
525 return; | 525 return; |
526 std::string prev_connection_state = network->connection_state(); | 526 std::string prev_connection_state = network->connection_state(); |
527 std::string prev_profile_path = network->profile_path(); | |
527 if (!network->PropertyChanged(key, value)) | 528 if (!network->PropertyChanged(key, value)) |
528 return; | 529 return; |
529 | 530 |
530 if (key == flimflam::kStateProperty) { | 531 if (key == flimflam::kStateProperty) { |
531 if (ConnectionStateChanged(network, prev_connection_state)) | 532 if (ConnectionStateChanged(network, prev_connection_state)) { |
532 OnNetworkConnectionStateChanged(network); | 533 OnNetworkConnectionStateChanged(network); |
534 // If the connection state changes, other properties such as IPConfig | |
535 // may have changed, so request a full update. | |
536 RequestUpdateForNetwork(service_path); | |
537 } | |
533 } else { | 538 } else { |
534 if (network->path() == default_network_path_ && | 539 bool noisy_property = |
535 key != flimflam::kSignalStrengthProperty && | 540 key == flimflam::kSignalStrengthProperty || |
536 key != shill::kWifiFrequencyListProperty) { | 541 key == shill::kWifiFrequencyListProperty; |
pneubeck (no reviews)
2013/08/08 07:40:56
nit:
I don't say you should, but you could remove
| |
537 // WiFi SignalStrength and WifiFrequencyList updates are too noisy, so | 542 if (network->path() == default_network_path_ && !noisy_property) { |
543 // Wifi SignalStrength and WifiFrequencyList updates are too noisy, so | |
538 // don't trigger default network updates for those changes. | 544 // don't trigger default network updates for those changes. |
539 OnDefaultNetworkChanged(); | 545 OnDefaultNetworkChanged(); |
540 } | 546 } |
541 std::string detail = network->name() + "." + key; | 547 if (prev_profile_path.empty() && !network->profile_path().empty()) { |
542 detail += " = " + network_event_log::ValueAsString(value); | 548 // If added to a Profile, request a full update so that a FavoriteState |
543 network_event_log::LogLevel log_level = network_event_log::LOG_LEVEL_EVENT; | 549 // gets created. |
544 if (key == flimflam::kErrorProperty || key == shill::kErrorDetailsProperty) | 550 RequestUpdateForNetwork(service_path); |
545 log_level = network_event_log::LOG_LEVEL_ERROR; | 551 } |
546 else if (key == flimflam::kSignalStrengthProperty || | 552 if (!noisy_property) { |
547 key == shill::kWifiFrequencyListProperty) | 553 std::string detail = network->name() + "." + key; |
548 log_level = network_event_log::LOG_LEVEL_DEBUG; | 554 detail += " = " + network_event_log::ValueAsString(value); |
549 NET_LOG_LEVEL(log_level, "NetworkPropertyUpdated", detail); | 555 network_event_log::LogLevel log_level; |
556 if (key == flimflam::kErrorProperty || | |
557 key == shill::kErrorDetailsProperty) { | |
558 log_level = network_event_log::LOG_LEVEL_ERROR; | |
559 } else { | |
560 log_level = network_event_log::LOG_LEVEL_EVENT; | |
pneubeck (no reviews)
2013/08/08 07:40:56
nit: you could initialize log_level with LOG_LEVEL
stevenjb
2013/08/08 16:42:30
I had that first but for some reason it looked les
| |
561 } | |
562 NET_LOG_LEVEL(log_level, "NetworkPropertyUpdated", detail); | |
563 } | |
550 } | 564 } |
551 NetworkPropertiesUpdated(network); | 565 NetworkPropertiesUpdated(network); |
552 } | 566 } |
553 | 567 |
554 void NetworkStateHandler::UpdateDeviceProperty(const std::string& device_path, | 568 void NetworkStateHandler::UpdateDeviceProperty(const std::string& device_path, |
555 const std::string& key, | 569 const std::string& key, |
556 const base::Value& value) { | 570 const base::Value& value) { |
557 DeviceState* device = GetModifiableDeviceState(device_path); | 571 DeviceState* device = GetModifiableDeviceState(device_path); |
558 if (!device) | 572 if (!device) |
559 return; | 573 return; |
(...skipping 29 matching lines...) Expand all Loading... | |
589 NET_LOG_EVENT("NetworkListChanged", | 603 NET_LOG_EVENT("NetworkListChanged", |
590 base::StringPrintf("Size:%" PRIuS, network_list_.size())); | 604 base::StringPrintf("Size:%" PRIuS, network_list_.size())); |
591 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, | 605 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, |
592 NetworkListChanged()); | 606 NetworkListChanged()); |
593 // The list order may have changed, so check if the default network changed. | 607 // The list order may have changed, so check if the default network changed. |
594 if (CheckDefaultNetworkChanged()) | 608 if (CheckDefaultNetworkChanged()) |
595 OnDefaultNetworkChanged(); | 609 OnDefaultNetworkChanged(); |
596 } else if (type == ManagedState::MANAGED_TYPE_FAVORITE) { | 610 } else if (type == ManagedState::MANAGED_TYPE_FAVORITE) { |
597 NET_LOG_DEBUG("FavoriteListChanged", | 611 NET_LOG_DEBUG("FavoriteListChanged", |
598 base::StringPrintf("Size:%" PRIuS, favorite_list_.size())); | 612 base::StringPrintf("Size:%" PRIuS, favorite_list_.size())); |
599 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, | 613 // This will always get triggered for TYPE_NETWORK if the favorite list |
pneubeck (no reviews)
2013/08/08 07:40:56
I know the reason for this change, but I don't qui
stevenjb
2013/08/08 16:42:30
Clarified.
| |
600 NetworkListChanged()); | 614 // changes, so do not call observers again here. |
601 } else if (type == ManagedState::MANAGED_TYPE_DEVICE) { | 615 } else if (type == ManagedState::MANAGED_TYPE_DEVICE) { |
602 NET_LOG_DEBUG("DeviceListChanged", | 616 NET_LOG_DEBUG("DeviceListChanged", |
603 base::StringPrintf("Size:%" PRIuS, device_list_.size())); | 617 base::StringPrintf("Size:%" PRIuS, device_list_.size())); |
604 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, | 618 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, |
605 DeviceListChanged()); | 619 DeviceListChanged()); |
606 } else { | 620 } else { |
607 NOTREACHED(); | 621 NOTREACHED(); |
608 } | 622 } |
609 } | 623 } |
610 | 624 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
683 GetManagedStateLogName(default_network)); | 697 GetManagedStateLogName(default_network)); |
684 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, | 698 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, |
685 DefaultNetworkChanged(default_network)); | 699 DefaultNetworkChanged(default_network)); |
686 } | 700 } |
687 | 701 |
688 void NetworkStateHandler::NetworkPropertiesUpdated( | 702 void NetworkStateHandler::NetworkPropertiesUpdated( |
689 const NetworkState* network) { | 703 const NetworkState* network) { |
690 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, | 704 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, |
691 NetworkPropertiesUpdated(network)); | 705 NetworkPropertiesUpdated(network)); |
692 // If |connecting_network_| transitions to a non-idle, non-connecting state, | 706 // If |connecting_network_| transitions to a non-idle, non-connecting state, |
693 // clear it *after* signalling observers. | 707 // clear it *after* signaling observers. |
694 if (network->path() == connecting_network_ && | 708 if (network->path() == connecting_network_ && |
695 !network->IsConnectingState() && | 709 !network->IsConnectingState() && |
696 network->connection_state() != flimflam::kStateIdle) { | 710 network->connection_state() != flimflam::kStateIdle) { |
697 connecting_network_.clear(); | 711 connecting_network_.clear(); |
698 NET_LOG_EVENT("ClearConnectingNetwork", base::StringPrintf( | 712 NET_LOG_EVENT("ClearConnectingNetwork", base::StringPrintf( |
699 "%s:%s", GetManagedStateLogName(network).c_str(), | 713 "%s:%s", GetManagedStateLogName(network).c_str(), |
700 network->connection_state().c_str())); | 714 network->connection_state().c_str())); |
701 } | 715 } |
702 } | 716 } |
703 | 717 |
(...skipping 21 matching lines...) Expand all Loading... | |
725 } | 739 } |
726 if (type == kMatchTypeDefault || type == kMatchTypeNonVirtual || | 740 if (type == kMatchTypeDefault || type == kMatchTypeNonVirtual || |
727 type == kMatchTypeWireless) { | 741 type == kMatchTypeWireless) { |
728 NOTREACHED(); | 742 NOTREACHED(); |
729 return flimflam::kTypeWifi; | 743 return flimflam::kTypeWifi; |
730 } | 744 } |
731 return type; | 745 return type; |
732 } | 746 } |
733 | 747 |
734 } // namespace chromeos | 748 } // namespace chromeos |
OLD | NEW |