diff options
author | stevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-27 17:33:28 +0000 |
---|---|---|
committer | stevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-27 17:33:28 +0000 |
commit | 9cc3c91991f86c6ca5aa22e64ff14d115c0d2264 (patch) | |
tree | a359ae73b1925a94473d30bdaa2e235969dacc3f /chromeos | |
parent | e833e1f51583d32009ffd7a26d2f3a27d0aafd2c (diff) | |
download | chromium_src-9cc3c91991f86c6ca5aa22e64ff14d115c0d2264.zip chromium_src-9cc3c91991f86c6ca5aa22e64ff14d115c0d2264.tar.gz chromium_src-9cc3c91991f86c6ca5aa22e64ff14d115c0d2264.tar.bz2 |
Fix network update logic
This removes the DCHECKS that are no longer valid and fixes the update
logic to work correctly for FavoriteState. These changes are needed for
https://codereview.chromium.org/23609047/
BUG=126870
R=pneubeck@chromium.org
Review URL: https://codereview.chromium.org/24852002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@225727 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r-- | chromeos/network/network_state_handler.cc | 15 | ||||
-rw-r--r-- | chromeos/network/shill_property_handler.cc | 2 |
2 files changed, 11 insertions, 6 deletions
diff --git a/chromeos/network/network_state_handler.cc b/chromeos/network/network_state_handler.cc index 64b96a9..ce70f3d 100644 --- a/chromeos/network/network_state_handler.cc +++ b/chromeos/network/network_state_handler.cc @@ -138,7 +138,8 @@ void NetworkStateHandler::SetTechnologyEnabled( const DeviceState* NetworkStateHandler::GetDeviceState( const std::string& device_path) const { const DeviceState* device = GetModifiableDeviceState(device_path); - DCHECK(!device || device->update_received()); + if (device && !device->update_received()) + return NULL; return device; } @@ -172,7 +173,8 @@ bool NetworkStateHandler::GetScanningByType( const NetworkState* NetworkStateHandler::GetNetworkState( const std::string& service_path) const { const NetworkState* network = GetModifiableNetworkState(service_path); - DCHECK(!network || network->update_received()); + if (network && !network->update_received()) + return NULL; return network; } @@ -312,7 +314,8 @@ const FavoriteState* NetworkStateHandler::GetFavoriteState( GetModifiableManagedState(&favorite_list_, service_path); if (!managed) return NULL; - DCHECK(managed->update_received()); + if (managed && !managed->update_received()) + return NULL; return managed->AsFavoriteState(); } @@ -495,8 +498,9 @@ void NetworkStateHandler::UpdateNetworkServiceProperty( // Update any associated FavoriteState. ManagedState* favorite = GetModifiableManagedState(&favorite_list_, service_path); + bool changed = false; if (favorite) - favorite->PropertyChanged(key, value); + changed |= favorite->PropertyChanged(key, value); // Update the NetworkState. NetworkState* network = GetModifiableNetworkState(service_path); @@ -504,7 +508,8 @@ void NetworkStateHandler::UpdateNetworkServiceProperty( return; std::string prev_connection_state = network->connection_state(); std::string prev_profile_path = network->profile_path(); - if (!network->PropertyChanged(key, value)) + changed |= network->PropertyChanged(key, value); + if (!changed) return; if (key == shill::kStateProperty) { diff --git a/chromeos/network/shill_property_handler.cc b/chromeos/network/shill_property_handler.cc index 4d2604e..71fcb37 100644 --- a/chromeos/network/shill_property_handler.cc +++ b/chromeos/network/shill_property_handler.cc @@ -465,7 +465,6 @@ void ShillPropertyHandler::GetPropertiesCallback( base::StringPrintf("%s: %d", path.c_str(), call_status)); return; } - listener_->UpdateManagedStateProperties(type, path, properties); // Update Favorite properties for networks in the Services list. if (type == ManagedState::MANAGED_TYPE_NETWORK) { // Only networks with a ProfilePath set are Favorites. @@ -477,6 +476,7 @@ void ShillPropertyHandler::GetPropertiesCallback( ManagedState::MANAGED_TYPE_FAVORITE, path, properties); } } + listener_->UpdateManagedStateProperties(type, path, properties); // Request IPConfig parameters for networks. if (type == ManagedState::MANAGED_TYPE_NETWORK && properties.HasKey(shill::kIPConfigProperty)) { |