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

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

Issue 509643003: Use GetManagedProperties in InternetOptionsHandler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@issue_279351_internet_options_8a
Patch Set: Rebase, Clarify PrefixLengthToNetmask 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
« no previous file with comments | « chrome/browser/resources/options/chromeos/internet_detail.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 29b4c103f34c4b9c36925a338424cf1bfba06604..b39edf701085766447e14552d4937994fb04dcb3 100644
--- a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
+++ b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
@@ -31,6 +31,7 @@
#include "chrome/browser/ui/webui/chromeos/mobile_setup_dialog.h"
#include "chrome/browser/ui/webui/options/chromeos/internet_options_handler_strings.h"
#include "chromeos/chromeos_switches.h"
+#include "chromeos/login/login_state.h"
#include "chromeos/network/device_state.h"
#include "chromeos/network/managed_network_configuration_handler.h"
#include "chromeos/network/network_configuration_handler.h"
@@ -69,24 +70,9 @@ const char kNetworkInfoKeyIconURL[] = "iconURL";
const char kNetworkInfoKeyServicePath[] = "servicePath";
const char kNetworkInfoKeyPolicyManaged[] = "policyManaged";
-// These are keys for getting IP information from the web ui.
-const char kIpConfigAddress[] = "address";
-const char kIpConfigPrefixLength[] = "prefixLength";
-const char kIpConfigNetmask[] = "netmask";
-const char kIpConfigGateway[] = "gateway";
-const char kIpConfigNameServers[] = "nameServers";
-const char kIpConfigAutoConfig[] = "ipAutoConfig";
-const char kIpConfigWebProxyAutoDiscoveryUrl[] = "webProxyAutoDiscoveryUrl";
-
// These are types of name server selections from the web ui.
const char kNameServerTypeAutomatic[] = "automatic";
const char kNameServerTypeGoogle[] = "google";
-const char kNameServerTypeUser[] = "user";
-
-// These are dictionary names used to send data to the web ui.
-const char kDictionaryIpConfig[] = "ipconfig";
-const char kDictionaryStaticIp[] = "staticIP";
-const char kDictionarySavedIp[] = "savedIP";
// Google public name servers (DNS).
const char kGoogleNameServers[] = "8.8.4.4,8.8.8.8";
@@ -133,17 +119,11 @@ const char kTagCellularEnabled[] = "cellularEnabled";
const char kTagCellularSupportsScan[] = "cellularSupportsScan";
const char kTagConfigure[] = "configure";
const char kTagConnect[] = "connect";
-const char kTagControlledBy[] = "controlledBy";
const char kTagDeviceConnected[] = "deviceConnected";
const char kTagDisconnect[] = "disconnect";
const char kTagErrorMessage[] = "errorMessage";
const char kTagForget[] = "forget";
-const char kTagNameServersGoogle[] = "nameServersGoogle";
-const char kTagNameServerType[] = "nameServerType";
const char kTagOptions[] = "options";
-const char kTagPolicy[] = "policy";
-const char kTagRecommended[] = "recommended";
-const char kTagRecommendedValue[] = "recommendedValue";
const char kTagRemembered[] = "remembered";
const char kTagRememberedList[] = "rememberedList";
const char kTagCarriers[] = "carriers";
@@ -152,7 +132,6 @@ const char kTagShared[] = "shared";
const char kTagShowActivateButton[] = "showActivateButton";
const char kTagShowViewAccountButton[] = "showViewAccountButton";
const char kTagTrue[] = "true";
-const char kTagValue[] = "value";
const char kTagVpnList[] = "vpnList";
const char kTagWifiAvailable[] = "wifiAvailable";
const char kTagWifiEnabled[] = "wifiEnabled";
@@ -215,230 +194,6 @@ base::DictionaryValue* BuildNetworkDictionary(
return network_info.release();
}
-// Pulls IP information out of a shill service properties dictionary. If
-// |static_ip| is true, then it fetches "StaticIP.*" properties. If not, then it
-// fetches "SavedIP.*" properties. Caller must take ownership of returned
-// dictionary. If non-NULL, |ip_parameters_set| returns a count of the number
-// of IP routing parameters that get set.
-base::DictionaryValue* BuildIPInfoDictionary(
- const base::DictionaryValue& shill_properties,
- bool static_ip,
- int* routing_parameters_set) {
- std::string address_key;
- std::string prefix_len_key;
- std::string gateway_key;
- std::string name_servers_key;
- if (static_ip) {
- address_key = shill::kStaticIPAddressProperty;
- prefix_len_key = shill::kStaticIPPrefixlenProperty;
- gateway_key = shill::kStaticIPGatewayProperty;
- name_servers_key = shill::kStaticIPNameServersProperty;
- } else {
- address_key = shill::kSavedIPAddressProperty;
- prefix_len_key = shill::kSavedIPPrefixlenProperty;
- gateway_key = shill::kSavedIPGatewayProperty;
- name_servers_key = shill::kSavedIPNameServersProperty;
- }
-
- scoped_ptr<base::DictionaryValue> ip_info_dict(new base::DictionaryValue);
- std::string address;
- int routing_parameters = 0;
- if (shill_properties.GetStringWithoutPathExpansion(address_key, &address)) {
- ip_info_dict->SetString(kIpConfigAddress, address);
- VLOG(2) << "Found " << address_key << ": " << address;
- routing_parameters++;
- }
- int prefix_len = -1;
- if (shill_properties.GetIntegerWithoutPathExpansion(
- prefix_len_key, &prefix_len)) {
- ip_info_dict->SetInteger(kIpConfigPrefixLength, prefix_len);
- std::string netmask = network_util::PrefixLengthToNetmask(prefix_len);
- ip_info_dict->SetString(kIpConfigNetmask, netmask);
- VLOG(2) << "Found " << prefix_len_key << ": "
- << prefix_len << " (" << netmask << ")";
- routing_parameters++;
- }
- std::string gateway;
- if (shill_properties.GetStringWithoutPathExpansion(gateway_key, &gateway)) {
- ip_info_dict->SetString(kIpConfigGateway, gateway);
- VLOG(2) << "Found " << gateway_key << ": " << gateway;
- routing_parameters++;
- }
- if (routing_parameters_set)
- *routing_parameters_set = routing_parameters;
-
- std::string name_servers;
- if (shill_properties.GetStringWithoutPathExpansion(
- name_servers_key, &name_servers)) {
- ip_info_dict->SetString(kIpConfigNameServers, name_servers);
- VLOG(2) << "Found " << name_servers_key << ": " << name_servers;
- }
-
- return ip_info_dict.release();
-}
-
-// Decorate pref value as CoreOptionsHandler::CreateValueForPref() does and
-// store it under |key| in |settings|. Takes ownership of |value|.
-void SetValueDictionary(const char* key,
- base::Value* value,
- const NetworkPropertyUIData& ui_data,
- base::DictionaryValue* settings) {
- base::DictionaryValue* dict = new base::DictionaryValue();
- // DictionaryValue::Set() takes ownership of |value|.
- dict->Set(kTagValue, value);
- settings->Set(key, dict);
-
- const base::Value* recommended_value = ui_data.default_value();
- if (ui_data.IsManaged())
- dict->SetString(kTagControlledBy, kTagPolicy);
- else if (recommended_value && recommended_value->Equals(value))
- dict->SetString(kTagControlledBy, kTagRecommended);
-
- if (recommended_value)
- dict->Set(kTagRecommendedValue, recommended_value->DeepCopy());
-}
-
-const char* GetOncPolicyString(::onc::ONCSource onc_source) {
- if (onc_source == ::onc::ONC_SOURCE_DEVICE_POLICY)
- return ::onc::kAugmentationDevicePolicy;
- return ::onc::kAugmentationUserPolicy;
-}
-
-const char* GetOncEditableString(::onc::ONCSource onc_source) {
- if (onc_source == ::onc::ONC_SOURCE_DEVICE_POLICY)
- return ::onc::kAugmentationDeviceEditable;
- return ::onc::kAugmentationUserEditable;
-}
-
-const char* GetOncSettingString(::onc::ONCSource onc_source) {
- if (onc_source == ::onc::ONC_SOURCE_DEVICE_POLICY)
- return ::onc::kAugmentationSharedSetting;
- return ::onc::kAugmentationUserSetting;
-}
-
-// Creates a GetManagedProperties style dictionary and adds it to |settings|.
-// |default_value| represents either the recommended value if |recommended|
-// is true, or the enforced value if |recommended| is false. |settings_dict_key|
-// is expected to be an ONC key with no '.' in it.
-// Note(stevenjb): This is bridge code until we use GetManagedProperties to
-// retrieve Shill properties.
-void SetManagedValueDictionaryEx(const char* settings_dict_key,
- const base::Value& value,
- ::onc::ONCSource onc_source,
- bool recommended,
- const base::Value* default_value,
- base::DictionaryValue* settings_dict) {
- base::DictionaryValue* dict = new base::DictionaryValue();
- settings_dict->SetWithoutPathExpansion(settings_dict_key, dict);
-
- dict->Set(::onc::kAugmentationActiveSetting, value.DeepCopy());
-
- if (onc_source == ::onc::ONC_SOURCE_NONE)
- return;
-
- if (recommended) {
- // If an ONC property is 'Recommended' it can be edited by the user.
- std::string editable = GetOncEditableString(onc_source);
- dict->Set(editable, new base::FundamentalValue(true));
- }
- if (default_value) {
- std::string policy_source = GetOncPolicyString(onc_source);
- dict->Set(policy_source, default_value->DeepCopy());
- if (recommended && !value.Equals(default_value)) {
- std::string setting_source = GetOncSettingString(onc_source);
- dict->Set(setting_source, value.DeepCopy());
- dict->SetString(::onc::kAugmentationEffectiveSetting, setting_source);
- } else {
- dict->SetString(::onc::kAugmentationEffectiveSetting, policy_source);
- }
- }
-}
-
-// Wrapper for SetManagedValueDictionaryEx that does the policy lookup.
-// Note: We have to pass |onc_key| separately from |settings_dict_key| since
-// we might be populating a sub-dictionary in which case |onc_key| will be the
-// complete path (e.g. 'VPN.Host') and |settings_dict_key| is the dictionary key
-// (e.g. 'Host').
-void SetManagedValueDictionary(const std::string& guid,
- const char* settings_dict_key,
- const base::Value& value,
- const std::string& onc_key,
- base::DictionaryValue* settings_dict) {
- ::onc::ONCSource onc_source = ::onc::ONC_SOURCE_NONE;
- const base::DictionaryValue* onc =
- onc::FindPolicyForActiveUser(guid, &onc_source);
- DCHECK_EQ(onc == NULL, onc_source == ::onc::ONC_SOURCE_NONE);
- const base::Value* default_value = NULL;
- bool recommended = false;
- if (onc) {
- onc->Get(onc_key, &default_value);
- recommended = onc::IsRecommendedValue(onc, onc_key);
- }
- SetManagedValueDictionaryEx(settings_dict_key,
- value,
- onc_source,
- recommended,
- default_value,
- settings_dict);
-}
-
-// Fills |dictionary| with the configuration details of |vpn|. |onc| is required
-// for augmenting the policy-managed information.
-void PopulateVPNDetails(const NetworkState* vpn,
- const base::DictionaryValue& shill_properties,
- base::DictionaryValue* dictionary) {
- // Name and Remembered are set in PopulateConnectionDetails().
- // Provider properties are stored in the "Provider" dictionary.
- const base::DictionaryValue* shill_provider_properties = NULL;
- if (!shill_properties.GetDictionaryWithoutPathExpansion(
- shill::kProviderProperty, &shill_provider_properties)) {
- LOG(ERROR) << "No provider properties for VPN: " << vpn->path();
- return;
- }
- base::DictionaryValue* vpn_dictionary;
- if (!dictionary->GetDictionary(
- ::onc::network_config::kVPN, &vpn_dictionary)) {
- vpn_dictionary = new base::DictionaryValue;
- dictionary->Set(::onc::network_config::kVPN, vpn_dictionary);
- }
-
- std::string shill_provider_type;
- if (!shill_provider_properties->GetStringWithoutPathExpansion(
- shill::kTypeProperty, &shill_provider_type)) {
- LOG(ERROR) << "Shill VPN has no Provider.Type: " << vpn->path();
- return;
- }
- std::string onc_provider_type;
- onc::TranslateStringToONC(
- onc::kVPNTypeTable, shill_provider_type, &onc_provider_type);
- vpn_dictionary->SetString(::onc::vpn::kType, onc_provider_type);
-
- std::string provider_type_key;
- std::string username;
- if (shill_provider_type == shill::kProviderOpenVpn) {
- provider_type_key = ::onc::vpn::kOpenVPN;
- shill_provider_properties->GetStringWithoutPathExpansion(
- shill::kOpenVPNUserProperty, &username);
- } else {
- provider_type_key = ::onc::vpn::kL2TP;
- shill_provider_properties->GetStringWithoutPathExpansion(
- shill::kL2tpIpsecUserProperty, &username);
- }
- base::DictionaryValue* provider_type_dictionary = new base::DictionaryValue;
- vpn_dictionary->Set(provider_type_key, provider_type_dictionary);
- provider_type_dictionary->SetString(::onc::vpn::kUsername, username);
-
- std::string provider_host;
- shill_provider_properties->GetStringWithoutPathExpansion(
- shill::kHostProperty, &provider_host);
- SetManagedValueDictionary(
- vpn->guid(),
- ::onc::vpn::kHost,
- base::StringValue(provider_host),
- ::onc::network_config::VpnProperty(::onc::vpn::kHost),
- vpn_dictionary);
-}
-
// 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,
@@ -551,30 +306,8 @@ void PopulateCellularDetails(const NetworkState* cellular,
scoped_ptr<base::DictionaryValue> PopulateConnectionDetails(
const NetworkState* network,
- const base::DictionaryValue& shill_properties) {
- // TODO(stevenjb): Once we eliminate all references to Shill properties,
- // we can switch to using managed_network_configuration_handler which
- // includes Device properties for Cellular (and skip the call to
- // onc::TranslateShillServiceToONCPart). For now we copy them over here.
- scoped_ptr<base::DictionaryValue> shill_properties_with_device(
- shill_properties.DeepCopy());
- const DeviceState* device =
- NetworkHandler::Get()->network_state_handler()->GetDeviceState(
- network->device_path());
- if (device) {
- shill_properties_with_device->SetWithoutPathExpansion(
- shill::kDeviceProperty, device->properties().DeepCopy());
- // Get the hardware MAC address from the DeviceState.
- // (Note: this is done in ManagedNetworkConfigurationHandler but not
- // in NetworkConfigurationHandler).
- if (!device->mac_address().empty()) {
- shill_properties_with_device->SetStringWithoutPathExpansion(
- shill::kAddressProperty, device->mac_address());
- }
- }
- scoped_ptr<base::DictionaryValue> dictionary =
- onc::TranslateShillServiceToONCPart(
- *shill_properties_with_device, &onc::kNetworkWithStateSignature);
+ const base::DictionaryValue& onc_properties) {
+ scoped_ptr<base::DictionaryValue> dictionary(onc_properties.DeepCopy());
dictionary->SetString(kNetworkInfoKeyServicePath, network->path());
dictionary->SetString(
@@ -594,8 +327,6 @@ scoped_ptr<base::DictionaryValue> PopulateConnectionDetails(
if (type == shill::kTypeCellular)
PopulateCellularDetails(network, dictionary.get());
- else if (type == shill::kTypeVPN)
- PopulateVPNDetails(network, shill_properties, dictionary.get());
return dictionary.Pass();
}
@@ -978,21 +709,24 @@ void InternetOptionsHandler::RefreshNetworkData() {
void InternetOptionsHandler::UpdateConnectionData(
const std::string& service_path) {
- NetworkHandler::Get()->network_configuration_handler()->GetProperties(
- service_path,
- base::Bind(&InternetOptionsHandler::UpdateConnectionDataCallback,
- weak_factory_.GetWeakPtr()),
- base::Bind(&ShillError, "UpdateConnectionData"));
+ NetworkHandler::Get()
+ ->managed_network_configuration_handler()
+ ->GetManagedProperties(
+ LoginState::Get()->primary_user_hash(),
+ service_path,
+ base::Bind(&InternetOptionsHandler::UpdateConnectionDataCallback,
+ weak_factory_.GetWeakPtr()),
+ base::Bind(&ShillError, "UpdateConnectionData"));
}
void InternetOptionsHandler::UpdateConnectionDataCallback(
const std::string& service_path,
- const base::DictionaryValue& shill_properties) {
+ const base::DictionaryValue& onc_properties) {
const NetworkState* network = GetNetworkState(service_path);
if (!network)
return;
scoped_ptr<base::DictionaryValue> dictionary =
- PopulateConnectionDetails(network, shill_properties);
+ PopulateConnectionDetails(network, onc_properties);
web_ui()->CallJavascriptFunction(kUpdateConnectionDataFunction, *dictionary);
}
@@ -1192,7 +926,7 @@ void InternetOptionsHandler::SetIPConfigProperties(
void InternetOptionsHandler::PopulateDictionaryDetailsCallback(
const std::string& service_path,
- const base::DictionaryValue& shill_properties) {
+ const base::DictionaryValue& onc_properties) {
const NetworkState* network = GetNetworkState(service_path);
if (!network) {
LOG(ERROR) << "Network properties not found: " << service_path;
@@ -1202,68 +936,8 @@ void InternetOptionsHandler::PopulateDictionaryDetailsCallback(
details_path_ = service_path;
scoped_ptr<base::DictionaryValue> dictionary =
- PopulateConnectionDetails(network, shill_properties);
-
- ::onc::ONCSource onc_source = ::onc::ONC_SOURCE_NONE;
- const base::DictionaryValue* onc =
- onc::FindPolicyForActiveUser(network->guid(), &onc_source);
- const NetworkPropertyUIData property_ui_data(onc_source);
-
- // IP config
- scoped_ptr<base::DictionaryValue> ipconfig_dhcp(new base::DictionaryValue);
- ipconfig_dhcp->SetString(kIpConfigAddress, network->ip_address());
- ipconfig_dhcp->SetString(kIpConfigNetmask, network->GetNetmask());
- ipconfig_dhcp->SetString(kIpConfigGateway, network->gateway());
- std::string ipconfig_name_servers = network->GetDnsServersAsString();
- ipconfig_dhcp->SetString(kIpConfigNameServers, ipconfig_name_servers);
- ipconfig_dhcp->SetString(kIpConfigWebProxyAutoDiscoveryUrl,
- network->web_proxy_auto_discovery_url().spec());
- SetValueDictionary(kDictionaryIpConfig,
- ipconfig_dhcp.release(),
- property_ui_data,
- dictionary.get());
-
- std::string name_server_type = kNameServerTypeAutomatic;
- int automatic_ip_config = 0;
- scoped_ptr<base::DictionaryValue> static_ip_dict(
- BuildIPInfoDictionary(shill_properties, true, &automatic_ip_config));
- dictionary->SetBoolean(kIpConfigAutoConfig, automatic_ip_config == 0);
- DCHECK(automatic_ip_config == 3 || automatic_ip_config == 0)
- << "UI doesn't support automatic specification of individual "
- << "static IP parameters.";
- scoped_ptr<base::DictionaryValue> saved_ip_dict(
- BuildIPInfoDictionary(shill_properties, false, NULL));
- dictionary->Set(kDictionarySavedIp, saved_ip_dict.release());
-
- // Determine what kind of name server setting we have by comparing the
- // StaticIP and Google values with the ipconfig values.
- std::string static_ip_nameservers;
- static_ip_dict->GetString(kIpConfigNameServers, &static_ip_nameservers);
- if (!static_ip_nameservers.empty() &&
- static_ip_nameservers == ipconfig_name_servers) {
- name_server_type = kNameServerTypeUser;
- }
- if (ipconfig_name_servers == kGoogleNameServers) {
- name_server_type = kNameServerTypeGoogle;
- }
- SetValueDictionary(kDictionaryStaticIp,
- static_ip_dict.release(),
- property_ui_data,
- dictionary.get());
-
- dictionary->SetString(kTagNameServerType, name_server_type);
- dictionary->SetString(kTagNameServersGoogle, kGoogleNameServers);
-
- int priority = 0;
- shill_properties.GetIntegerWithoutPathExpansion(
- shill::kPriorityProperty, &priority);
- SetManagedValueDictionary(network->guid(),
- ::onc::network_config::kPriority,
- base::FundamentalValue(priority),
- ::onc::network_config::kPriority,
- dictionary.get());
-
- std::string onc_path_to_auto_connect;
+ PopulateConnectionDetails(network, onc_properties);
+
if (network->Matches(NetworkTypePattern::WiFi())) {
content::RecordAction(
base::UserMetricsAction("Options_NetworkShowDetailsWifi"));
@@ -1271,8 +945,6 @@ void InternetOptionsHandler::PopulateDictionaryDetailsCallback(
content::RecordAction(
base::UserMetricsAction("Options_NetworkShowDetailsWifiConnected"));
}
- onc_path_to_auto_connect =
- ::onc::network_config::WifiProperty(::onc::wifi::kAutoConnect);
} else if (network->Matches(NetworkTypePattern::VPN())) {
content::RecordAction(
base::UserMetricsAction("Options_NetworkShowDetailsVPN"));
@@ -1280,8 +952,6 @@ void InternetOptionsHandler::PopulateDictionaryDetailsCallback(
content::RecordAction(
base::UserMetricsAction("Options_NetworkShowDetailsVPNConnected"));
}
- onc_path_to_auto_connect = ::onc::network_config::VpnProperty(
- ::onc::vpn::kAutoConnect);
} else if (network->Matches(NetworkTypePattern::Cellular())) {
content::RecordAction(
base::UserMetricsAction("Options_NetworkShowDetailsCellular"));
@@ -1291,47 +961,6 @@ void InternetOptionsHandler::PopulateDictionaryDetailsCallback(
}
}
- if (!onc_path_to_auto_connect.empty()) {
- bool auto_connect = false;
- shill_properties.GetBooleanWithoutPathExpansion(
- shill::kAutoConnectProperty, &auto_connect);
-
- base::FundamentalValue auto_connect_value(auto_connect);
- ::onc::ONCSource auto_connect_onc_source = onc_source;
-
- DCHECK_EQ(onc == NULL, onc_source == ::onc::ONC_SOURCE_NONE);
- bool auto_connect_recommended =
- auto_connect_onc_source != ::onc::ONC_SOURCE_NONE &&
- onc::IsRecommendedValue(onc, onc_path_to_auto_connect);
- // If a policy exists, |auto_connect_default_value| will contain either a
- // recommended value (if |auto_connect_recommended| is true) or an enforced
- // value (if |auto_connect_recommended| is false).
- const base::Value* auto_connect_default_value = NULL;
- if (onc)
- onc->Get(onc_path_to_auto_connect, &auto_connect_default_value);
-
- // Autoconnect can be controlled by the GlobalNetworkConfiguration of the
- // ONC policy.
- if (auto_connect_onc_source == ::onc::ONC_SOURCE_NONE &&
- onc::PolicyAllowsOnlyPolicyNetworksToAutoconnect(
- network->IsPrivate())) {
- auto_connect_recommended = false;
- auto_connect_onc_source = network->IsPrivate()
- ? ::onc::ONC_SOURCE_USER_POLICY
- : ::onc::ONC_SOURCE_DEVICE_POLICY;
- if (auto_connect) {
- LOG(WARNING) << "Policy prevents autoconnect, but value is True.";
- auto_connect_value = base::FundamentalValue(false);
- }
- }
- SetManagedValueDictionaryEx(shill::kAutoConnectProperty,
- auto_connect_value,
- auto_connect_onc_source,
- auto_connect_recommended,
- auto_connect_default_value,
- dictionary.get());
- }
-
// Show details dialog
web_ui()->CallJavascriptFunction(kShowDetailedInfoFunction, *dictionary);
}
@@ -1376,11 +1005,15 @@ void InternetOptionsHandler::NetworkCommandCallback(
base::Bind(&base::DoNothing),
base::Bind(&ShillError, "NetworkCommand: " + command));
} else if (command == kTagOptions) {
- NetworkHandler::Get()->network_configuration_handler()->GetProperties(
- service_path,
- base::Bind(&InternetOptionsHandler::PopulateDictionaryDetailsCallback,
- weak_factory_.GetWeakPtr()),
- base::Bind(&ShillError, "NetworkCommand: " + command));
+ NetworkHandler::Get()
+ ->managed_network_configuration_handler()
+ ->GetManagedProperties(
+ LoginState::Get()->primary_user_hash(),
+ service_path,
+ base::Bind(
+ &InternetOptionsHandler::PopulateDictionaryDetailsCallback,
+ weak_factory_.GetWeakPtr()),
+ base::Bind(&ShillError, "NetworkCommand: " + command));
} else if (command == kTagConnect) {
const NetworkState* network = GetNetworkState(service_path);
if (network && network->type() == shill::kTypeWifi)
« no previous file with comments | « chrome/browser/resources/options/chromeos/internet_detail.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698