Chromium Code Reviews| Index: chrome/browser/chromeos/options/network_connect.cc |
| diff --git a/chrome/browser/chromeos/options/network_connect.cc b/chrome/browser/chromeos/options/network_connect.cc |
| index 955625b378412fcfd41ac188463d09065c14797a..c4b3eb2e757c8f862fdc62e4267bbbfa8289a96e 100644 |
| --- a/chrome/browser/chromeos/options/network_connect.cc |
| +++ b/chrome/browser/chromeos/options/network_connect.cc |
| @@ -6,29 +6,24 @@ |
| #include "ash/shell.h" |
| #include "ash/shell_delegate.h" |
| +#include "ash/system/chromeos/network/network_observer.h" |
| +#include "ash/system/tray/system_tray_notifier.h" |
| +#include "base/utf_string_conversions.h" |
| #include "chrome/browser/chromeos/cros/cros_library.h" |
| #include "chrome/browser/chromeos/cros/network_library.h" |
| #include "chrome/browser/chromeos/enrollment_dialog_view.h" |
| #include "chrome/browser/chromeos/options/network_config_view.h" |
| #include "chrome/browser/profiles/profile_manager.h" |
| +#include "chrome/browser/ui/webui/chromeos/mobile_setup_dialog.h" |
| +#include "grit/generated_resources.h" |
| +#include "third_party/cros_system_api/dbus/service_constants.h" |
| +#include "ui/base/l10n/l10n_util.h" |
| namespace chromeos { |
| namespace network_connect { |
| namespace { |
| -void ActivateCellular(chromeos::CellularNetwork* cellular) { |
| - DCHECK(cellular); |
| - chromeos::NetworkLibrary* cros = |
| - chromeos::CrosLibrary::Get()->GetNetworkLibrary(); |
| - if (cros->CellularDeviceUsesDirectActivation()) { |
| - cellular->StartActivation(); |
| - } else { |
| - ash::Shell::GetInstance()->delegate()->OpenMobileSetup( |
| - cellular->service_path()); |
| - } |
| -} |
| - |
| void DoConnect(Network* network, gfx::NativeWindow parent_window) { |
| NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); |
| if (network->type() == TYPE_VPN) { |
| @@ -65,7 +60,7 @@ void DoConnect(Network* network, gfx::NativeWindow parent_window) { |
| CellularNetwork* cellular = static_cast<CellularNetwork*>(network); |
| if (cellular->activation_state() != ACTIVATION_STATE_ACTIVATED || |
| cellular->out_of_credits()) { |
| - ActivateCellular(cellular); |
| + ActivateCellular(cellular->service_path()); |
| } else { |
| cros->ConnectToCellularNetwork(cellular); |
| } |
| @@ -74,6 +69,52 @@ void DoConnect(Network* network, gfx::NativeWindow parent_window) { |
| } // namespace |
| +void ActivateCellular(const std::string& service_path) { |
| + chromeos::NetworkLibrary* cros = |
| + chromeos::CrosLibrary::Get()->GetNetworkLibrary(); |
| + if (!cros->CellularDeviceUsesDirectActivation()) { |
| + // For non direct activation, show the mobile setup dialog which can be |
| + // used to activate the network. |
| + ShowMobileSetup(service_path); |
| + return; |
| + } |
| + chromeos::Network* network = NULL; |
| + network = cros-> FindNetworkByPath(service_path); |
|
tbarzic
2013/05/24 21:24:34
FindCellularNetworkByPath? That way you don't have
stevenjb
2013/05/24 22:17:45
Yes, done (copy/pasted old code).
|
| + if (!network || network->type() != chromeos::TYPE_CELLULAR) |
| + return; |
| + chromeos::CellularNetwork* cellular = |
| + static_cast<chromeos::CellularNetwork*>(network); |
| + if (cellular->activation_state() != chromeos::ACTIVATION_STATE_ACTIVATED) |
| + cellular->StartActivation(); |
| + return; |
| +} |
| + |
| +void ShowMobileSetup(const std::string& service_path) { |
| + NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); |
| + const CellularNetwork* cellular = |
| + cros->FindCellularNetworkByPath(service_path); |
| + if (cellular && !cellular->activated() && |
| + cellular->activate_over_non_cellular_network() && |
| + (!cros->connected_network() || !cros->connected_network()->online())) { |
| + NetworkTechnology technology = cellular->network_technology(); |
| + ash::NetworkObserver::NetworkType network_type = |
| + (technology == chromeos::NETWORK_TECHNOLOGY_LTE || |
| + technology == chromeos::NETWORK_TECHNOLOGY_LTE_ADVANCED) |
| + ? ash::NetworkObserver::NETWORK_CELLULAR_LTE |
| + : ash::NetworkObserver::NETWORK_CELLULAR; |
| + ash::Shell::GetInstance()->system_tray_notifier()->NotifySetNetworkMessage( |
| + NULL, |
| + ash::NetworkObserver::ERROR_CONNECT_FAILED, |
| + network_type, |
| + l10n_util::GetStringUTF16(IDS_NETWORK_ACTIVATION_ERROR_TITLE), |
| + l10n_util::GetStringFUTF16(IDS_NETWORK_ACTIVATION_NEEDS_CONNECTION, |
| + UTF8ToUTF16((cellular->name()))), |
| + std::vector<string16>()); |
| + return; |
| + } |
| + MobileSetupDialog::Show(service_path); |
| +} |
| + |
| ConnectResult ConnectToNetwork(const std::string& service_path, |
| gfx::NativeWindow parent_window) { |
| NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); |
| @@ -107,7 +148,7 @@ ConnectResult ConnectToNetwork(const std::string& service_path, |
| if (network->type() == TYPE_CELLULAR) { |
| CellularNetwork* cellular = static_cast<CellularNetwork*>(network); |
| if (cellular->NeedsActivation() || cellular->out_of_credits()) { |
| - ActivateCellular(cellular); |
| + ActivateCellular(service_path); |
| return CONNECT_STARTED; |
| } |
| if (cellular->activation_state() == ACTIVATION_STATE_ACTIVATING) |