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

Unified Diff: ash/system/chromeos/network/network_state_list_detailed_view.cc

Issue 14137017: Add TechnologyState to NetworkStateHandler. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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 side-by-side diff with in-line comments
Download patch
Index: ash/system/chromeos/network/network_state_list_detailed_view.cc
diff --git a/ash/system/chromeos/network/network_state_list_detailed_view.cc b/ash/system/chromeos/network/network_state_list_detailed_view.cc
index 4eb231b113ee809d0722f0f13f4f7a1388c93f9d..3668b64ead4e386edd006d0e4d3c04090e574bf4 100644
--- a/ash/system/chromeos/network/network_state_list_detailed_view.cc
+++ b/ash/system/chromeos/network/network_state_list_detailed_view.cc
@@ -37,6 +37,7 @@
#include "ui/views/layout/fill_layout.h"
#include "ui/views/widget/widget.h"
+using chromeos::DeviceState;
using chromeos::NetworkState;
using chromeos::NetworkStateHandler;
@@ -235,12 +236,7 @@ void NetworkStateListDetailedView::ButtonPressed(views::Button* sender,
flimflam::kTypeWifi, true,
chromeos::network_handler::ErrorCallback());
} else if (sender == button_mobile_) {
- // TODO: This needs to be fixed to use
- // NetworkStateHandler::SetTechnologyEnabled instead. Currently
- // ToggleMobile has code to handle the locked SIM case, which cannot
- // be moved here yet due to dependencies on src/chrome/* - see,
- // crbug.com/222540.
- delegate->ToggleMobile();
+ ToggleMobile();
} else if (sender == settings_) {
delegate->ShowNetworkSettings();
} else if (sender == proxy_settings_) {
@@ -396,15 +392,11 @@ void NetworkStateListDetailedView::CreateNetworkExtra() {
void NetworkStateListDetailedView::UpdateHeaderButtons() {
NetworkStateHandler* handler = NetworkStateHandler::Get();
- if (button_wifi_) {
- button_wifi_->SetToggled(
- !handler->TechnologyEnabled(flimflam::kTypeWifi));
- }
+ if (button_wifi_)
+ UpdateTechnologyButton(button_wifi_, flimflam::kTypeWifi);
if (button_mobile_) {
- button_mobile_->SetToggled(!handler->TechnologyEnabled(
- NetworkStateHandler::kMatchTypeMobile));
- button_mobile_->SetVisible(handler->TechnologyAvailable(
- NetworkStateHandler::kMatchTypeMobile));
+ UpdateTechnologyButton(
+ button_mobile_, NetworkStateHandler::kMatchTypeMobile);
}
if (proxy_settings_)
proxy_settings_->SetEnabled(handler->DefaultNetwork() != NULL);
@@ -412,6 +404,31 @@ void NetworkStateListDetailedView::UpdateHeaderButtons() {
static_cast<views::View*>(footer())->Layout();
}
+void NetworkStateListDetailedView::UpdateTechnologyButton(
+ TrayPopupHeaderButton* button,
+ const std::string& technology) {
+ NetworkStateHandler::TechnologyState state =
+ NetworkStateHandler::Get()->GetTechnologyState(technology);
+ if (state == NetworkStateHandler::TECHNOLOGY_UNAVAILABLE) {
+ button->SetVisible(false);
+ return;
+ }
+ button->SetVisible(true);
+ if (state == NetworkStateHandler::TECHNOLOGY_AVAILABLE) {
+ button->SetEnabled(true);
+ button->SetToggled(true);
+ } else if (state == NetworkStateHandler::TECHNOLOGY_ENABLED) {
+ button->SetEnabled(true);
+ button->SetToggled(false);
+ } else if (state == NetworkStateHandler::TECHNOLOGY_ENABLING) {
+ button->SetEnabled(false);
+ button->SetToggled(false);
+ } else { // Initializing
+ button->SetEnabled(false);
+ button->SetToggled(true);
+ }
+}
+
void NetworkStateListDetailedView::UpdateNetworks(
const NetworkStateList& networks) {
network_list_.clear();
@@ -488,7 +505,9 @@ void NetworkStateListDetailedView::UpdateNetworkList() {
}
bool NetworkStateListDetailedView::CreateOrUpdateInfoLabel(
- int index, const string16& text, views::Label** label) {
+ int index,
+ const string16& text,
+ views::Label** label) {
if (*label == NULL) {
*label = CreateMenuInfoLabel(text);
scroll_content()->AddChildViewAt(*label, index);
@@ -663,22 +682,34 @@ void NetworkStateListDetailedView::UpdateNetworkExtra() {
NetworkStateHandler* handler = NetworkStateHandler::Get();
if (other_wifi_) {
DCHECK(turn_on_wifi_);
- if (!handler->TechnologyAvailable(flimflam::kTypeWifi)) {
+ NetworkStateHandler::TechnologyState state =
+ handler->GetTechnologyState(flimflam::kTypeWifi);
+ if (state == NetworkStateHandler::TECHNOLOGY_UNAVAILABLE) {
turn_on_wifi_->SetVisible(false);
other_wifi_->SetVisible(false);
- } else if (!handler->TechnologyEnabled(flimflam::kTypeWifi)) {
- turn_on_wifi_->SetVisible(true);
- other_wifi_->SetVisible(false);
} else {
- turn_on_wifi_->SetVisible(false);
- other_wifi_->SetVisible(true);
+ if (state == NetworkStateHandler::TECHNOLOGY_AVAILABLE) {
+ turn_on_wifi_->SetVisible(true);
+ turn_on_wifi_->SetEnabled(true);
+ other_wifi_->SetVisible(false);
+ } else if (state == NetworkStateHandler::TECHNOLOGY_ENABLED) {
+ turn_on_wifi_->SetVisible(false);
+ other_wifi_->SetVisible(true);
+ } else {
+ // Initializing or Enabling
+ turn_on_wifi_->SetVisible(true);
+ turn_on_wifi_->SetEnabled(false);
+ other_wifi_->SetVisible(false);
+ }
}
layout_parent = other_wifi_->parent();
}
if (other_mobile_) {
bool show_other_mobile = false;
- if (handler->TechnologyAvailable(NetworkStateHandler::kMatchTypeMobile)) {
+ NetworkStateHandler::TechnologyState state =
+ handler->GetTechnologyState(NetworkStateHandler::kMatchTypeMobile);
+ if (state != NetworkStateHandler::TECHNOLOGY_UNAVAILABLE) {
const chromeos::DeviceState* device =
handler->GetDeviceStateByType(NetworkStateHandler::kMatchTypeMobile);
show_other_mobile = (device && device->support_network_scan());
@@ -686,7 +717,7 @@ void NetworkStateListDetailedView::UpdateNetworkExtra() {
if (show_other_mobile) {
other_mobile_->SetVisible(true);
other_mobile_->SetEnabled(
- handler->TechnologyEnabled(NetworkStateHandler::kMatchTypeMobile));
+ state == NetworkStateHandler::TECHNOLOGY_ENABLED);
} else {
other_mobile_->SetVisible(false);
}
@@ -803,6 +834,32 @@ void NetworkStateListDetailedView::ConnectToNetwork(
}
}
+void NetworkStateListDetailedView::ToggleMobile() {
+ NetworkStateHandler* handler = NetworkStateHandler::Get();
+ bool enabled =
+ handler->TechnologyEnabled(NetworkStateHandler::kMatchTypeMobile);
+ if (enabled) {
+ handler->SetTechnologyEnabled(
+ NetworkStateHandler::kMatchTypeMobile, false,
+ chromeos::network_handler::ErrorCallback());
+ } else {
+ const DeviceState* mobile =
+ handler->GetDeviceStateByType(NetworkStateHandler::kMatchTypeMobile);
+ if (!mobile) {
+ LOG(ERROR) << "Mobile device not found.";
+ return;
+ }
+ if (!mobile->sim_lock_type().empty() || mobile->IsSimAbsent()) {
+ // TODO(stevenjb): Rename ToggleMobile() to ShowMobileSimDialog()
+ // when NetworkListDetailedView is dperecated. crbug.com/222540.
Greg Spencer (Chromium) 2013/04/11 21:35:12 dperecated --> deprecated
stevenjb 2013/04/15 18:49:33 Done.
+ ash::Shell::GetInstance()->system_tray_delegate()->ToggleMobile();
+ } else {
+ handler->SetTechnologyEnabled(
+ NetworkStateHandler::kMatchTypeMobile, true,
+ chromeos::network_handler::ErrorCallback());
+ }
+ }
+}
} // namespace tray
} // namespace internal

Powered by Google App Engine
This is Rietveld 408576698