| 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/logging.h" | 10 #include "base/logging.h" |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 | 297 |
| 298 void NetworkStateHandler::GetFavoriteListByType(const NetworkTypePattern& type, | 298 void NetworkStateHandler::GetFavoriteListByType(const NetworkTypePattern& type, |
| 299 FavoriteStateList* list) const { | 299 FavoriteStateList* list) const { |
| 300 DCHECK(list); | 300 DCHECK(list); |
| 301 FavoriteStateList result; | 301 FavoriteStateList result; |
| 302 list->clear(); | 302 list->clear(); |
| 303 for (ManagedStateList::const_iterator iter = favorite_list_.begin(); | 303 for (ManagedStateList::const_iterator iter = favorite_list_.begin(); |
| 304 iter != favorite_list_.end(); ++iter) { | 304 iter != favorite_list_.end(); ++iter) { |
| 305 const FavoriteState* favorite = (*iter)->AsFavoriteState(); | 305 const FavoriteState* favorite = (*iter)->AsFavoriteState(); |
| 306 DCHECK(favorite); | 306 DCHECK(favorite); |
| 307 if (favorite->update_received() && favorite->IsFavorite() && | 307 if (favorite->update_received() && favorite->is_favorite() && |
| 308 favorite->Matches(type)) { | 308 favorite->Matches(type)) { |
| 309 list->push_back(favorite); | 309 list->push_back(favorite); |
| 310 } | 310 } |
| 311 } | 311 } |
| 312 } | 312 } |
| 313 | 313 |
| 314 const FavoriteState* NetworkStateHandler::GetFavoriteState( | 314 const FavoriteState* NetworkStateHandler::GetFavoriteState( |
| 315 const std::string& service_path) const { | 315 const std::string& service_path) const { |
| 316 ManagedState* managed = | 316 ManagedState* managed = |
| 317 GetModifiableManagedState(&favorite_list_, service_path); | 317 GetModifiableManagedState(&favorite_list_, service_path); |
| 318 if (!managed) | 318 if (!managed) |
| 319 return NULL; | 319 return NULL; |
| 320 const FavoriteState* favorite = managed->AsFavoriteState(); | 320 const FavoriteState* favorite = managed->AsFavoriteState(); |
| 321 DCHECK(favorite); | 321 DCHECK(favorite); |
| 322 if (!favorite->update_received() || !favorite->IsFavorite()) | 322 if (!favorite->update_received() || !favorite->is_favorite()) |
| 323 return NULL; | 323 return NULL; |
| 324 return favorite; | 324 return favorite; |
| 325 } | 325 } |
| 326 | 326 |
| 327 void NetworkStateHandler::RequestScan() const { | 327 void NetworkStateHandler::RequestScan() const { |
| 328 NET_LOG_USER("RequestScan", ""); | 328 NET_LOG_USER("RequestScan", ""); |
| 329 shill_property_handler_->RequestScan(); | 329 shill_property_handler_->RequestScan(); |
| 330 } | 330 } |
| 331 | 331 |
| 332 void NetworkStateHandler::WaitForScan(const std::string& type, | 332 void NetworkStateHandler::WaitForScan(const std::string& type, |
| (...skipping 15 matching lines...) Expand all Loading... |
| 348 NetworkState* network = GetModifiableNetworkState(service_path); | 348 NetworkState* network = GetModifiableNetworkState(service_path); |
| 349 if (network) | 349 if (network) |
| 350 network->set_update_requested(true); | 350 network->set_update_requested(true); |
| 351 NET_LOG_EVENT("RequestUpdate", service_path); | 351 NET_LOG_EVENT("RequestUpdate", service_path); |
| 352 shill_property_handler_->RequestProperties( | 352 shill_property_handler_->RequestProperties( |
| 353 ManagedState::MANAGED_TYPE_NETWORK, service_path); | 353 ManagedState::MANAGED_TYPE_NETWORK, service_path); |
| 354 } | 354 } |
| 355 | 355 |
| 356 void NetworkStateHandler::RequestUpdateForAllNetworks() { | 356 void NetworkStateHandler::RequestUpdateForAllNetworks() { |
| 357 NET_LOG_EVENT("RequestUpdateForAllNetworks", ""); | 357 NET_LOG_EVENT("RequestUpdateForAllNetworks", ""); |
| 358 // Use favorite_list_ so that all services, visible and non, are updated. | 358 for (ManagedStateList::iterator iter = network_list_.begin(); |
| 359 for (ManagedStateList::iterator iter = favorite_list_.begin(); | 359 iter != network_list_.end(); ++iter) { |
| 360 iter != favorite_list_.end(); ++iter) { | |
| 361 ManagedState* network = *iter; | 360 ManagedState* network = *iter; |
| 362 network->set_update_requested(true); | 361 network->set_update_requested(true); |
| 363 shill_property_handler_->RequestProperties( | 362 shill_property_handler_->RequestProperties( |
| 364 ManagedState::MANAGED_TYPE_NETWORK, network->path()); | 363 ManagedState::MANAGED_TYPE_NETWORK, network->path()); |
| 365 } | 364 } |
| 366 } | 365 } |
| 367 | 366 |
| 368 void NetworkStateHandler::ClearLastErrorForNetwork( | 367 void NetworkStateHandler::ClearLastErrorForNetwork( |
| 369 const std::string& service_path) { | 368 const std::string& service_path) { |
| 370 NetworkState* network = GetModifiableNetworkState(service_path); | 369 NetworkState* network = GetModifiableNetworkState(service_path); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 477 managed_map.erase(found); | 476 managed_map.erase(found); |
| 478 } | 477 } |
| 479 list_entries.insert(path); | 478 list_entries.insert(path); |
| 480 } | 479 } |
| 481 // Delete any remaining entries in managed_map. | 480 // Delete any remaining entries in managed_map. |
| 482 STLDeleteContainerPairSecondPointers(managed_map.begin(), managed_map.end()); | 481 STLDeleteContainerPairSecondPointers(managed_map.begin(), managed_map.end()); |
| 483 } | 482 } |
| 484 | 483 |
| 485 void NetworkStateHandler::ProfileListChanged() { | 484 void NetworkStateHandler::ProfileListChanged() { |
| 486 NET_LOG_EVENT("ProfileListChanged", "Re-Requesting Network Properties"); | 485 NET_LOG_EVENT("ProfileListChanged", "Re-Requesting Network Properties"); |
| 487 for (ManagedStateList::iterator iter = favorite_list_.begin(); | 486 for (ManagedStateList::iterator iter = network_list_.begin(); |
| 488 iter != favorite_list_.end(); ++iter) { | 487 iter != network_list_.end(); ++iter) { |
| 489 shill_property_handler_->RequestProperties( | 488 shill_property_handler_->RequestProperties( |
| 490 ManagedState::MANAGED_TYPE_NETWORK, (*iter)->path()); | 489 ManagedState::MANAGED_TYPE_NETWORK, (*iter)->path()); |
| 491 } | 490 } |
| 492 } | 491 } |
| 493 | 492 |
| 494 void NetworkStateHandler::UpdateManagedStateProperties( | 493 void NetworkStateHandler::UpdateManagedStateProperties( |
| 495 ManagedState::ManagedType type, | 494 ManagedState::ManagedType type, |
| 496 const std::string& path, | 495 const std::string& path, |
| 497 const base::DictionaryValue& properties) { | 496 const base::DictionaryValue& properties) { |
| 498 ManagedStateList* managed_list = GetManagedList(type); | 497 ManagedStateList* managed_list = GetManagedList(type); |
| 499 ManagedState* managed = GetModifiableManagedState(managed_list, path); | 498 ManagedState* managed = GetModifiableManagedState(managed_list, path); |
| 500 if (!managed) { | 499 if (!managed) { |
| 501 if (type != ManagedState::MANAGED_TYPE_FAVORITE) { | 500 if (type != ManagedState::MANAGED_TYPE_FAVORITE) { |
| 502 // The network has been removed from the list of visible networks. | 501 // The network has been removed from the list of visible networks. |
| 503 NET_LOG_DEBUG("UpdateManagedStateProperties: Not found", path); | 502 NET_LOG_DEBUG("UpdateManagedStateProperties: Not found", path); |
| 504 return; | 503 return; |
| 505 } | 504 } |
| 506 // A Favorite may not have been created yet if it was added later (e.g. | 505 // A Favorite may not have been created yet if it was added later (e.g. |
| 507 // through ConfigureService) since ServiceCompleteList updates are not | 506 // through ConfigureService) since ServiceCompleteList updates are not |
| 508 // emitted. Add and update the state here. | 507 // emitted. Add and update the state here. |
| 509 managed = new FavoriteState(path); | 508 managed = new FavoriteState(path); |
| 510 managed_list->push_back(managed); | 509 managed_list->push_back(managed); |
| 511 } | 510 } |
| 512 managed->set_update_received(); | 511 managed->set_update_received(); |
| 513 | 512 |
| 514 std::string desc = GetManagedStateLogType(managed) + " Properties Received"; | 513 std::string desc = GetManagedStateLogType(managed) + " PropertiesReceived"; |
| 515 NET_LOG_DEBUG(desc, GetManagedStateLogName(managed)); | 514 NET_LOG_DEBUG(desc, GetManagedStateLogName(managed)); |
| 516 | 515 |
| 517 if (type == ManagedState::MANAGED_TYPE_NETWORK) { | 516 if (type == ManagedState::MANAGED_TYPE_NETWORK) { |
| 518 UpdateNetworkStateProperties(managed->AsNetworkState(), properties); | 517 UpdateNetworkStateProperties(managed->AsNetworkState(), properties); |
| 519 } else { | 518 } else { |
| 520 // Device, Favorite | 519 // Device, Favorite |
| 521 for (base::DictionaryValue::Iterator iter(properties); | 520 for (base::DictionaryValue::Iterator iter(properties); |
| 522 !iter.IsAtEnd(); iter.Advance()) { | 521 !iter.IsAtEnd(); iter.Advance()) { |
| 523 managed->PropertyChanged(iter.key(), iter.value()); | 522 managed->PropertyChanged(iter.key(), iter.value()); |
| 524 } | 523 } |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 673 NET_LOG_DEBUG("FavoriteListChanged", | 672 NET_LOG_DEBUG("FavoriteListChanged", |
| 674 base::StringPrintf("Size:%" PRIuS, favorite_list_.size())); | 673 base::StringPrintf("Size:%" PRIuS, favorite_list_.size())); |
| 675 // The FavoriteState list only changes when the NetworkState list changes, | 674 // The FavoriteState list only changes when the NetworkState list changes, |
| 676 // so no need to signal observers here again. | 675 // so no need to signal observers here again. |
| 677 | 676 |
| 678 // Update UMA stats. | 677 // Update UMA stats. |
| 679 size_t shared = 0, unshared = 0; | 678 size_t shared = 0, unshared = 0; |
| 680 for (ManagedStateList::iterator iter = favorite_list_.begin(); | 679 for (ManagedStateList::iterator iter = favorite_list_.begin(); |
| 681 iter != favorite_list_.end(); ++iter) { | 680 iter != favorite_list_.end(); ++iter) { |
| 682 FavoriteState* favorite = (*iter)->AsFavoriteState(); | 681 FavoriteState* favorite = (*iter)->AsFavoriteState(); |
| 683 if (!favorite->IsFavorite()) | 682 if (!favorite->is_favorite()) |
| 684 continue; | 683 continue; |
| 685 if (favorite->IsPrivate()) | 684 if (favorite->IsPrivate()) |
| 686 ++unshared; | 685 ++unshared; |
| 687 else | 686 else |
| 688 ++shared; | 687 ++shared; |
| 689 } | 688 } |
| 690 UMA_HISTOGRAM_COUNTS_100("Networks.RememberedShared", shared); | 689 UMA_HISTOGRAM_COUNTS_100("Networks.RememberedShared", shared); |
| 691 UMA_HISTOGRAM_COUNTS_100("Networks.RememberedUnshared", unshared); | 690 UMA_HISTOGRAM_COUNTS_100("Networks.RememberedUnshared", unshared); |
| 692 } else if (type == ManagedState::MANAGED_TYPE_DEVICE) { | 691 } else if (type == ManagedState::MANAGED_TYPE_DEVICE) { |
| 693 NotifyDeviceListChanged(); | 692 NotifyDeviceListChanged(); |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 841 } | 840 } |
| 842 | 841 |
| 843 if (type.MatchesType(shill::kTypeCellular)) | 842 if (type.MatchesType(shill::kTypeCellular)) |
| 844 return shill::kTypeCellular; | 843 return shill::kTypeCellular; |
| 845 | 844 |
| 846 NOTREACHED(); | 845 NOTREACHED(); |
| 847 return std::string(); | 846 return std::string(); |
| 848 } | 847 } |
| 849 | 848 |
| 850 } // namespace chromeos | 849 } // namespace chromeos |
| OLD | NEW |