summaryrefslogtreecommitdiffstats
path: root/ash/system/chromeos/network/network_connect.cc
diff options
context:
space:
mode:
authorarmansito@chromium.org <armansito@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-15 07:19:48 +0000
committerarmansito@chromium.org <armansito@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-15 07:19:48 +0000
commitc8dd69b59f34f6c0b935e70f1653cfd737507336 (patch)
tree99a438a7a253c192ecefac417958659628ebedb3 /ash/system/chromeos/network/network_connect.cc
parentf500341633a4c5e0eee8ce21320d9d559ef8daf9 (diff)
downloadchromium_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.cc24
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) {