diff options
author | armansito@chromium.org <armansito@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-15 07:19:48 +0000 |
---|---|---|
committer | armansito@chromium.org <armansito@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-15 07:19:48 +0000 |
commit | c8dd69b59f34f6c0b935e70f1653cfd737507336 (patch) | |
tree | 99a438a7a253c192ecefac417958659628ebedb3 /ash/system/chromeos/network/network_connect.cc | |
parent | f500341633a4c5e0eee8ce21320d9d559ef8daf9 (diff) | |
download | chromium_src-c8dd69b59f34f6c0b935e70f1653cfd737507336.zip chromium_src-c8dd69b59f34f6c0b935e70f1653cfd737507336.tar.gz chromium_src-c8dd69b59f34f6c0b935e70f1653cfd737507336.tar.bz2 |
Insufficient information on activation details should be handled correctly.
This CL makes the following two changes for the case where the service property
"Cellular.ActivationState" has value "flimflam::kActivationStateUnknown" and
payment portal URL is unavailable:
1. NetworkConnectionHandler won't fail to connect with an activation error.
2. InternetOptionsHandler will hide the "View Account" and "Activate" buttons
if a payment portal URL is unavailable.
This CL also removes the NetworkConnectionHandler behavior that causes
a connect operation to fail with an activation related error when
Cellular.OutOfCredits is set to true, which leads to a confusing user
experience.
BUG=272324
Review URL: https://chromiumcodereview.appspot.com/22950007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@217759 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/system/chromeos/network/network_connect.cc')
-rw-r--r-- | ash/system/chromeos/network/network_connect.cc | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/ash/system/chromeos/network/network_connect.cc b/ash/system/chromeos/network/network_connect.cc index 3aca162..688c910 100644 --- a/ash/system/chromeos/network/network_connect.cc +++ b/ash/system/chromeos/network/network_connect.cc @@ -254,25 +254,27 @@ void ConnectToNetwork(const std::string& service_path, void ActivateCellular(const std::string& service_path) { NET_LOG_USER("ActivateCellular", service_path); + const NetworkState* cellular = + NetworkHandler::Get()->network_state_handler()-> + GetNetworkState(service_path); + if (!cellular || cellular->type() != flimflam::kTypeCellular) { + NET_LOG_ERROR("ActivateCellular with no Service", service_path); + return; + } const DeviceState* cellular_device = NetworkHandler::Get()->network_state_handler()-> - GetDeviceStateByType(flimflam::kTypeCellular); + GetDeviceState(cellular->device_path()); if (!cellular_device) { NET_LOG_ERROR("ActivateCellular with no Device", service_path); return; } if (!IsDirectActivatedCarrier(cellular_device->carrier())) { // For non direct activation, show the mobile setup dialog which can be - // used to activate the network. - ash::Shell::GetInstance()->system_tray_delegate()->ShowMobileSetup( - service_path); - return; - } - const NetworkState* cellular = - NetworkHandler::Get()->network_state_handler()-> - GetNetworkState(service_path); - if (!cellular || cellular->type() != flimflam::kTypeCellular) { - NET_LOG_ERROR("ActivateCellular with no Service", service_path); + // used to activate the network. Only show the dialog, if an account + // management URL is available. + if (!cellular->payment_url().empty()) + ash::Shell::GetInstance()->system_tray_delegate()->ShowMobileSetup( + service_path); return; } if (cellular->activation_state() == flimflam::kActivationStateActivated) { |