| Index: chrome/browser/chromeos/cros/native_network_parser.cc
|
| diff --git a/chrome/browser/chromeos/cros/native_network_parser.cc b/chrome/browser/chromeos/cros/native_network_parser.cc
|
| deleted file mode 100644
|
| index b55ed2c8a35eeb33d77971bb401424b31490228d..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/chromeos/cros/native_network_parser.cc
|
| +++ /dev/null
|
| @@ -1,1444 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/chromeos/cros/native_network_parser.h"
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/logging.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "base/strings/stringprintf.h"
|
| -#include "base/values.h"
|
| -#include "chrome/browser/chromeos/cros/native_network_constants.h"
|
| -#include "chrome/browser/chromeos/cros/network_library.h"
|
| -#include "chrome/browser/chromeos/login/user_manager.h"
|
| -#include "chromeos/network/onc/onc_utils.h"
|
| -#include "third_party/cros_system_api/dbus/service_constants.h"
|
| -
|
| -namespace chromeos {
|
| -
|
| -// Local constants.
|
| -namespace {
|
| -
|
| -const char kPostMethod[] = "post";
|
| -
|
| -EnumMapper<PropertyIndex>::Pair property_index_table[] = {
|
| - { shill::kActivateOverNonCellularNetworkProperty,
|
| - PROPERTY_INDEX_ACTIVATE_OVER_NON_CELLULAR_NETWORK },
|
| - { flimflam::kActivationStateProperty, PROPERTY_INDEX_ACTIVATION_STATE },
|
| - { flimflam::kActiveProfileProperty, PROPERTY_INDEX_ACTIVE_PROFILE },
|
| - { flimflam::kArpGatewayProperty, PROPERTY_INDEX_ARP_GATEWAY },
|
| - { flimflam::kAutoConnectProperty, PROPERTY_INDEX_AUTO_CONNECT },
|
| - { flimflam::kAvailableTechnologiesProperty,
|
| - PROPERTY_INDEX_AVAILABLE_TECHNOLOGIES },
|
| - { flimflam::kCarrierProperty, PROPERTY_INDEX_CARRIER },
|
| - { flimflam::kCellularAllowRoamingProperty,
|
| - PROPERTY_INDEX_CELLULAR_ALLOW_ROAMING },
|
| - { flimflam::kCellularApnListProperty, PROPERTY_INDEX_CELLULAR_APN_LIST },
|
| - { flimflam::kCellularApnProperty, PROPERTY_INDEX_CELLULAR_APN },
|
| - { flimflam::kCellularLastGoodApnProperty,
|
| - PROPERTY_INDEX_CELLULAR_LAST_GOOD_APN },
|
| - { flimflam::kCheckPortalProperty, PROPERTY_INDEX_CHECK_PORTAL },
|
| - { flimflam::kCheckPortalListProperty, PROPERTY_INDEX_CHECK_PORTAL_LIST },
|
| - { flimflam::kConnectableProperty, PROPERTY_INDEX_CONNECTABLE },
|
| - { flimflam::kConnectedTechnologiesProperty,
|
| - PROPERTY_INDEX_CONNECTED_TECHNOLOGIES },
|
| - { flimflam::kDefaultTechnologyProperty, PROPERTY_INDEX_DEFAULT_TECHNOLOGY },
|
| - { flimflam::kDeviceProperty, PROPERTY_INDEX_DEVICE },
|
| - { flimflam::kDevicesProperty, PROPERTY_INDEX_DEVICES },
|
| - { flimflam::kEapAnonymousIdentityProperty,
|
| - PROPERTY_INDEX_EAP_ANONYMOUS_IDENTITY },
|
| - { flimflam::kEapCaCertIdProperty, PROPERTY_INDEX_EAP_CA_CERT_ID },
|
| - { shill::kEapCaCertPemProperty, PROPERTY_INDEX_EAP_CA_CERT_PEM },
|
| - { flimflam::kEapCertIdProperty, PROPERTY_INDEX_EAP_CERT_ID },
|
| - { flimflam::kEapClientCertNssProperty, PROPERTY_INDEX_EAP_CLIENT_CERT_NSS },
|
| - { flimflam::kEapClientCertProperty, PROPERTY_INDEX_EAP_CLIENT_CERT },
|
| - { flimflam::kEapIdentityProperty, PROPERTY_INDEX_EAP_IDENTITY },
|
| - { flimflam::kEapKeyIdProperty, PROPERTY_INDEX_EAP_KEY_ID },
|
| - { flimflam::kEapKeyMgmtProperty, PROPERTY_INDEX_EAP_KEY_MGMT },
|
| - { flimflam::kEapMethodProperty, PROPERTY_INDEX_EAP_METHOD },
|
| - { flimflam::kEapPasswordProperty, PROPERTY_INDEX_EAP_PASSWORD },
|
| - { flimflam::kEapPhase2AuthProperty, PROPERTY_INDEX_EAP_PHASE_2_AUTH },
|
| - { flimflam::kEapPinProperty, PROPERTY_INDEX_EAP_PIN },
|
| - { flimflam::kEapPrivateKeyPasswordProperty,
|
| - PROPERTY_INDEX_EAP_PRIVATE_KEY_PASSWORD },
|
| - { flimflam::kEapPrivateKeyProperty, PROPERTY_INDEX_EAP_PRIVATE_KEY },
|
| - { flimflam::kEapUseSystemCasProperty, PROPERTY_INDEX_EAP_USE_SYSTEM_CAS },
|
| - { flimflam::kEnabledTechnologiesProperty,
|
| - PROPERTY_INDEX_ENABLED_TECHNOLOGIES },
|
| - { flimflam::kErrorProperty, PROPERTY_INDEX_ERROR },
|
| - { flimflam::kEsnProperty, PROPERTY_INDEX_ESN },
|
| - { flimflam::kFavoriteProperty, PROPERTY_INDEX_FAVORITE },
|
| - { flimflam::kFirmwareRevisionProperty, PROPERTY_INDEX_FIRMWARE_REVISION },
|
| - { flimflam::kFoundNetworksProperty, PROPERTY_INDEX_FOUND_NETWORKS },
|
| - { flimflam::kGuidProperty, PROPERTY_INDEX_GUID },
|
| - { flimflam::kHardwareRevisionProperty, PROPERTY_INDEX_HARDWARE_REVISION },
|
| - { flimflam::kHomeProviderProperty, PROPERTY_INDEX_HOME_PROVIDER },
|
| - { flimflam::kHostProperty, PROPERTY_INDEX_HOST },
|
| - { flimflam::kIccidProperty, PROPERTY_INDEX_ICCID },
|
| - { flimflam::kIdentityProperty, PROPERTY_INDEX_IDENTITY },
|
| - { flimflam::kImeiProperty, PROPERTY_INDEX_IMEI },
|
| - { flimflam::kImsiProperty, PROPERTY_INDEX_IMSI },
|
| - { flimflam::kIsActiveProperty, PROPERTY_INDEX_IS_ACTIVE },
|
| - { flimflam::kL2tpIpsecAuthenticationType,
|
| - PROPERTY_INDEX_IPSEC_AUTHENTICATIONTYPE },
|
| - { shill::kL2tpIpsecCaCertPemProperty,
|
| - PROPERTY_INDEX_L2TPIPSEC_CA_CERT_PEM },
|
| - { flimflam::kL2tpIpsecClientCertIdProperty,
|
| - PROPERTY_INDEX_L2TPIPSEC_CLIENT_CERT_ID },
|
| - { flimflam::kL2tpIpsecClientCertSlotProp,
|
| - PROPERTY_INDEX_L2TPIPSEC_CLIENT_CERT_SLOT },
|
| - { flimflam::kL2tpIpsecIkeVersion, PROPERTY_INDEX_IPSEC_IKEVERSION },
|
| - { flimflam::kL2tpIpsecPinProperty, PROPERTY_INDEX_L2TPIPSEC_PIN },
|
| - { flimflam::kL2tpIpsecPskProperty, PROPERTY_INDEX_L2TPIPSEC_PSK },
|
| - { flimflam::kL2tpIpsecPskRequiredProperty,
|
| - PROPERTY_INDEX_L2TPIPSEC_PSK_REQUIRED },
|
| - { flimflam::kL2tpIpsecPasswordProperty, PROPERTY_INDEX_L2TPIPSEC_PASSWORD },
|
| - { flimflam::kL2tpIpsecUserProperty, PROPERTY_INDEX_L2TPIPSEC_USER },
|
| - { shill::kL2tpIpsecTunnelGroupProperty,
|
| - PROPERTY_INDEX_L2TPIPSEC_GROUP_NAME },
|
| - { flimflam::kManufacturerProperty, PROPERTY_INDEX_MANUFACTURER },
|
| - { flimflam::kMdnProperty, PROPERTY_INDEX_MDN },
|
| - { flimflam::kMeidProperty, PROPERTY_INDEX_MEID },
|
| - { flimflam::kMinProperty, PROPERTY_INDEX_MIN },
|
| - { flimflam::kModelIDProperty, PROPERTY_INDEX_MODEL_ID },
|
| - { flimflam::kNameProperty, PROPERTY_INDEX_NAME },
|
| - { flimflam::kNetworkTechnologyProperty, PROPERTY_INDEX_NETWORK_TECHNOLOGY },
|
| - { flimflam::kNetworksProperty, PROPERTY_INDEX_NETWORKS },
|
| - { flimflam::kOfflineModeProperty, PROPERTY_INDEX_OFFLINE_MODE },
|
| - { flimflam::kOperatorCodeProperty, PROPERTY_INDEX_OPERATOR_CODE },
|
| - { flimflam::kOperatorNameProperty, PROPERTY_INDEX_OPERATOR_NAME },
|
| - { shill::kOutOfCreditsProperty, PROPERTY_INDEX_OUT_OF_CREDITS },
|
| - { flimflam::kPRLVersionProperty, PROPERTY_INDEX_PRL_VERSION },
|
| - { flimflam::kPassphraseProperty, PROPERTY_INDEX_PASSPHRASE },
|
| - { flimflam::kPassphraseRequiredProperty, PROPERTY_INDEX_PASSPHRASE_REQUIRED },
|
| - { flimflam::kPortalURLProperty, PROPERTY_INDEX_PORTAL_URL },
|
| - { flimflam::kPoweredProperty, PROPERTY_INDEX_POWERED },
|
| - { flimflam::kPriorityProperty, PROPERTY_INDEX_PRIORITY },
|
| - { flimflam::kProfileProperty, PROPERTY_INDEX_PROFILE },
|
| - { flimflam::kProfilesProperty, PROPERTY_INDEX_PROFILES },
|
| - { flimflam::kProviderHostProperty, PROPERTY_INDEX_PROVIDER_HOST },
|
| - { flimflam::kProviderProperty, PROPERTY_INDEX_PROVIDER },
|
| - { shill::kProviderRequiresRoamingProperty,
|
| - PROPERTY_INDEX_PROVIDER_REQUIRES_ROAMING },
|
| - { flimflam::kProviderTypeProperty, PROPERTY_INDEX_PROVIDER_TYPE },
|
| - { flimflam::kRoamingStateProperty, PROPERTY_INDEX_ROAMING_STATE },
|
| - { flimflam::kSIMLockStatusProperty, PROPERTY_INDEX_SIM_LOCK },
|
| - { shill::kSIMPresentProperty, PROPERTY_INDEX_SIM_PRESENT },
|
| - { flimflam::kSSIDProperty, PROPERTY_INDEX_SSID },
|
| - { flimflam::kSaveCredentialsProperty, PROPERTY_INDEX_SAVE_CREDENTIALS },
|
| - { flimflam::kScanningProperty, PROPERTY_INDEX_SCANNING },
|
| - { flimflam::kSecurityProperty, PROPERTY_INDEX_SECURITY },
|
| - { flimflam::kSelectedNetworkProperty, PROPERTY_INDEX_SELECTED_NETWORK },
|
| - { flimflam::kServiceWatchListProperty, PROPERTY_INDEX_SERVICE_WATCH_LIST },
|
| - { flimflam::kServicesProperty, PROPERTY_INDEX_SERVICES },
|
| - { flimflam::kServingOperatorProperty, PROPERTY_INDEX_SERVING_OPERATOR },
|
| - { flimflam::kSignalStrengthProperty, PROPERTY_INDEX_SIGNAL_STRENGTH },
|
| - { flimflam::kStateProperty, PROPERTY_INDEX_STATE },
|
| - { flimflam::kSupportNetworkScanProperty,
|
| - PROPERTY_INDEX_SUPPORT_NETWORK_SCAN },
|
| - { shill::kSupportedCarriersProperty, PROPERTY_INDEX_SUPPORTED_CARRIERS},
|
| - { flimflam::kTechnologyFamilyProperty, PROPERTY_INDEX_TECHNOLOGY_FAMILY },
|
| - { flimflam::kTypeProperty, PROPERTY_INDEX_TYPE },
|
| - { flimflam::kUIDataProperty, PROPERTY_INDEX_UI_DATA },
|
| - { shill::kUninitializedTechnologiesProperty,
|
| - PROPERTY_INDEX_UNINITIALIZED_TECHNOLOGIES },
|
| - { flimflam::kUsageURLProperty, PROPERTY_INDEX_USAGE_URL },
|
| - { flimflam::kOpenVPNClientCertIdProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_CLIENT_CERT_ID },
|
| - { flimflam::kOpenVPNAuthProperty, PROPERTY_INDEX_OPEN_VPN_AUTH },
|
| - { flimflam::kOpenVPNAuthRetryProperty, PROPERTY_INDEX_OPEN_VPN_AUTHRETRY },
|
| - { flimflam::kOpenVPNAuthNoCacheProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_AUTHNOCACHE },
|
| - { flimflam::kOpenVPNAuthUserPassProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_AUTHUSERPASS },
|
| - { shill::kOpenVPNCaCertPemProperty, PROPERTY_INDEX_OPEN_VPN_CA_CERT_PEM },
|
| - { flimflam::kOpenVPNClientCertSlotProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_CLIENT_CERT_SLOT },
|
| - { flimflam::kOpenVPNCipherProperty, PROPERTY_INDEX_OPEN_VPN_CIPHER },
|
| - { flimflam::kOpenVPNCompLZOProperty, PROPERTY_INDEX_OPEN_VPN_COMPLZO },
|
| - { flimflam::kOpenVPNCompNoAdaptProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_COMPNOADAPT },
|
| - { flimflam::kOpenVPNKeyDirectionProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_KEYDIRECTION },
|
| - { flimflam::kOpenVPNMgmtEnableProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_MGMT_ENABLE },
|
| - { flimflam::kOpenVPNNsCertTypeProperty, PROPERTY_INDEX_OPEN_VPN_NSCERTTYPE },
|
| - { flimflam::kOpenVPNOTPProperty, PROPERTY_INDEX_OPEN_VPN_OTP },
|
| - { flimflam::kOpenVPNPasswordProperty, PROPERTY_INDEX_OPEN_VPN_PASSWORD },
|
| - { flimflam::kOpenVPNPinProperty, PROPERTY_INDEX_OPEN_VPN_PIN },
|
| - { flimflam::kOpenVPNPortProperty, PROPERTY_INDEX_OPEN_VPN_PORT },
|
| - { flimflam::kOpenVPNProtoProperty, PROPERTY_INDEX_OPEN_VPN_PROTO },
|
| - { flimflam::kOpenVPNProviderProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_PKCS11_PROVIDER },
|
| - { flimflam::kOpenVPNPushPeerInfoProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_PUSHPEERINFO },
|
| - { flimflam::kOpenVPNRemoteCertEKUProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_REMOTECERTEKU },
|
| - { flimflam::kOpenVPNRemoteCertKUProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_REMOTECERTKU },
|
| - { flimflam::kOpenVPNRemoteCertTLSProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_REMOTECERTTLS },
|
| - { flimflam::kOpenVPNRenegSecProperty, PROPERTY_INDEX_OPEN_VPN_RENEGSEC },
|
| - { flimflam::kOpenVPNServerPollTimeoutProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_SERVERPOLLTIMEOUT },
|
| - { flimflam::kOpenVPNShaperProperty, PROPERTY_INDEX_OPEN_VPN_SHAPER },
|
| - { flimflam::kOpenVPNStaticChallengeProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_STATICCHALLENGE },
|
| - { flimflam::kOpenVPNTLSAuthContentsProperty,
|
| - PROPERTY_INDEX_OPEN_VPN_TLSAUTHCONTENTS },
|
| - { flimflam::kOpenVPNTLSRemoteProperty, PROPERTY_INDEX_OPEN_VPN_TLSREMOTE },
|
| - { flimflam::kOpenVPNUserProperty, PROPERTY_INDEX_OPEN_VPN_USER },
|
| - { flimflam::kPaymentPortalProperty, PROPERTY_INDEX_OLP },
|
| - { flimflam::kPaymentURLProperty, PROPERTY_INDEX_OLP_URL },
|
| - { flimflam::kVPNDomainProperty, PROPERTY_INDEX_VPN_DOMAIN },
|
| - { flimflam::kWifiAuthMode, PROPERTY_INDEX_WIFI_AUTH_MODE },
|
| - { flimflam::kWifiBSsid, PROPERTY_INDEX_WIFI_BSSID },
|
| - { flimflam::kWifiFrequency, PROPERTY_INDEX_WIFI_FREQUENCY },
|
| - { flimflam::kWifiHexSsid, PROPERTY_INDEX_WIFI_HEX_SSID },
|
| - { flimflam::kWifiHiddenSsid, PROPERTY_INDEX_WIFI_HIDDEN_SSID },
|
| - { flimflam::kWifiPhyMode, PROPERTY_INDEX_WIFI_PHY_MODE },
|
| -};
|
| -
|
| -EnumMapper<ConnectionType>::Pair network_type_table[] = {
|
| - { flimflam::kTypeEthernet, TYPE_ETHERNET },
|
| - { flimflam::kTypeWifi, TYPE_WIFI },
|
| - { flimflam::kTypeWimax, TYPE_WIMAX },
|
| - { flimflam::kTypeBluetooth, TYPE_BLUETOOTH },
|
| - { flimflam::kTypeCellular, TYPE_CELLULAR },
|
| - { flimflam::kTypeVPN, TYPE_VPN },
|
| -};
|
| -
|
| -EnumMapper<ConnectionSecurity>::Pair network_security_table[] = {
|
| - { flimflam::kSecurityNone, SECURITY_NONE },
|
| - { flimflam::kSecurityWep, SECURITY_WEP },
|
| - { flimflam::kSecurityWpa, SECURITY_WPA },
|
| - { flimflam::kSecurityRsn, SECURITY_RSN },
|
| - { flimflam::kSecurityPsk, SECURITY_PSK },
|
| - { flimflam::kSecurity8021x, SECURITY_8021X },
|
| -};
|
| -
|
| -EnumMapper<EAPMethod>::Pair network_eap_method_table[] = {
|
| - { flimflam::kEapMethodPEAP, EAP_METHOD_PEAP },
|
| - { flimflam::kEapMethodTLS, EAP_METHOD_TLS },
|
| - { flimflam::kEapMethodTTLS, EAP_METHOD_TTLS },
|
| - { flimflam::kEapMethodLEAP, EAP_METHOD_LEAP },
|
| -};
|
| -
|
| -EnumMapper<EAPPhase2Auth>::Pair network_eap_auth_table[] = {
|
| - { flimflam::kEapPhase2AuthPEAPMD5, EAP_PHASE_2_AUTH_MD5 },
|
| - { flimflam::kEapPhase2AuthPEAPMSCHAPV2, EAP_PHASE_2_AUTH_MSCHAPV2 },
|
| - { flimflam::kEapPhase2AuthTTLSMD5, EAP_PHASE_2_AUTH_MD5 },
|
| - { flimflam::kEapPhase2AuthTTLSMSCHAPV2, EAP_PHASE_2_AUTH_MSCHAPV2 },
|
| - { flimflam::kEapPhase2AuthTTLSMSCHAP, EAP_PHASE_2_AUTH_MSCHAP },
|
| - { flimflam::kEapPhase2AuthTTLSPAP, EAP_PHASE_2_AUTH_PAP },
|
| - { flimflam::kEapPhase2AuthTTLSCHAP, EAP_PHASE_2_AUTH_CHAP },
|
| -};
|
| -
|
| -EnumMapper<ProviderType>::Pair provider_type_table[] = {
|
| - { flimflam::kProviderL2tpIpsec, PROVIDER_TYPE_L2TP_IPSEC_PSK },
|
| - { flimflam::kProviderOpenVpn, PROVIDER_TYPE_OPEN_VPN },
|
| -};
|
| -
|
| -// Serve the singleton mapper instance.
|
| -const EnumMapper<PropertyIndex>* get_native_mapper() {
|
| - CR_DEFINE_STATIC_LOCAL(EnumMapper<PropertyIndex>, mapper,
|
| - (property_index_table,
|
| - arraysize(property_index_table),
|
| - PROPERTY_INDEX_UNKNOWN));
|
| - return &mapper;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// -------------------- NativeNetworkDeviceParser --------------------
|
| -
|
| -NativeNetworkDeviceParser::NativeNetworkDeviceParser()
|
| - : NetworkDeviceParser(get_native_mapper()) {
|
| -}
|
| -
|
| -NativeNetworkDeviceParser::~NativeNetworkDeviceParser() {
|
| -}
|
| -
|
| -NetworkDevice* NativeNetworkDeviceParser::CreateNewNetworkDevice(
|
| - const std::string& device_path) {
|
| - NetworkDevice* device =
|
| - NetworkDeviceParser::CreateNewNetworkDevice(device_path);
|
| - device->SetNetworkDeviceParser(new NativeNetworkDeviceParser());
|
| - return device;
|
| -}
|
| -
|
| -bool NativeNetworkDeviceParser::ParseValue(
|
| - PropertyIndex index, const base::Value& value, NetworkDevice* device) {
|
| - switch (index) {
|
| - case PROPERTY_INDEX_TYPE: {
|
| - std::string type_string;
|
| - if (value.GetAsString(&type_string)) {
|
| - device->set_type(ParseType(type_string));
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_NAME: {
|
| - std::string name;
|
| - if (!value.GetAsString(&name))
|
| - return false;
|
| - device->set_name(name);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_GUID: {
|
| - std::string unique_id;
|
| - if (!value.GetAsString(&unique_id))
|
| - return false;
|
| - device->set_unique_id(unique_id);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_CARRIER: {
|
| - std::string carrier;
|
| - if (!value.GetAsString(&carrier))
|
| - return false;
|
| - device->set_carrier(carrier);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_SCANNING: {
|
| - bool scanning;
|
| - if (!value.GetAsBoolean(&scanning))
|
| - return false;
|
| - device->set_scanning(scanning);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_CELLULAR_ALLOW_ROAMING: {
|
| - bool data_roaming_allowed;
|
| - if (!value.GetAsBoolean(&data_roaming_allowed))
|
| - return false;
|
| - device->set_data_roaming_allowed(data_roaming_allowed);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_CELLULAR_APN_LIST:
|
| - if (value.IsType(base::Value::TYPE_LIST)) {
|
| - CellularApnList provider_apn_list;
|
| - if (!ParseApnList(static_cast<const ListValue&>(value),
|
| - &provider_apn_list))
|
| - return false;
|
| - device->set_provider_apn_list(provider_apn_list);
|
| - return true;
|
| - }
|
| - break;
|
| - case PROPERTY_INDEX_NETWORKS:
|
| - if (value.IsType(base::Value::TYPE_LIST)) {
|
| - // Ignored.
|
| - return true;
|
| - }
|
| - break;
|
| - case PROPERTY_INDEX_FOUND_NETWORKS:
|
| - if (value.IsType(base::Value::TYPE_LIST)) {
|
| - CellularNetworkList found_cellular_networks;
|
| - if (!ParseFoundNetworksFromList(
|
| - static_cast<const ListValue&>(value),
|
| - &found_cellular_networks))
|
| - return false;
|
| - device->set_found_cellular_networks(found_cellular_networks);
|
| - return true;
|
| - }
|
| - break;
|
| - case PROPERTY_INDEX_HOME_PROVIDER: {
|
| - if (value.IsType(base::Value::TYPE_DICTIONARY)) {
|
| - const DictionaryValue& dict =
|
| - static_cast<const DictionaryValue&>(value);
|
| - std::string home_provider_code;
|
| - std::string home_provider_country;
|
| - std::string home_provider_name;
|
| - dict.GetStringWithoutPathExpansion(flimflam::kOperatorCodeKey,
|
| - &home_provider_code);
|
| - dict.GetStringWithoutPathExpansion(flimflam::kOperatorCountryKey,
|
| - &home_provider_country);
|
| - dict.GetStringWithoutPathExpansion(flimflam::kOperatorNameKey,
|
| - &home_provider_name);
|
| - device->set_home_provider_code(home_provider_code);
|
| - device->set_home_provider_country(home_provider_country);
|
| - device->set_home_provider_name(home_provider_name);
|
| - if (!device->home_provider_name().empty() &&
|
| - !device->home_provider_country().empty()) {
|
| - device->set_home_provider_id(base::StringPrintf(
|
| - kCarrierIdFormat,
|
| - device->home_provider_name().c_str(),
|
| - device->home_provider_country().c_str()));
|
| - } else {
|
| - device->set_home_provider_id(home_provider_code);
|
| - LOG(WARNING) << "Carrier ID not defined, using code instead: "
|
| - << device->home_provider_id();
|
| - }
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_PROVIDER_REQUIRES_ROAMING: {
|
| - bool provider_requires_roaming;
|
| - if (!value.GetAsBoolean(&provider_requires_roaming))
|
| - return false;
|
| - device->set_provider_requires_roaming(provider_requires_roaming);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_MEID:
|
| - case PROPERTY_INDEX_ICCID:
|
| - case PROPERTY_INDEX_IMEI:
|
| - case PROPERTY_INDEX_IMSI:
|
| - case PROPERTY_INDEX_ESN:
|
| - case PROPERTY_INDEX_MDN:
|
| - case PROPERTY_INDEX_MIN:
|
| - case PROPERTY_INDEX_MODEL_ID:
|
| - case PROPERTY_INDEX_MANUFACTURER:
|
| - case PROPERTY_INDEX_FIRMWARE_REVISION:
|
| - case PROPERTY_INDEX_HARDWARE_REVISION:
|
| - case PROPERTY_INDEX_SELECTED_NETWORK: {
|
| - std::string item;
|
| - if (!value.GetAsString(&item))
|
| - return false;
|
| - switch (index) {
|
| - case PROPERTY_INDEX_MEID:
|
| - device->set_meid(item);
|
| - break;
|
| - case PROPERTY_INDEX_ICCID:
|
| - device->set_iccid(item);
|
| - break;
|
| - case PROPERTY_INDEX_IMEI:
|
| - device->set_imei(item);
|
| - break;
|
| - case PROPERTY_INDEX_IMSI:
|
| - device->set_imsi(item);
|
| - break;
|
| - case PROPERTY_INDEX_ESN:
|
| - device->set_esn(item);
|
| - break;
|
| - case PROPERTY_INDEX_MDN:
|
| - device->set_mdn(item);
|
| - break;
|
| - case PROPERTY_INDEX_MIN:
|
| - device->set_min(item);
|
| - break;
|
| - case PROPERTY_INDEX_MODEL_ID:
|
| - device->set_model_id(item);
|
| - break;
|
| - case PROPERTY_INDEX_MANUFACTURER:
|
| - device->set_manufacturer(item);
|
| - break;
|
| - case PROPERTY_INDEX_FIRMWARE_REVISION:
|
| - device->set_firmware_revision(item);
|
| - break;
|
| - case PROPERTY_INDEX_HARDWARE_REVISION:
|
| - device->set_hardware_revision(item);
|
| - break;
|
| - case PROPERTY_INDEX_SELECTED_NETWORK:
|
| - device->set_selected_cellular_network(item);
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_SIM_LOCK:
|
| - if (value.IsType(base::Value::TYPE_DICTIONARY)) {
|
| - SimLockState sim_lock_state;
|
| - int sim_retries_left;
|
| - bool sim_lock_enabled;
|
| - if (!ParseSimLockStateFromDictionary(
|
| - static_cast<const DictionaryValue&>(value),
|
| - &sim_lock_state,
|
| - &sim_retries_left,
|
| - &sim_lock_enabled))
|
| - return false;
|
| - device->set_sim_lock_state(sim_lock_state);
|
| - device->set_sim_retries_left(sim_retries_left);
|
| - if (sim_lock_enabled)
|
| - device->set_sim_pin_required(SIM_PIN_REQUIRED);
|
| - else
|
| - device->set_sim_pin_required(SIM_PIN_NOT_REQUIRED);
|
| - return true;
|
| - }
|
| - break;
|
| - case PROPERTY_INDEX_SIM_PRESENT: {
|
| - bool sim_present;
|
| - if (!value.GetAsBoolean(&sim_present))
|
| - return false;
|
| - device->set_sim_present(sim_present);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_POWERED: {
|
| - bool powered;
|
| - if (!value.GetAsBoolean(&powered))
|
| - return false;
|
| - device->set_powered(powered);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_PRL_VERSION: {
|
| - int prl_version;
|
| - if (!value.GetAsInteger(&prl_version))
|
| - return false;
|
| - device->set_prl_version(prl_version);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_SUPPORT_NETWORK_SCAN: {
|
| - bool support_network_scan;
|
| - if (!value.GetAsBoolean(&support_network_scan))
|
| - return false;
|
| - device->set_support_network_scan(support_network_scan);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_SUPPORTED_CARRIERS: {
|
| - if (value.IsType(base::Value::TYPE_LIST)) {
|
| - device->set_supported_carriers(static_cast<const ListValue&>(value));
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_TECHNOLOGY_FAMILY: {
|
| - std::string technology_family_string;
|
| - if (value.GetAsString(&technology_family_string)) {
|
| - device->set_technology_family(
|
| - ParseTechnologyFamily(technology_family_string));
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - default:
|
| - break;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -ConnectionType NativeNetworkDeviceParser::ParseType(const std::string& type) {
|
| - return NativeNetworkParser::network_type_mapper()->Get(type);
|
| -}
|
| -
|
| -bool NativeNetworkDeviceParser::ParseApnList(const ListValue& list,
|
| - CellularApnList* apn_list) {
|
| - apn_list->clear();
|
| - apn_list->reserve(list.GetSize());
|
| - for (ListValue::const_iterator it = list.begin(); it != list.end(); ++it) {
|
| - if ((*it)->IsType(base::Value::TYPE_DICTIONARY)) {
|
| - apn_list->resize(apn_list->size() + 1);
|
| - const DictionaryValue* dict = static_cast<const DictionaryValue*>(*it);
|
| - dict->GetStringWithoutPathExpansion(
|
| - flimflam::kApnProperty, &apn_list->back().apn);
|
| - dict->GetStringWithoutPathExpansion(
|
| - flimflam::kApnNetworkIdProperty, &apn_list->back().network_id);
|
| - dict->GetStringWithoutPathExpansion(
|
| - flimflam::kApnUsernameProperty, &apn_list->back().username);
|
| - dict->GetStringWithoutPathExpansion(
|
| - flimflam::kApnPasswordProperty, &apn_list->back().password);
|
| - dict->GetStringWithoutPathExpansion(
|
| - flimflam::kApnNameProperty, &apn_list->back().name);
|
| - dict->GetStringWithoutPathExpansion(
|
| - flimflam::kApnLocalizedNameProperty,
|
| - &apn_list->back().localized_name);
|
| - dict->GetStringWithoutPathExpansion(
|
| - flimflam::kApnLanguageProperty, &apn_list->back().language);
|
| - } else {
|
| - return false;
|
| - }
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -bool NativeNetworkDeviceParser::ParseFoundNetworksFromList(
|
| - const ListValue& list,
|
| - CellularNetworkList* found_networks) {
|
| - found_networks->clear();
|
| - found_networks->reserve(list.GetSize());
|
| - for (ListValue::const_iterator it = list.begin(); it != list.end(); ++it) {
|
| - if ((*it)->IsType(base::Value::TYPE_DICTIONARY)) {
|
| - found_networks->resize(found_networks->size() + 1);
|
| - const DictionaryValue* dict = static_cast<const DictionaryValue*>(*it);
|
| - dict->GetStringWithoutPathExpansion(
|
| - flimflam::kStatusProperty, &found_networks->back().status);
|
| - dict->GetStringWithoutPathExpansion(
|
| - flimflam::kNetworkIdProperty, &found_networks->back().network_id);
|
| - dict->GetStringWithoutPathExpansion(
|
| - flimflam::kShortNameProperty, &found_networks->back().short_name);
|
| - dict->GetStringWithoutPathExpansion(
|
| - flimflam::kLongNameProperty, &found_networks->back().long_name);
|
| - dict->GetStringWithoutPathExpansion(
|
| - flimflam::kTechnologyProperty, &found_networks->back().technology);
|
| - } else {
|
| - return false;
|
| - }
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -SimLockState NativeNetworkDeviceParser::ParseSimLockState(
|
| - const std::string& state) {
|
| - static EnumMapper<SimLockState>::Pair table[] = {
|
| - { "", SIM_UNLOCKED },
|
| - { flimflam::kSIMLockPin, SIM_LOCKED_PIN },
|
| - { flimflam::kSIMLockPuk, SIM_LOCKED_PUK },
|
| - };
|
| - CR_DEFINE_STATIC_LOCAL(EnumMapper<SimLockState>, parser,
|
| - (table, arraysize(table), SIM_UNKNOWN));
|
| - SimLockState parsed_state = parser.Get(state);
|
| - DCHECK(parsed_state != SIM_UNKNOWN) << "Unknown SIMLock state encountered";
|
| - return parsed_state;
|
| -}
|
| -
|
| -bool NativeNetworkDeviceParser::ParseSimLockStateFromDictionary(
|
| - const DictionaryValue& info,
|
| - SimLockState* out_state,
|
| - int* out_retries,
|
| - bool* out_enabled) {
|
| - std::string state_string;
|
| - // Since RetriesLeft is sent as a uint32, which may overflow int32 range, from
|
| - // Shill, it may be stored as an integer or a double in DictionaryValue.
|
| - const base::Value* retries_value = NULL;
|
| - if (!info.GetString(flimflam::kSIMLockTypeProperty, &state_string) ||
|
| - !info.GetBoolean(flimflam::kSIMLockEnabledProperty, out_enabled) ||
|
| - !info.Get(flimflam::kSIMLockRetriesLeftProperty, &retries_value) ||
|
| - (retries_value->GetType() != base::Value::TYPE_INTEGER &&
|
| - retries_value->GetType() != base::Value::TYPE_DOUBLE)) {
|
| - LOG(ERROR) << "Error parsing SIMLock state";
|
| - return false;
|
| - }
|
| - *out_state = ParseSimLockState(state_string);
|
| - if (retries_value->GetType() == base::Value::TYPE_INTEGER) {
|
| - retries_value->GetAsInteger(out_retries);
|
| - } else if (retries_value->GetType() == base::Value::TYPE_DOUBLE) {
|
| - double retries_double = 0;
|
| - retries_value->GetAsDouble(&retries_double);
|
| - *out_retries = retries_double;
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -TechnologyFamily NativeNetworkDeviceParser::ParseTechnologyFamily(
|
| - const std::string& technology_family) {
|
| - static EnumMapper<TechnologyFamily>::Pair table[] = {
|
| - { flimflam::kTechnologyFamilyCdma, TECHNOLOGY_FAMILY_CDMA },
|
| - { flimflam::kTechnologyFamilyGsm, TECHNOLOGY_FAMILY_GSM },
|
| - };
|
| - CR_DEFINE_STATIC_LOCAL(EnumMapper<TechnologyFamily>, parser,
|
| - (table, arraysize(table), TECHNOLOGY_FAMILY_UNKNOWN));
|
| - return parser.Get(technology_family);
|
| -}
|
| -
|
| -// -------------------- NativeNetworkParser --------------------
|
| -
|
| -NativeNetworkParser::NativeNetworkParser()
|
| - : NetworkParser(get_native_mapper()) {
|
| -}
|
| -
|
| -NativeNetworkParser::~NativeNetworkParser() {
|
| -}
|
| -
|
| -// static
|
| -const EnumMapper<PropertyIndex>* NativeNetworkParser::property_mapper() {
|
| - return get_native_mapper();
|
| -}
|
| -
|
| -// static
|
| -const EnumMapper<ConnectionType>* NativeNetworkParser::network_type_mapper() {
|
| - CR_DEFINE_STATIC_LOCAL(
|
| - EnumMapper<ConnectionType>,
|
| - network_type_mapper,
|
| - (network_type_table, arraysize(network_type_table), TYPE_UNKNOWN));
|
| - return &network_type_mapper;
|
| -}
|
| -
|
| -// static
|
| -const EnumMapper<ConnectionSecurity>*
|
| - NativeNetworkParser::network_security_mapper() {
|
| - CR_DEFINE_STATIC_LOCAL(
|
| - EnumMapper<ConnectionSecurity>,
|
| - network_security_mapper,
|
| - (network_security_table, arraysize(network_security_table),
|
| - SECURITY_UNKNOWN));
|
| - return &network_security_mapper;
|
| -}
|
| -
|
| -// static
|
| -const EnumMapper<EAPMethod>* NativeNetworkParser::network_eap_method_mapper() {
|
| - CR_DEFINE_STATIC_LOCAL(
|
| - EnumMapper<EAPMethod>,
|
| - network_eap_method_mapper,
|
| - (network_eap_method_table, arraysize(network_eap_method_table),
|
| - EAP_METHOD_UNKNOWN));
|
| - return &network_eap_method_mapper;
|
| -}
|
| -
|
| -// static
|
| -const EnumMapper<EAPPhase2Auth>*
|
| - NativeNetworkParser::network_eap_auth_mapper() {
|
| - CR_DEFINE_STATIC_LOCAL(
|
| - EnumMapper<EAPPhase2Auth>,
|
| - network_eap_auth_mapper,
|
| - (network_eap_auth_table, arraysize(network_eap_auth_table),
|
| - EAP_PHASE_2_AUTH_AUTO));
|
| - return &network_eap_auth_mapper;
|
| -}
|
| -
|
| -const ConnectionType NativeNetworkParser::ParseConnectionType(
|
| - const std::string& connection_type) {
|
| - return network_type_mapper()->Get(connection_type);
|
| -}
|
| -
|
| -Network* NativeNetworkParser::CreateNewNetwork(
|
| - ConnectionType type, const std::string& service_path) {
|
| - Network* network = NetworkParser::CreateNewNetwork(type, service_path);
|
| - if (network) {
|
| - if (type == TYPE_ETHERNET)
|
| - network->SetNetworkParser(new NativeEthernetNetworkParser());
|
| - else if (type == TYPE_WIFI)
|
| - network->SetNetworkParser(new NativeWifiNetworkParser());
|
| - else if (type == TYPE_WIMAX)
|
| - network->SetNetworkParser(new NativeWimaxNetworkParser());
|
| - else if (type == TYPE_CELLULAR)
|
| - network->SetNetworkParser(new NativeCellularNetworkParser());
|
| - else if (type == TYPE_VPN)
|
| - network->SetNetworkParser(new NativeVirtualNetworkParser());
|
| - }
|
| - return network;
|
| -}
|
| -
|
| -bool NativeNetworkParser::ParseValue(PropertyIndex index,
|
| - const base::Value& value,
|
| - Network* network) {
|
| - switch (index) {
|
| - case PROPERTY_INDEX_TYPE: {
|
| - std::string type_string;
|
| - if (value.GetAsString(&type_string)) {
|
| - ConnectionType type = ParseType(type_string);
|
| - LOG_IF(ERROR, type != network->type())
|
| - << "Network with mismatched type: " << network->service_path()
|
| - << " " << type << " != " << network->type();
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_DEVICE: {
|
| - std::string device_path;
|
| - if (!value.GetAsString(&device_path))
|
| - return false;
|
| - network->set_device_path(device_path);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_PROFILE: {
|
| - // Note: currently this is only provided for non remembered networks.
|
| - std::string profile_path;
|
| - if (!value.GetAsString(&profile_path))
|
| - return false;
|
| - network->set_profile_path(profile_path);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_STATE: {
|
| - std::string state_string;
|
| - if (value.GetAsString(&state_string)) {
|
| - network->SetState(ParseState(state_string));
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_ERROR: {
|
| - std::string error_string;
|
| - if (value.GetAsString(&error_string)) {
|
| - network->SetError(ParseError(error_string));
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_CONNECTABLE: {
|
| - bool connectable;
|
| - if (!value.GetAsBoolean(&connectable))
|
| - return false;
|
| - network->set_connectable(connectable);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_IS_ACTIVE: {
|
| - bool is_active;
|
| - if (!value.GetAsBoolean(&is_active))
|
| - return false;
|
| - network->set_is_active(is_active);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_FAVORITE:
|
| - // This property is ignored.
|
| - return true;
|
| - case PROPERTY_INDEX_SAVE_CREDENTIALS: {
|
| - bool save_credentials;
|
| - if (!value.GetAsBoolean(&save_credentials))
|
| - return false;
|
| - network->set_save_credentials(save_credentials);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_CHECK_PORTAL:
|
| - // This property is ignored.
|
| - return true;
|
| - default:
|
| - return NetworkParser::ParseValue(index, value, network);
|
| - break;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -ConnectionType NativeNetworkParser::ParseType(const std::string& type) {
|
| - return network_type_mapper()->Get(type);
|
| -}
|
| -
|
| -ConnectionType NativeNetworkParser::ParseTypeFromDictionary(
|
| - const DictionaryValue& info) {
|
| - std::string type_string;
|
| - info.GetString(flimflam::kTypeProperty, &type_string);
|
| - return ParseType(type_string);
|
| -}
|
| -
|
| -ConnectionState NativeNetworkParser::ParseState(const std::string& state) {
|
| - static EnumMapper<ConnectionState>::Pair table[] = {
|
| - { flimflam::kStateIdle, STATE_IDLE },
|
| - { flimflam::kStateCarrier, STATE_CARRIER },
|
| - { flimflam::kStateAssociation, STATE_ASSOCIATION },
|
| - { flimflam::kStateConfiguration, STATE_CONFIGURATION },
|
| - { flimflam::kStateReady, STATE_READY },
|
| - { flimflam::kStateDisconnect, STATE_DISCONNECT },
|
| - { flimflam::kStateFailure, STATE_FAILURE },
|
| - { flimflam::kStateActivationFailure, STATE_ACTIVATION_FAILURE },
|
| - { flimflam::kStatePortal, STATE_PORTAL },
|
| - { flimflam::kStateOnline, STATE_ONLINE },
|
| - };
|
| - CR_DEFINE_STATIC_LOCAL(EnumMapper<ConnectionState>, parser,
|
| - (table, arraysize(table), STATE_UNKNOWN));
|
| - return parser.Get(state);
|
| -}
|
| -
|
| -ConnectionError NativeNetworkParser::ParseError(const std::string& error) {
|
| - static EnumMapper<ConnectionError>::Pair table[] = {
|
| - { flimflam::kErrorOutOfRange, ERROR_OUT_OF_RANGE },
|
| - { flimflam::kErrorPinMissing, ERROR_PIN_MISSING },
|
| - { flimflam::kErrorDhcpFailed, ERROR_DHCP_FAILED },
|
| - { flimflam::kErrorConnectFailed, ERROR_CONNECT_FAILED },
|
| - { flimflam::kErrorBadPassphrase, ERROR_BAD_PASSPHRASE },
|
| - { flimflam::kErrorBadWEPKey, ERROR_BAD_WEPKEY },
|
| - { flimflam::kErrorActivationFailed, ERROR_ACTIVATION_FAILED },
|
| - { flimflam::kErrorNeedEvdo, ERROR_NEED_EVDO },
|
| - { flimflam::kErrorNeedHomeNetwork, ERROR_NEED_HOME_NETWORK },
|
| - { flimflam::kErrorOtaspFailed, ERROR_OTASP_FAILED },
|
| - { flimflam::kErrorAaaFailed, ERROR_AAA_FAILED },
|
| - { flimflam::kErrorInternal, ERROR_INTERNAL },
|
| - { flimflam::kErrorDNSLookupFailed, ERROR_DNS_LOOKUP_FAILED },
|
| - { flimflam::kErrorHTTPGetFailed, ERROR_HTTP_GET_FAILED },
|
| - { flimflam::kErrorIpsecPskAuthFailed, ERROR_IPSEC_PSK_AUTH_FAILED },
|
| - { flimflam::kErrorIpsecCertAuthFailed, ERROR_IPSEC_CERT_AUTH_FAILED },
|
| - { flimflam::kErrorPppAuthFailed, ERROR_PPP_AUTH_FAILED },
|
| - { shill::kErrorEapAuthenticationFailed, ERROR_EAP_AUTHENTICATION_FAILED },
|
| - { shill::kErrorEapLocalTlsFailed, ERROR_EAP_LOCAL_TLS_FAILED },
|
| - { shill::kErrorEapRemoteTlsFailed, ERROR_EAP_REMOTE_TLS_FAILED },
|
| - };
|
| - CR_DEFINE_STATIC_LOCAL(EnumMapper<ConnectionError>, parser,
|
| - (table, arraysize(table), ERROR_NO_ERROR));
|
| - return parser.Get(error);
|
| -}
|
| -
|
| -// -------------------- NativeEthernetNetworkParser --------------------
|
| -
|
| -NativeEthernetNetworkParser::NativeEthernetNetworkParser() {}
|
| -NativeEthernetNetworkParser::~NativeEthernetNetworkParser() {}
|
| -
|
| -// -------------------- NativeWirelessNetworkParser --------------------
|
| -
|
| -NativeWirelessNetworkParser::NativeWirelessNetworkParser() {}
|
| -NativeWirelessNetworkParser::~NativeWirelessNetworkParser() {}
|
| -
|
| -bool NativeWirelessNetworkParser::ParseValue(PropertyIndex index,
|
| - const base::Value& value,
|
| - Network* network) {
|
| - CHECK(network->type() == TYPE_WIFI ||
|
| - network->type() == TYPE_WIMAX ||
|
| - network->type() == TYPE_BLUETOOTH ||
|
| - network->type() == TYPE_CELLULAR);
|
| - WirelessNetwork* wireless_network = static_cast<WirelessNetwork*>(network);
|
| - switch (index) {
|
| - case PROPERTY_INDEX_SIGNAL_STRENGTH: {
|
| - int strength;
|
| - if (!value.GetAsInteger(&strength))
|
| - return false;
|
| - wireless_network->set_strength(strength);
|
| - return true;
|
| - }
|
| - default:
|
| - return NativeNetworkParser::ParseValue(index, value, network);
|
| - break;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -// -------------------- NativeCellularNetworkParser --------------------
|
| -
|
| -NativeCellularNetworkParser::NativeCellularNetworkParser() {}
|
| -NativeCellularNetworkParser::~NativeCellularNetworkParser() {}
|
| -
|
| -bool NativeCellularNetworkParser::ParseValue(PropertyIndex index,
|
| - const base::Value& value,
|
| - Network* network) {
|
| - CHECK_EQ(TYPE_CELLULAR, network->type());
|
| - CellularNetwork* cellular_network = static_cast<CellularNetwork*>(network);
|
| - switch (index) {
|
| - case PROPERTY_INDEX_ACTIVATE_OVER_NON_CELLULAR_NETWORK: {
|
| - bool activate_over_non_cellular_network;
|
| - if (value.GetAsBoolean(&activate_over_non_cellular_network)) {
|
| - cellular_network->set_activate_over_non_cellular_network(
|
| - activate_over_non_cellular_network);
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_ACTIVATION_STATE: {
|
| - std::string activation_state_string;
|
| - if (value.GetAsString(&activation_state_string)) {
|
| - cellular_network->set_activation_state(
|
| - ParseActivationState(activation_state_string));
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_CELLULAR_APN: {
|
| - if (value.IsType(base::Value::TYPE_DICTIONARY)) {
|
| - cellular_network->set_apn(static_cast<const DictionaryValue&>(value));
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_CELLULAR_LAST_GOOD_APN: {
|
| - if (value.IsType(base::Value::TYPE_DICTIONARY)) {
|
| - cellular_network->set_last_good_apn(
|
| - static_cast<const DictionaryValue&>(value));
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_NETWORK_TECHNOLOGY: {
|
| - std::string network_technology_string;
|
| - if (value.GetAsString(&network_technology_string)) {
|
| - cellular_network->set_network_technology(
|
| - ParseNetworkTechnology(network_technology_string));
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_ROAMING_STATE: {
|
| - std::string roaming_state_string;
|
| - if (value.GetAsString(&roaming_state_string)) {
|
| - cellular_network->set_roaming_state(
|
| - ParseRoamingState(roaming_state_string));
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_OPERATOR_NAME: {
|
| - std::string value_str;
|
| - if (!value.GetAsString(&value_str))
|
| - break;
|
| - cellular_network->set_operator_name(value_str);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_OPERATOR_CODE: {
|
| - std::string value_str;
|
| - if (!value.GetAsString(&value_str))
|
| - break;
|
| - cellular_network->set_operator_code(value_str);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_OUT_OF_CREDITS: {
|
| - bool out_of_credits;
|
| - if (value.GetAsBoolean(&out_of_credits)) {
|
| - cellular_network->set_out_of_credits(out_of_credits);
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_SERVING_OPERATOR: {
|
| - if (value.IsType(base::Value::TYPE_DICTIONARY)) {
|
| - const DictionaryValue& dict =
|
| - static_cast<const DictionaryValue&>(value);
|
| - std::string value_str;
|
| - dict.GetStringWithoutPathExpansion(
|
| - flimflam::kOperatorNameKey, &value_str);
|
| - cellular_network->set_operator_name(value_str);
|
| - value_str.clear();
|
| - dict.GetStringWithoutPathExpansion(
|
| - flimflam::kOperatorCodeKey, &value_str);
|
| - cellular_network->set_operator_code(value_str);
|
| - value_str.clear();
|
| - dict.GetStringWithoutPathExpansion(
|
| - flimflam::kOperatorCountryKey, &value_str);
|
| - cellular_network->set_operator_country(value_str);
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_USAGE_URL: {
|
| - std::string value_str;
|
| - if (!value.GetAsString(&value_str))
|
| - break;
|
| - cellular_network->set_usage_url(value_str);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_OLP: {
|
| - if (value.IsType(base::Value::TYPE_DICTIONARY)) {
|
| - const DictionaryValue& dict =
|
| - static_cast<const DictionaryValue&>(value);
|
| - std::string portal_url;
|
| - std::string method;
|
| - std::string postdata;
|
| - dict.GetStringWithoutPathExpansion(flimflam::kPaymentPortalURL,
|
| - &portal_url);
|
| - dict.GetStringWithoutPathExpansion(flimflam::kPaymentPortalMethod,
|
| - &method);
|
| - dict.GetStringWithoutPathExpansion(flimflam::kPaymentPortalPostData,
|
| - &postdata);
|
| - cellular_network->set_payment_url(portal_url);
|
| - cellular_network->set_post_data(postdata);
|
| - cellular_network->set_using_post(
|
| - LowerCaseEqualsASCII(method, kPostMethod));
|
| - return true;
|
| - }
|
| - break;
|
| - }
|
| - case PROPERTY_INDEX_OLP_URL:
|
| - // This property is ignored.
|
| - return true;
|
| - case PROPERTY_INDEX_STATE: {
|
| - if (NativeWirelessNetworkParser::ParseValue(index, value, network))
|
| - return true;
|
| - break;
|
| - }
|
| - default:
|
| - return NativeWirelessNetworkParser::ParseValue(index, value, network);
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -ActivationState NativeCellularNetworkParser::ParseActivationState(
|
| - const std::string& state) {
|
| - static EnumMapper<ActivationState>::Pair table[] = {
|
| - { flimflam::kActivationStateActivated, ACTIVATION_STATE_ACTIVATED },
|
| - { flimflam::kActivationStateActivating, ACTIVATION_STATE_ACTIVATING },
|
| - { flimflam::kActivationStateNotActivated, ACTIVATION_STATE_NOT_ACTIVATED },
|
| - { flimflam::kActivationStatePartiallyActivated,
|
| - ACTIVATION_STATE_PARTIALLY_ACTIVATED},
|
| - { flimflam::kActivationStateUnknown, ACTIVATION_STATE_UNKNOWN},
|
| - };
|
| - CR_DEFINE_STATIC_LOCAL(EnumMapper<ActivationState>, parser,
|
| - (table, arraysize(table), ACTIVATION_STATE_UNKNOWN));
|
| - return parser.Get(state);
|
| -}
|
| -
|
| -NetworkTechnology NativeCellularNetworkParser::ParseNetworkTechnology(
|
| - const std::string& technology) {
|
| - static EnumMapper<NetworkTechnology>::Pair table[] = {
|
| - { flimflam::kNetworkTechnology1Xrtt, NETWORK_TECHNOLOGY_1XRTT },
|
| - { flimflam::kNetworkTechnologyEvdo, NETWORK_TECHNOLOGY_EVDO },
|
| - { flimflam::kNetworkTechnologyGprs, NETWORK_TECHNOLOGY_GPRS },
|
| - { flimflam::kNetworkTechnologyEdge, NETWORK_TECHNOLOGY_EDGE },
|
| - { flimflam::kNetworkTechnologyUmts, NETWORK_TECHNOLOGY_UMTS },
|
| - { flimflam::kNetworkTechnologyHspa, NETWORK_TECHNOLOGY_HSPA },
|
| - { flimflam::kNetworkTechnologyHspaPlus, NETWORK_TECHNOLOGY_HSPA_PLUS },
|
| - { flimflam::kNetworkTechnologyLte, NETWORK_TECHNOLOGY_LTE },
|
| - { flimflam::kNetworkTechnologyLteAdvanced,
|
| - NETWORK_TECHNOLOGY_LTE_ADVANCED },
|
| - { flimflam::kNetworkTechnologyGsm, NETWORK_TECHNOLOGY_GSM },
|
| - };
|
| - CR_DEFINE_STATIC_LOCAL(EnumMapper<NetworkTechnology>, parser,
|
| - (table, arraysize(table), NETWORK_TECHNOLOGY_UNKNOWN));
|
| - return parser.Get(technology);
|
| -}
|
| -
|
| -NetworkRoamingState NativeCellularNetworkParser::ParseRoamingState(
|
| - const std::string& roaming_state) {
|
| - static EnumMapper<NetworkRoamingState>::Pair table[] = {
|
| - { flimflam::kRoamingStateHome, ROAMING_STATE_HOME },
|
| - { flimflam::kRoamingStateRoaming, ROAMING_STATE_ROAMING },
|
| - { flimflam::kRoamingStateUnknown, ROAMING_STATE_UNKNOWN },
|
| - };
|
| - CR_DEFINE_STATIC_LOCAL(EnumMapper<NetworkRoamingState>, parser,
|
| - (table, arraysize(table), ROAMING_STATE_UNKNOWN));
|
| - return parser.Get(roaming_state);
|
| -}
|
| -
|
| -// -------------------- NativeWimaxNetworkParser --------------------
|
| -
|
| -NativeWimaxNetworkParser::NativeWimaxNetworkParser() {}
|
| -NativeWimaxNetworkParser::~NativeWimaxNetworkParser() {}
|
| -
|
| -
|
| -bool NativeWimaxNetworkParser::ParseValue(PropertyIndex index,
|
| - const base::Value& value,
|
| - Network* network) {
|
| - CHECK_EQ(TYPE_WIMAX, network->type());
|
| - WimaxNetwork* wimax_network = static_cast<WimaxNetwork*>(network);
|
| - switch (index) {
|
| - case PROPERTY_INDEX_PASSPHRASE_REQUIRED: {
|
| - bool passphrase_required;
|
| - if (!value.GetAsBoolean(&passphrase_required))
|
| - break;
|
| - wimax_network->set_passphrase_required(passphrase_required);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_EAP_IDENTITY: {
|
| - std::string eap_identity;
|
| - if (!value.GetAsString(&eap_identity))
|
| - break;
|
| -
|
| - wimax_network->set_eap_identity(eap_identity);
|
| - }
|
| - case PROPERTY_INDEX_EAP_PASSWORD: {
|
| - std::string passphrase;
|
| - if (!value.GetAsString(&passphrase))
|
| - break;
|
| -
|
| - wimax_network->set_eap_passphrase(passphrase);
|
| - return true;
|
| - }
|
| - default:
|
| - return NativeWirelessNetworkParser::ParseValue(index, value, network);
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -// -------------------- NativeWifiNetworkParser --------------------
|
| -
|
| -NativeWifiNetworkParser::NativeWifiNetworkParser() {}
|
| -NativeWifiNetworkParser::~NativeWifiNetworkParser() {}
|
| -
|
| -bool NativeWifiNetworkParser::ParseValue(PropertyIndex index,
|
| - const base::Value& value,
|
| - Network* network) {
|
| - CHECK_EQ(TYPE_WIFI, network->type());
|
| - WifiNetwork* wifi_network = static_cast<WifiNetwork*>(network);
|
| - switch (index) {
|
| - case PROPERTY_INDEX_WIFI_HEX_SSID: {
|
| - std::string ssid_hex;
|
| - if (!value.GetAsString(&ssid_hex))
|
| - return false;
|
| - wifi_network->SetHexSsid(ssid_hex);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_WIFI_BSSID: {
|
| - std::string bssid;
|
| - if (!value.GetAsString(&bssid))
|
| - return false;
|
| - wifi_network->set_bssid(bssid);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_WIFI_HIDDEN_SSID: {
|
| - bool hidden_ssid;
|
| - if (!value.GetAsBoolean(&hidden_ssid))
|
| - return false;
|
| - wifi_network->set_hidden_ssid(hidden_ssid);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_WIFI_FREQUENCY: {
|
| - int frequency;
|
| - if (!value.GetAsInteger(&frequency))
|
| - return false;
|
| - wifi_network->set_frequency(frequency);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_NAME: {
|
| - // Does not change network name when it was already set by WiFi.HexSSID.
|
| - if (!wifi_network->name().empty())
|
| - return true;
|
| - else
|
| - return NativeWirelessNetworkParser::ParseValue(index, value, network);
|
| - }
|
| - case PROPERTY_INDEX_GUID: {
|
| - std::string unique_id;
|
| - if (!value.GetAsString(&unique_id))
|
| - break;
|
| - wifi_network->set_unique_id(unique_id);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_SECURITY: {
|
| - std::string security_string;
|
| - if (!value.GetAsString(&security_string))
|
| - break;
|
| - wifi_network->set_encryption(ParseSecurity(security_string));
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_PASSPHRASE: {
|
| - std::string passphrase;
|
| - if (!value.GetAsString(&passphrase))
|
| - break;
|
| -
|
| - if (chromeos::UserManager::Get()->IsCurrentUserOwner())
|
| - wifi_network->set_passphrase(passphrase);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_PASSPHRASE_REQUIRED: {
|
| - bool passphrase_required;
|
| - if (!value.GetAsBoolean(&passphrase_required))
|
| - break;
|
| - wifi_network->set_passphrase_required(passphrase_required);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_IDENTITY: {
|
| - std::string identity;
|
| - if (!value.GetAsString(&identity))
|
| - break;
|
| - wifi_network->set_identity(identity);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_EAP_IDENTITY: {
|
| - std::string eap_identity;
|
| - if (!value.GetAsString(&eap_identity))
|
| - break;
|
| - wifi_network->set_eap_identity(eap_identity);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_EAP_METHOD: {
|
| - std::string eap_method;
|
| - if (!value.GetAsString(&eap_method))
|
| - break;
|
| - wifi_network->set_eap_method(ParseEAPMethod(eap_method));
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_EAP_PHASE_2_AUTH: {
|
| - std::string eap_phase_2_auth;
|
| - if (!value.GetAsString(&eap_phase_2_auth))
|
| - break;
|
| - wifi_network->set_eap_phase_2_auth(ParseEAPPhase2Auth(eap_phase_2_auth));
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_EAP_ANONYMOUS_IDENTITY: {
|
| - std::string eap_anonymous_identity;
|
| - if (!value.GetAsString(&eap_anonymous_identity))
|
| - break;
|
| - wifi_network->set_eap_anonymous_identity(eap_anonymous_identity);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_EAP_CERT_ID: {
|
| - std::string eap_client_cert_pkcs11_id;
|
| - if (!value.GetAsString(&eap_client_cert_pkcs11_id))
|
| - break;
|
| - wifi_network->set_eap_client_cert_pkcs11_id(eap_client_cert_pkcs11_id);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_EAP_CA_CERT_PEM: {
|
| - const base::ListValue* pems = NULL;
|
| - value.GetAsList(&pems);
|
| - if (!pems)
|
| - break;
|
| - std::string ca_cert_pem;
|
| - if (!pems->empty())
|
| - pems->GetString(0, &ca_cert_pem);
|
| - wifi_network->set_eap_server_ca_cert_pem(ca_cert_pem);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_EAP_USE_SYSTEM_CAS: {
|
| - bool eap_use_system_cas;
|
| - if (!value.GetAsBoolean(&eap_use_system_cas))
|
| - break;
|
| - wifi_network->set_eap_use_system_cas(eap_use_system_cas);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_EAP_PASSWORD: {
|
| - std::string eap_passphrase;
|
| - if (!value.GetAsString(&eap_passphrase))
|
| - break;
|
| - wifi_network->set_eap_passphrase(eap_passphrase);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_WIFI_AUTH_MODE:
|
| - case PROPERTY_INDEX_WIFI_PHY_MODE:
|
| - case PROPERTY_INDEX_EAP_CLIENT_CERT:
|
| - case PROPERTY_INDEX_EAP_CLIENT_CERT_NSS:
|
| - case PROPERTY_INDEX_EAP_PRIVATE_KEY:
|
| - case PROPERTY_INDEX_EAP_PRIVATE_KEY_PASSWORD:
|
| - case PROPERTY_INDEX_EAP_KEY_ID:
|
| - case PROPERTY_INDEX_EAP_CA_CERT_ID:
|
| - case PROPERTY_INDEX_EAP_PIN:
|
| - case PROPERTY_INDEX_EAP_KEY_MGMT:
|
| - // These properties are currently not used in the UI.
|
| - return true;
|
| - default:
|
| - return NativeWirelessNetworkParser::ParseValue(index, value, network);
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -ConnectionSecurity NativeWifiNetworkParser::ParseSecurity(
|
| - const std::string& security) {
|
| - return network_security_mapper()->Get(security);
|
| -}
|
| -
|
| -EAPMethod NativeWifiNetworkParser::ParseEAPMethod(const std::string& method) {
|
| - return network_eap_method_mapper()->Get(method);
|
| -}
|
| -
|
| -EAPPhase2Auth NativeWifiNetworkParser::ParseEAPPhase2Auth(
|
| - const std::string& auth) {
|
| - return network_eap_auth_mapper()->Get(auth);
|
| -}
|
| -
|
| -// -------------------- NativeVirtualNetworkParser --------------------
|
| -
|
| -
|
| -NativeVirtualNetworkParser::NativeVirtualNetworkParser() {}
|
| -NativeVirtualNetworkParser::~NativeVirtualNetworkParser() {}
|
| -
|
| -bool NativeVirtualNetworkParser::UpdateNetworkFromInfo(
|
| - const DictionaryValue& info,
|
| - Network* network) {
|
| - CHECK_EQ(TYPE_VPN, network->type());
|
| - VirtualNetwork* virtual_network = static_cast<VirtualNetwork*>(network);
|
| - if (!NativeNetworkParser::UpdateNetworkFromInfo(info, network))
|
| - return false;
|
| - VLOG(1) << "Updating VPN '" << virtual_network->name()
|
| - << "': Server: " << virtual_network->server_hostname()
|
| - << " Type: "
|
| - << ProviderTypeToString(virtual_network->provider_type());
|
| - if (virtual_network->provider_type() == PROVIDER_TYPE_L2TP_IPSEC_PSK) {
|
| - if (!virtual_network->client_cert_id().empty())
|
| - virtual_network->set_provider_type(PROVIDER_TYPE_L2TP_IPSEC_USER_CERT);
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -bool NativeVirtualNetworkParser::ParseValue(PropertyIndex index,
|
| - const base::Value& value,
|
| - Network* network) {
|
| - CHECK_EQ(TYPE_VPN, network->type());
|
| - VirtualNetwork* virtual_network = static_cast<VirtualNetwork*>(network);
|
| - switch (index) {
|
| - case PROPERTY_INDEX_PROVIDER: {
|
| - // TODO(rkc): Figure out why is this ever not true and fix the root
|
| - // cause. 'value' comes to us all the way from the cros dbus call, the
|
| - // issue is likely on the cros side of things.
|
| - if (value.GetType() != Value::TYPE_DICTIONARY)
|
| - return false;
|
| -
|
| - const DictionaryValue& dict = static_cast<const DictionaryValue&>(value);
|
| - for (DictionaryValue::Iterator iter(dict);
|
| - !iter.IsAtEnd();
|
| - iter.Advance()) {
|
| - PropertyIndex index = mapper().Get(iter.key());
|
| - if (!ParseProviderValue(index, iter.value(), virtual_network)) {
|
| - VLOG(1) << network->name() << ": Provider unhandled key: "
|
| - << iter.key() << " Type: " << iter.value().GetType();
|
| - }
|
| - }
|
| - return true;
|
| - }
|
| - default:
|
| - return NativeNetworkParser::ParseValue(index, value, network);
|
| - break;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -bool NativeVirtualNetworkParser::ParseProviderValue(PropertyIndex index,
|
| - const base::Value& value,
|
| - VirtualNetwork* network) {
|
| - switch (index) {
|
| - case PROPERTY_INDEX_HOST: {
|
| - std::string server_hostname;
|
| - if (!value.GetAsString(&server_hostname))
|
| - break;
|
| - network->set_server_hostname(server_hostname);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_NAME: {
|
| - std::string name;
|
| - if (!value.GetAsString(&name))
|
| - break;
|
| - network->set_name(name);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_TYPE: {
|
| - std::string provider_type_string;
|
| - if (!value.GetAsString(&provider_type_string))
|
| - break;
|
| - network->set_provider_type(ParseProviderType(provider_type_string));
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_L2TPIPSEC_CA_CERT_PEM:
|
| - case PROPERTY_INDEX_OPEN_VPN_CA_CERT_PEM: {
|
| - const base::ListValue* pems = NULL;
|
| - value.GetAsList(&pems);
|
| - if (!pems)
|
| - break;
|
| - std::string ca_cert_pem;
|
| - if (!pems->empty())
|
| - pems->GetString(0, &ca_cert_pem);
|
| - network->set_ca_cert_pem(ca_cert_pem);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_L2TPIPSEC_PSK: {
|
| - std::string psk_passphrase;
|
| - if (!value.GetAsString(&psk_passphrase))
|
| - break;
|
| - network->set_psk_passphrase(psk_passphrase);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_L2TPIPSEC_PSK_REQUIRED: {
|
| - bool psk_passphrase_required;
|
| - if (!value.GetAsBoolean(&psk_passphrase_required))
|
| - break;
|
| - network->set_psk_passphrase_required(psk_passphrase_required);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_L2TPIPSEC_CLIENT_CERT_ID:
|
| - case PROPERTY_INDEX_OPEN_VPN_CLIENT_CERT_ID: {
|
| - std::string client_cert_id;
|
| - if (!value.GetAsString(&client_cert_id))
|
| - break;
|
| - network->set_client_cert_id(client_cert_id);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_L2TPIPSEC_USER:
|
| - case PROPERTY_INDEX_OPEN_VPN_USER: {
|
| - std::string username;
|
| - if (!value.GetAsString(&username))
|
| - break;
|
| - network->set_username(username);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_L2TPIPSEC_PASSWORD:
|
| - case PROPERTY_INDEX_OPEN_VPN_PASSWORD: {
|
| - std::string user_passphrase;
|
| - if (!value.GetAsString(&user_passphrase))
|
| - break;
|
| - network->set_user_passphrase(user_passphrase);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_PASSPHRASE_REQUIRED: {
|
| - bool user_passphrase_required;
|
| - if (!value.GetAsBoolean(&user_passphrase_required))
|
| - break;
|
| - network->set_user_passphrase_required(user_passphrase_required);
|
| - return true;
|
| - }
|
| - case PROPERTY_INDEX_L2TPIPSEC_GROUP_NAME: {
|
| - std::string group_name;
|
| - if (!value.GetAsString(&group_name))
|
| - break;
|
| - network->set_group_name(group_name);
|
| - return true;
|
| - }
|
| - default:
|
| - break;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -// static
|
| -const EnumMapper<ProviderType>*
|
| - NativeVirtualNetworkParser::provider_type_mapper() {
|
| - CR_DEFINE_STATIC_LOCAL(EnumMapper<ProviderType>, parser,
|
| - (provider_type_table, arraysize(provider_type_table),
|
| - PROVIDER_TYPE_MAX));
|
| - return &parser;
|
| -}
|
| -
|
| -ProviderType NativeVirtualNetworkParser::ParseProviderType(
|
| - const std::string& type) {
|
| - return provider_type_mapper()->Get(type);
|
| -}
|
| -
|
| -} // namespace chromeos
|
|
|