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

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

Issue 14137017: Add TechnologyState to NetworkStateHandler. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 8 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/bind.h"
8 #include "base/format_macros.h" 8 #include "base/format_macros.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 123
124 void NetworkStateHandler::AddObserver(NetworkStateHandlerObserver* observer) { 124 void NetworkStateHandler::AddObserver(NetworkStateHandlerObserver* observer) {
125 observers_.AddObserver(observer); 125 observers_.AddObserver(observer);
126 } 126 }
127 127
128 void NetworkStateHandler::RemoveObserver( 128 void NetworkStateHandler::RemoveObserver(
129 NetworkStateHandlerObserver* observer) { 129 NetworkStateHandlerObserver* observer) {
130 observers_.RemoveObserver(observer); 130 observers_.RemoveObserver(observer);
131 } 131 }
132 132
133 bool NetworkStateHandler::TechnologyAvailable(const std::string& type) const { 133 NetworkStateHandler::TechnologyState NetworkStateHandler::GetTechnologyState(
134 if (type == kMatchTypeMobile) { 134 const std::string& type) const {
135 return shill_property_handler_->TechnologyAvailable(flimflam::kTypeWimax) || 135 std::string technology = GetTechnologyForType(type);
136 shill_property_handler_->TechnologyAvailable(flimflam::kTypeCellular); 136 TechnologyState state;
137 } 137 if (shill_property_handler_->IsTechnologyEnabled(technology))
138 return shill_property_handler_->TechnologyAvailable(type); 138 state = TECHNOLOGY_ENABLED;
139 else if (shill_property_handler_->IsTechnologyEnabling(technology))
140 state = TECHNOLOGY_ENABLING;
141 else if (shill_property_handler_->IsTechnologyUninitialized(technology))
142 state = TECHNOLOGY_UNINITIALIZED;
143 else if (shill_property_handler_->IsTechnologyAvailable(technology))
144 state = TECHNOLOGY_AVAILABLE;
145 else
146 state = TECHNOLOGY_UNINITIALIZED;
147 VLOG(2) << "GetTechnologyState: " << type << " = " << state;
148 return state;
139 } 149 }
140 150
141 bool NetworkStateHandler::TechnologyEnabled(const std::string& type) const {
142 if (type == kMatchTypeMobile) {
143 return shill_property_handler_->TechnologyEnabled(flimflam::kTypeWimax) ||
144 shill_property_handler_->TechnologyEnabled(flimflam::kTypeCellular);
145 }
146 return shill_property_handler_->TechnologyEnabled(type);
147 }
148
149 bool NetworkStateHandler::TechnologyUninitialized(
150 const std::string& type) const {
151 if (type == kMatchTypeMobile) {
152 return
153 shill_property_handler_->TechnologyUninitialized(
154 flimflam::kTypeWimax) ||
155 shill_property_handler_->TechnologyUninitialized(
156 flimflam::kTypeCellular);
157 }
158 return shill_property_handler_->TechnologyUninitialized(type);
159 }
160
161
162 void NetworkStateHandler::SetTechnologyEnabled( 151 void NetworkStateHandler::SetTechnologyEnabled(
163 const std::string& type, 152 const std::string& type,
164 bool enabled, 153 bool enabled,
165 const network_handler::ErrorCallback& error_callback) { 154 const network_handler::ErrorCallback& error_callback) {
166 if (type == kMatchTypeMobile) { 155 std::string technology = GetTechnologyForType(type);
167 shill_property_handler_->SetTechnologyEnabled( 156 network_event_log::AddEntry(
168 flimflam::kTypeCellular, enabled, error_callback); 157 kLogModule, "SetTechnologyEnabled",
169 shill_property_handler_->SetTechnologyEnabled( 158 base::StringPrintf("%s:%d", technology.c_str(), enabled));
170 flimflam::kTypeWimax, enabled, error_callback); 159 shill_property_handler_->SetTechnologyEnabled(
171 } else { 160 technology, enabled, error_callback);
172 shill_property_handler_->SetTechnologyEnabled( 161 ManagerPropertyChanged(); // Technology state changed -> ENABLING
173 type, enabled, error_callback);
174 }
175 } 162 }
176 163
177 const DeviceState* NetworkStateHandler::GetDeviceState( 164 const DeviceState* NetworkStateHandler::GetDeviceState(
178 const std::string& device_path) const { 165 const std::string& device_path) const {
179 return GetModifiableDeviceState(device_path); 166 return GetModifiableDeviceState(device_path);
180 } 167 }
181 168
182 const DeviceState* NetworkStateHandler::GetDeviceStateByType( 169 const DeviceState* NetworkStateHandler::GetDeviceStateByType(
183 const std::string& type) const { 170 const std::string& type) const {
184 for (ManagedStateList::const_iterator iter = device_list_.begin(); 171 for (ManagedStateList::const_iterator iter = device_list_.begin();
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 network_event_log::AddEntry(kLogModule, "DevicePropertyUpdated", detail); 458 network_event_log::AddEntry(kLogModule, "DevicePropertyUpdated", detail);
472 459
473 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, 460 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_,
474 DeviceListChanged()); 461 DeviceListChanged());
475 462
476 if (key == flimflam::kScanningProperty && device->scanning() == false) 463 if (key == flimflam::kScanningProperty && device->scanning() == false)
477 ScanCompleted(device->type()); 464 ScanCompleted(device->type());
478 } 465 }
479 466
480 void NetworkStateHandler::ManagerPropertyChanged() { 467 void NetworkStateHandler::ManagerPropertyChanged() {
468 network_event_log::AddEntry(kLogModule, "NetworkManagerChanged", "");
481 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, 469 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_,
482 NetworkManagerChanged()); 470 NetworkManagerChanged());
483 } 471 }
484 472
485 void NetworkStateHandler::ManagedStateListChanged( 473 void NetworkStateHandler::ManagedStateListChanged(
486 ManagedState::ManagedType type) { 474 ManagedState::ManagedType type) {
487 if (type == ManagedState::MANAGED_TYPE_NETWORK) { 475 if (type == ManagedState::MANAGED_TYPE_NETWORK) {
488 // Notify observers that the list of networks has changed. 476 // Notify observers that the list of networks has changed.
489 network_event_log::AddEntry( 477 network_event_log::AddEntry(
490 kLogModule, "NetworkListChanged", 478 kLogModule, "NetworkListChanged",
491 base::StringPrintf("Size: %"PRIuS, network_list_.size())); 479 base::StringPrintf("Size:%"PRIuS, network_list_.size()));
492 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, 480 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_,
493 NetworkListChanged()); 481 NetworkListChanged());
494 // The list order may have changed, so check if the default network changed. 482 // The list order may have changed, so check if the default network changed.
495 if (CheckDefaultNetworkChanged()) 483 if (CheckDefaultNetworkChanged())
496 OnDefaultNetworkChanged(); 484 OnDefaultNetworkChanged();
497 } else if (type == ManagedState::MANAGED_TYPE_DEVICE) { 485 } else if (type == ManagedState::MANAGED_TYPE_DEVICE) {
498 network_event_log::AddEntry( 486 network_event_log::AddEntry(
499 kLogModule, "DeviceListChanged", 487 kLogModule, "DeviceListChanged",
500 base::StringPrintf("Size: %"PRIuS, device_list_.size())); 488 base::StringPrintf("Size:%"PRIuS, device_list_.size()));
501 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, 489 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_,
502 DeviceListChanged()); 490 DeviceListChanged());
503 } else { 491 } else {
504 NOTREACHED(); 492 NOTREACHED();
505 } 493 }
506 } 494 }
507 495
508 //------------------------------------------------------------------------------ 496 //------------------------------------------------------------------------------
509 // Private methods 497 // Private methods
510 498
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 case ManagedState::MANAGED_TYPE_DEVICE: 533 case ManagedState::MANAGED_TYPE_DEVICE:
546 return &device_list_; 534 return &device_list_;
547 } 535 }
548 NOTREACHED(); 536 NOTREACHED();
549 return NULL; 537 return NULL;
550 } 538 }
551 539
552 void NetworkStateHandler::OnNetworkConnectionStateChanged( 540 void NetworkStateHandler::OnNetworkConnectionStateChanged(
553 NetworkState* network) { 541 NetworkState* network) {
554 DCHECK(network); 542 DCHECK(network);
555 std::string desc = base::StringPrintf(
556 "%s: %s", network->path().c_str(), network->connection_state().c_str());
557 network_event_log::AddEntry( 543 network_event_log::AddEntry(
558 kLogModule, "NetworkConnectionStateChanged", desc); 544 kLogModule, "NetworkConnectionStateChanged",
545 base::StringPrintf("%s:%s", network->path().c_str(),
546 network->connection_state().c_str()));
559 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, 547 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_,
560 NetworkConnectionStateChanged(network)); 548 NetworkConnectionStateChanged(network));
561 if (CheckDefaultNetworkChanged() || network->path() == default_network_path_) 549 if (CheckDefaultNetworkChanged() || network->path() == default_network_path_)
562 OnDefaultNetworkChanged(); 550 OnDefaultNetworkChanged();
563 } 551 }
564 552
565 bool NetworkStateHandler::CheckDefaultNetworkChanged() { 553 bool NetworkStateHandler::CheckDefaultNetworkChanged() {
566 std::string new_default_network_path; 554 std::string new_default_network_path;
567 const NetworkState* new_default_network = DefaultNetwork(); 555 const NetworkState* new_default_network = DefaultNetwork();
568 if (new_default_network) 556 if (new_default_network)
(...skipping 18 matching lines...) Expand all
587 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, 575 FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_,
588 NetworkPropertiesUpdated(network)); 576 NetworkPropertiesUpdated(network));
589 // If |connecting_network_| transitions to a non-idle, non-connecting state, 577 // If |connecting_network_| transitions to a non-idle, non-connecting state,
590 // clear it *after* signalling observers. 578 // clear it *after* signalling observers.
591 if (network->path() == connecting_network_ && 579 if (network->path() == connecting_network_ &&
592 !network->IsConnectingState() && 580 !network->IsConnectingState() &&
593 network->connection_state() != flimflam::kStateIdle) { 581 network->connection_state() != flimflam::kStateIdle) {
594 connecting_network_.clear(); 582 connecting_network_.clear();
595 network_event_log::AddEntry( 583 network_event_log::AddEntry(
596 kLogModule, "ClearConnectingNetwork", 584 kLogModule, "ClearConnectingNetwork",
597 base::StringPrintf("%s: %s", network->path().c_str(), 585 base::StringPrintf("%s:%s", network->path().c_str(),
598 network->connection_state().c_str())); 586 network->connection_state().c_str()));
599 } 587 }
600 } 588 }
601 589
602 void NetworkStateHandler::ScanCompleted(const std::string& type) { 590 void NetworkStateHandler::ScanCompleted(const std::string& type) {
603 size_t num_callbacks = scan_complete_callbacks_.count(type); 591 size_t num_callbacks = scan_complete_callbacks_.count(type);
604 network_event_log::AddEntry( 592 network_event_log::AddEntry(
605 kLogModule, "ScanCompleted", 593 kLogModule, "ScanCompleted",
606 base::StringPrintf("%s: %"PRIuS, type.c_str(), num_callbacks)); 594 base::StringPrintf("%s:%"PRIuS, type.c_str(), num_callbacks));
607 if (num_callbacks == 0) 595 if (num_callbacks == 0)
608 return; 596 return;
609 ScanCallbackList& callback_list = scan_complete_callbacks_[type]; 597 ScanCallbackList& callback_list = scan_complete_callbacks_[type];
610 for (ScanCallbackList::iterator iter = callback_list.begin(); 598 for (ScanCallbackList::iterator iter = callback_list.begin();
611 iter != callback_list.end(); ++iter) { 599 iter != callback_list.end(); ++iter) {
612 (*iter).Run(); 600 (*iter).Run();
613 } 601 }
614 scan_complete_callbacks_.erase(type); 602 scan_complete_callbacks_.erase(type);
615 } 603 }
616 604
605 std::string NetworkStateHandler::GetTechnologyForType(
606 const std::string& type) const {
607 if (type == kMatchTypeMobile) {
608 if (shill_property_handler_->IsTechnologyAvailable(flimflam::kTypeWimax))
609 return flimflam::kTypeWimax;
610 else
611 return flimflam::kTypeCellular;
612 }
613 if (type == kMatchTypeDefault || type == kMatchTypeNonVirtual ||
614 type == kMatchTypeWireless) {
615 NOTREACHED();
616 return flimflam::kTypeWifi;
617 }
618 return type;
619 }
620
617 } // namespace chromeos 621 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/network/network_state_handler.h ('k') | chromeos/network/network_state_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698