| 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 0d44f404c691c79492d3547c4c43919aa10e9841..c6339d789283f8aa38bbcd8f656d82f0287a4ce4 100644
|
| --- a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
|
| +++ b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
|
| @@ -70,6 +70,7 @@ const char kNetworkInfoKeyNetworkStatus[] = "networkStatus";
|
| const char kNetworkInfoKeyNetworkType[] = "networkType";
|
| const char kNetworkInfoKeyRemembered[] = "remembered";
|
| const char kNetworkInfoKeyServicePath[] = "servicePath";
|
| +const char kNetworkInfoKeyPolicyManaged[] = "policyManaged";
|
|
|
| // A helper class for building network information dictionaries to be sent to
|
| // the webui code.
|
| @@ -123,6 +124,9 @@ class NetworkInfoDictionary {
|
| void set_needs_new_plan(bool needs_new_plan) {
|
| needs_new_plan_ = needs_new_plan;
|
| }
|
| + void set_policy_managed(bool policy_managed) {
|
| + policy_managed_ = policy_managed;
|
| + }
|
|
|
| // Builds the DictionaryValue representation from the previously set
|
| // parameters. Ownership of the returned pointer is transferred to the caller.
|
| @@ -141,6 +145,7 @@ class NetworkInfoDictionary {
|
| bool shared_;
|
| chromeos::ActivationState activation_state_;
|
| bool needs_new_plan_;
|
| + bool policy_managed_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(NetworkInfoDictionary);
|
| };
|
| @@ -153,6 +158,7 @@ NetworkInfoDictionary::NetworkInfoDictionary() {
|
| set_shared(false);
|
| set_activation_state(chromeos::ACTIVATION_STATE_UNKNOWN);
|
| set_needs_new_plan(false);
|
| + set_policy_managed(false);
|
| }
|
|
|
| NetworkInfoDictionary::NetworkInfoDictionary(const chromeos::Network* network) {
|
| @@ -166,6 +172,7 @@ NetworkInfoDictionary::NetworkInfoDictionary(const chromeos::Network* network) {
|
| set_remembered(false);
|
| set_shared(false);
|
| set_needs_new_plan(false);
|
| + set_policy_managed(chromeos::NetworkUIData::IsManaged(network));
|
| }
|
|
|
| NetworkInfoDictionary::NetworkInfoDictionary(
|
| @@ -182,6 +189,8 @@ NetworkInfoDictionary::NetworkInfoDictionary(
|
| set_remembered(true);
|
| set_shared(remembered->profile_type() == chromeos::PROFILE_SHARED);
|
| set_needs_new_plan(false);
|
| + set_policy_managed(
|
| + network ? chromeos::NetworkUIData::IsManaged(network) : false);
|
| }
|
|
|
| DictionaryValue* NetworkInfoDictionary::BuildDictionary() {
|
| @@ -227,6 +236,7 @@ DictionaryValue* NetworkInfoDictionary::BuildDictionary() {
|
| static_cast<int>(connection_type_));
|
| network_info->SetBoolean(kNetworkInfoKeyRemembered, remembered_);
|
| network_info->SetString(kNetworkInfoKeyServicePath, service_path_);
|
| + network_info->SetBoolean(kNetworkInfoKeyPolicyManaged, policy_managed_);
|
|
|
| return network_info.release();
|
| }
|
| @@ -297,6 +307,9 @@ void InternetOptionsHandler::GetLocalizedValues(
|
| l10n_util::GetStringUTF16(
|
| IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CHANGE_PROXY_BUTTON));
|
|
|
| + localized_strings->SetString("managedNetwork",
|
| + l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_MANAGED_NETWORK));
|
| +
|
| localized_strings->SetString("wifiNetworkTabLabel",
|
| l10n_util::GetStringUTF16(
|
| IDS_OPTIONS_SETTINGS_INTERNET_TAB_WIFI));
|
| @@ -882,6 +895,9 @@ void InternetOptionsHandler::PopulateDictionaryDetails(
|
| chromeos::NetworkLibrary::FORMAT_COLON_SEPARATED_HEX);
|
| if (!hardware_address.empty())
|
| dictionary.SetString("hardwareAddress", hardware_address);
|
| +
|
| + scoped_ptr<DictionaryValue> ipconfig_dhcp;
|
| + scoped_ptr<DictionaryValue> ipconfig_static;
|
| for (chromeos::NetworkIPConfigVector::const_iterator it = ipconfigs.begin();
|
| it != ipconfigs.end(); ++it) {
|
| const chromeos::NetworkIPConfig& ipconfig = *it;
|
| @@ -891,11 +907,18 @@ void InternetOptionsHandler::PopulateDictionaryDetails(
|
| ipconfig_dict->SetString("gateway", ipconfig.gateway);
|
| ipconfig_dict->SetString("dns", ipconfig.name_servers);
|
| if (ipconfig.type == chromeos::IPCONFIG_TYPE_DHCP)
|
| - dictionary.Set("ipconfigDHCP", ipconfig_dict.release());
|
| + ipconfig_dhcp.reset(ipconfig_dict.release());
|
| else if (ipconfig.type == chromeos::IPCONFIG_TYPE_IPV4)
|
| - dictionary.Set("ipconfigStatic", ipconfig_dict.release());
|
| + ipconfig_static.reset(ipconfig_dict.release());
|
| }
|
|
|
| + chromeos::NetworkPropertyUIData ipconfig_dhcp_ui_data(network, NULL);
|
| + SetValueDictionary(&dictionary, "ipconfigDHCP", ipconfig_dhcp.release(),
|
| + ipconfig_dhcp_ui_data);
|
| + chromeos::NetworkPropertyUIData ipconfig_static_ui_data(network, NULL);
|
| + SetValueDictionary(&dictionary, "ipconfigStatic", ipconfig_static.release(),
|
| + ipconfig_static_ui_data);
|
| +
|
| chromeos::ConnectionType type = network->type();
|
| dictionary.SetInteger("type", type);
|
| dictionary.SetString("servicePath", network->service_path());
|
| @@ -913,14 +936,24 @@ void InternetOptionsHandler::PopulateDictionaryDetails(
|
| dictionary.SetBoolean("showStaticIPConfig", staticIPConfig &&
|
| (type == chromeos::TYPE_WIFI || type == chromeos::TYPE_ETHERNET));
|
|
|
| + chromeos::NetworkPropertyUIData preferred_ui_data(
|
| + network, chromeos::NetworkUIData::kPropertyPreferred);
|
| if (network_profile == chromeos::PROFILE_USER) {
|
| dictionary.SetBoolean("showPreferred", true);
|
| - dictionary.SetBoolean("preferred", network->preferred());
|
| + SetValueDictionary(&dictionary, "preferred",
|
| + Value::CreateBooleanValue(network->preferred()),
|
| + preferred_ui_data);
|
| } else {
|
| dictionary.SetBoolean("showPreferred", false);
|
| - dictionary.SetBoolean("preferred", false);
|
| + SetValueDictionary(&dictionary, "preferred",
|
| + Value::CreateBooleanValue(network->preferred()),
|
| + preferred_ui_data);
|
| }
|
| - dictionary.SetBoolean("autoConnect", network->auto_connect());
|
| + chromeos::NetworkPropertyUIData auto_connect_ui_data(
|
| + network, chromeos::NetworkUIData::kPropertyAutoConnect);
|
| + SetValueDictionary(&dictionary, "autoConnect",
|
| + Value::CreateBooleanValue(network->auto_connect()),
|
| + auto_connect_ui_data);
|
|
|
| if (type == chromeos::TYPE_WIFI) {
|
| dictionary.SetBoolean("deviceConnected", cros_->wifi_connected());
|
| @@ -1013,6 +1046,7 @@ void InternetOptionsHandler::PopulateCellularDetails(
|
| const chromeos::NetworkDevice* device =
|
| cros_->FindNetworkDeviceByPath(cellular->device_path());
|
| if (device) {
|
| + chromeos::NetworkPropertyUIData cellular_propety_ui_data(cellular, NULL);
|
| dictionary->SetString("manufacturer", device->manufacturer());
|
| dictionary->SetString("modelId", device->model_id());
|
| dictionary->SetString("firmwareRevision", device->firmware_revision());
|
| @@ -1027,8 +1061,11 @@ void InternetOptionsHandler::PopulateCellularDetails(
|
| dictionary->SetString("min", device->min());
|
| dictionary->SetBoolean("gsm",
|
| device->technology_family() == chromeos::TECHNOLOGY_FAMILY_GSM);
|
| - dictionary->SetBoolean("simCardLockEnabled",
|
| - device->sim_pin_required() == chromeos::SIM_PIN_REQUIRED);
|
| + SetValueDictionary(
|
| + dictionary, "simCardLockEnabled",
|
| + Value::CreateBooleanValue(
|
| + device->sim_pin_required() == chromeos::SIM_PIN_REQUIRED),
|
| + cellular_propety_ui_data);
|
|
|
| chromeos::MobileConfig* config = chromeos::MobileConfig::GetInstance();
|
| if (config->IsReady()) {
|
| @@ -1045,7 +1082,8 @@ void InternetOptionsHandler::PopulateCellularDetails(
|
| it != apn_list.end(); ++it) {
|
| apn_list_value->Append(CreateDictionaryFromCellularApn(*it));
|
| }
|
| - dictionary->Set("providerApnList", apn_list_value);
|
| + SetValueDictionary(dictionary, "providerApnList", apn_list_value,
|
| + cellular_propety_ui_data);
|
| }
|
|
|
| SetActivationButtonVisibility(cellular, dictionary);
|
| @@ -1332,3 +1370,22 @@ void InternetOptionsHandler::FillNetworkInfo(DictionaryValue* dictionary) {
|
| dictionary->SetBoolean("cellularBusy", cros_->cellular_busy());
|
| dictionary->SetBoolean("cellularEnabled", cros_->cellular_enabled());
|
| }
|
| +
|
| +void InternetOptionsHandler::SetValueDictionary(
|
| + DictionaryValue* settings,
|
| + const char* key,
|
| + base::Value* value,
|
| + const chromeos::NetworkPropertyUIData& ui_data) {
|
| + DictionaryValue* value_dict = new DictionaryValue();
|
| + // DictionaryValue::Set() takes ownership of |value|.
|
| + if (value)
|
| + value_dict->Set("value", value);
|
| + const base::Value* default_value = ui_data.default_value();
|
| + if (default_value)
|
| + value_dict->Set("default", default_value->DeepCopy());
|
| + if (ui_data.managed())
|
| + value_dict->SetString("controlledBy", "policy");
|
| + else if (ui_data.recommended())
|
| + value_dict->SetString("controlledBy", "recommended");
|
| + settings->Set(key, value_dict);
|
| +}
|
|
|