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

Unified Diff: chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc

Issue 561073002: Use ONC carrier info in JS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@issue_279351_internet_options_10a
Patch Set: Rebase Created 6 years, 3 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: chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
diff --git a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
index 23ee651dce2ab45cc62c8cbd8b46325496aeb1e7..a2f008b57f88682a24c4eac04748f2008f1604fc 100644
--- a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
+++ b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
@@ -123,8 +123,6 @@ const char kTagErrorMessage[] = "errorMessage";
const char kTagForget[] = "forget";
const char kTagOptions[] = "options";
const char kTagRememberedList[] = "rememberedList";
-const char kTagCarriers[] = "carriers";
-const char kTagCurrentCarrierIndex[] = "currentCarrierIndex";
const char kTagShowViewAccountButton[] = "showViewAccountButton";
const char kTagTrue[] = "true";
const char kTagVpnList[] = "vpnList";
@@ -189,98 +187,46 @@ base::DictionaryValue* BuildNetworkDictionary(
return network_info.release();
}
-// Given a list of supported carrier's by the device, return the index of
-// the carrier the device is currently using.
-int FindCurrentCarrierIndex(const base::ListValue* carriers,
- const DeviceState* device) {
- DCHECK(carriers);
- DCHECK(device);
- bool gsm = (device->technology_family() == shill::kTechnologyFamilyGsm);
- int index = 0;
- for (base::ListValue::const_iterator it = carriers->begin();
- it != carriers->end(); ++it, ++index) {
- std::string value;
- if (!(*it)->GetAsString(&value))
- continue;
- // For GSM devices the device name will be empty, so simply select
- // the Generic UMTS carrier option if present.
- if (gsm && (value == shill::kCarrierGenericUMTS))
- return index;
- // For other carriers, the service name will match the carrier name.
- if (value == device->carrier())
- return index;
- }
- return -1;
-}
+bool ShowViewAccountButton(const NetworkState* cellular) {
+ if (cellular->activation_state() != shill::kActivationStateActivating &&
+ cellular->activation_state() != shill::kActivationStateActivated)
+ return false;
-void PopulateCellularDetails(const NetworkState* cellular,
- base::DictionaryValue* dictionary) {
- dictionary->SetBoolean(kTagCarrierSelectFlag,
- CommandLine::ForCurrentProcess()->HasSwitch(
- chromeos::switches::kEnableCarrierSwitching));
-
- // These default to empty and are only set if device != NULL.
- std::string carrier_id;
- std::string mdn;
-
- // Device settings.
const DeviceState* device =
NetworkHandler::Get()->network_state_handler()->GetDeviceState(
cellular->device_path());
- if (device) {
- const base::DictionaryValue& device_properties = device->properties();
-
- carrier_id = device->home_provider_id();
- device_properties.GetStringWithoutPathExpansion(shill::kMdnProperty, &mdn);
-
- const base::ListValue* supported_carriers;
- if (device_properties.GetListWithoutPathExpansion(
- shill::kSupportedCarriersProperty, &supported_carriers)) {
- dictionary->Set(kTagCarriers, supported_carriers->DeepCopy());
- dictionary->SetInteger(
- kTagCurrentCarrierIndex,
- FindCurrentCarrierIndex(supported_carriers, device));
- } else {
- // In case of any error, set the current carrier tag to -1 indicating
- // to the JS code to fallback to a single carrier.
- dictionary->SetInteger(kTagCurrentCarrierIndex, -1);
- }
+
+ // If no online payment URL was provided by shill, Check to see if the
+ // MobileConfig carrier indicates that "View Account" should be shown.
+ if (cellular->payment_url().empty()) {
+ if (!device || !MobileConfig::GetInstance()->IsReady())
+ return false;
+ const MobileConfig::Carrier* carrier =
+ MobileConfig::GetInstance()->GetCarrier(device->home_provider_id());
+ if (!carrier || !carrier->show_portal_button())
+ return false;
}
- if (cellular->activation_state() == shill::kActivationStateActivating ||
- cellular->activation_state() == shill::kActivationStateActivated) {
- // TODO(stevenjb): Determine if we actually need this check. The payment url
- // property is commented as 'Deprecated' in service_constants.h and appears
- // to be unset in Shill, but we still reference it in mobile_setup.cc.
- bool may_show_portal_button = !cellular->payment_url().empty();
-
- // If no online payment URL was provided by shill, fall back to
- // MobileConfig to determine if the "View Account" should be shown.
- if (!may_show_portal_button && MobileConfig::GetInstance()->IsReady()) {
- const MobileConfig::Carrier* carrier =
- MobileConfig::GetInstance()->GetCarrier(carrier_id);
- may_show_portal_button = carrier && carrier->show_portal_button();
- }
- if (may_show_portal_button) {
- // The button should be shown for a LTE network even when the LTE network
- // is not connected, but CrOS is online. This is done to enable users to
- // update their plan even if they are out of credits.
- // The button should not be shown when the device's mdn is not set,
- // because the network's proper portal url cannot be generated without it
- const NetworkState* default_network =
- NetworkHandler::Get()->network_state_handler()->DefaultNetwork();
- const std::string& technology = cellular->network_technology();
- bool force_show_view_account_button =
- (technology == shill::kNetworkTechnologyLte ||
- technology == shill::kNetworkTechnologyLteAdvanced) &&
- default_network && !mdn.empty();
-
- // The button will trigger ShowMorePlanInfoCallback() which will open
- // carrier specific portal.
- if (cellular->IsConnectedState() || force_show_view_account_button)
- dictionary->SetBoolean(kTagShowViewAccountButton, true);
+ if (!cellular->IsConnectedState()) {
+ // Disconnected LTE networks should show the button if we are online and
+ // the device's MDN is set. This is to enable users to update their plan
+ // if they are out of credits.
+ if (!NetworkHandler::Get()->network_state_handler()->DefaultNetwork())
+ return false;
+ const std::string& technology = cellular->network_technology();
+ if (technology != shill::kNetworkTechnologyLte &&
+ technology != shill::kNetworkTechnologyLteAdvanced)
+ return false;
+ std::string mdn;
+ if (device) {
+ device->properties().GetStringWithoutPathExpansion(shill::kMdnProperty,
+ &mdn);
}
+ if (mdn.empty())
+ return false;
}
+
+ return true;
}
scoped_ptr<base::DictionaryValue> PopulateConnectionDetails(
@@ -300,9 +246,14 @@ scoped_ptr<base::DictionaryValue> PopulateConnectionDetails(
NetworkTypePattern::Primitive(type));
dictionary->SetBoolean(kTagDeviceConnected, connected_network != NULL);
- if (type == shill::kTypeCellular)
- PopulateCellularDetails(network, dictionary.get());
-
+ if (type == shill::kTypeCellular) {
+ dictionary->SetBoolean(
+ kTagCarrierSelectFlag,
+ CommandLine::ForCurrentProcess()
+ ->HasSwitch(chromeos::switches::kEnableCarrierSwitching));
+ dictionary->SetBoolean(kTagShowViewAccountButton,
+ ShowViewAccountButton(network));
+ }
return dictionary.Pass();
}
« no previous file with comments | « chrome/browser/resources/options/chromeos/internet_detail.js ('k') | chromeos/dbus/fake_shill_manager_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698