Chromium Code Reviews| 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 |