Index: chrome/browser/chromeos/cros/network_library.cc |
diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc |
index 06f3aba152d16c156292bd884b4b5f726ac4ab84..bca39b932124c5eef208bff4f971439d369180c2 100644 |
--- a/chrome/browser/chromeos/cros/network_library.cc |
+++ b/chrome/browser/chromeos/cros/network_library.cc |
@@ -21,6 +21,8 @@ |
#include "base/utf_string_conversion_utils.h" |
#include "base/values.h" |
#include "chrome/browser/chromeos/cros/cros_library.h" |
+#include "chrome/browser/chromeos/cros/native_network_constants.h" |
+#include "chrome/browser/chromeos/cros/native_network_parser.h" |
#include "chrome/browser/chromeos/login/user_manager.h" |
#include "chrome/browser/chromeos/network_login_observer.h" |
#include "chrome/browser/chromeos/user_cros_settings_provider.h" |
@@ -37,10 +39,10 @@ |
// and services: |
// |
// NetworkDevice: e.g. ethernet, wifi modem, cellular modem |
-// device_map_: canonical map<path,NetworkDevice*> for devices |
+// device_map_: canonical map<path, NetworkDevice*> for devices |
// |
// Network: a network service ("network"). |
-// network_map_: canonical map<path,Network*> for all visible networks. |
+// network_map_: canonical map<path, Network*> for all visible networks. |
// EthernetNetwork |
// ethernet_: EthernetNetwork* to the active ethernet network in network_map_. |
// WirelessNetwork: a WiFi or Cellular Network. |
@@ -51,8 +53,8 @@ |
// CellularNetwork |
// active_cellular_: Cellular version of wifi_. |
// cellular_networks_: Cellular version of wifi_. |
-// network_unique_id_map_: map<unique_id,Network*> for visible networks. |
-// remembered_network_map_: a canonical map<path,Network*> for all networks |
+// network_unique_id_map_: map<unique_id, Network*> for visible networks. |
+// remembered_network_map_: a canonical map<path, Network*> for all networks |
// remembered in the active Profile ("favorites"). |
// remembered_wifi_networks_: ordered vector of WifiNetwork* entries in |
// remembered_network_map_, in descending order of preference. |
@@ -101,813 +103,6 @@ const int kRecentPlanPaymentHours = 6; |
// If cellular device doesn't have SIM card, then retries are never used. |
const int kDefaultSimUnlockRetriesCount = 999; |
-// Format of the Carrier ID: <carrier name> (<carrier country>). |
-const char kCarrierIdFormat[] = "%s (%s)"; |
- |
-// Path of the default (shared) flimflam profile. |
-const char kSharedProfilePath[] = "/profile/default"; |
- |
-// Type of a pending SIM operation. |
-enum SimOperationType { |
- SIM_OPERATION_NONE = 0, |
- SIM_OPERATION_CHANGE_PIN = 1, |
- SIM_OPERATION_CHANGE_REQUIRE_PIN = 2, |
- SIM_OPERATION_ENTER_PIN = 3, |
- SIM_OPERATION_UNBLOCK_PIN = 4, |
-}; |
- |
-// D-Bus interface string constants. |
- |
-// Flimflam manager properties. |
-const char kAvailableTechnologiesProperty[] = "AvailableTechnologies"; |
-const char kEnabledTechnologiesProperty[] = "EnabledTechnologies"; |
-const char kConnectedTechnologiesProperty[] = "ConnectedTechnologies"; |
-const char kDefaultTechnologyProperty[] = "DefaultTechnology"; |
-const char kOfflineModeProperty[] = "OfflineMode"; |
-const char kActiveProfileProperty[] = "ActiveProfile"; |
-const char kProfilesProperty[] = "Profiles"; |
-const char kServicesProperty[] = "Services"; |
-const char kServiceWatchListProperty[] = "ServiceWatchList"; |
-const char kDevicesProperty[] = "Devices"; |
-const char kPortalURLProperty[] = "PortalURL"; |
-const char kCheckPortalListProperty[] = "CheckPortalList"; |
- |
-// Flimflam service properties. |
-const char kSecurityProperty[] = "Security"; |
-const char kPassphraseProperty[] = "Passphrase"; |
-const char kIdentityProperty[] = "Identity"; |
-const char kPassphraseRequiredProperty[] = "PassphraseRequired"; |
-const char kSaveCredentialsProperty[] = "SaveCredentials"; |
-const char kSignalStrengthProperty[] = "Strength"; |
-const char kNameProperty[] = "Name"; |
-const char kStateProperty[] = "State"; |
-const char kTypeProperty[] = "Type"; |
-const char kDeviceProperty[] = "Device"; |
-const char kProfileProperty[] = "Profile"; |
-const char kTechnologyFamilyProperty[] = "Cellular.Family"; |
-const char kActivationStateProperty[] = "Cellular.ActivationState"; |
-const char kNetworkTechnologyProperty[] = "Cellular.NetworkTechnology"; |
-const char kRoamingStateProperty[] = "Cellular.RoamingState"; |
-const char kOperatorNameProperty[] = "Cellular.OperatorName"; |
-const char kOperatorCodeProperty[] = "Cellular.OperatorCode"; |
-const char kServingOperatorProperty[] = "Cellular.ServingOperator"; |
-const char kPaymentURLProperty[] = "Cellular.OlpUrl"; |
-const char kUsageURLProperty[] = "Cellular.UsageUrl"; |
-const char kCellularApnProperty[] = "Cellular.APN"; |
-const char kCellularLastGoodApnProperty[] = "Cellular.LastGoodAPN"; |
-const char kCellularApnListProperty[] = "Cellular.APNList"; |
-const char kWifiHexSsid[] = "WiFi.HexSSID"; |
-const char kWifiFrequency[] = "WiFi.Frequency"; |
-const char kWifiHiddenSsid[] = "WiFi.HiddenSSID"; |
-const char kWifiPhyMode[] = "WiFi.PhyMode"; |
-const char kWifiAuthMode[] = "WiFi.AuthMode"; |
-const char kFavoriteProperty[] = "Favorite"; |
-const char kConnectableProperty[] = "Connectable"; |
-const char kPriorityProperty[] = "Priority"; |
-const char kAutoConnectProperty[] = "AutoConnect"; |
-const char kIsActiveProperty[] = "IsActive"; |
-const char kModeProperty[] = "Mode"; |
-const char kErrorProperty[] = "Error"; |
-const char kEntriesProperty[] = "Entries"; |
-const char kProviderProperty[] = "Provider"; |
-const char kHostProperty[] = "Host"; |
-const char kProxyConfigProperty[] = "ProxyConfig"; |
- |
-// Flimflam property names for SIMLock status. |
-const char kSIMLockStatusProperty[] = "Cellular.SIMLockStatus"; |
-const char kSIMLockTypeProperty[] = "LockType"; |
-const char kSIMLockRetriesLeftProperty[] = "RetriesLeft"; |
- |
-// Flimflam property names for Cellular.FoundNetworks. |
-const char kLongNameProperty[] = "long_name"; |
-const char kStatusProperty[] = "status"; |
-const char kShortNameProperty[] = "short_name"; |
-const char kTechnologyProperty[] = "technology"; |
-const char kNetworkIdProperty[] = "network_id"; |
- |
-// Flimflam SIMLock status types. |
-const char kSIMLockPin[] = "sim-pin"; |
-const char kSIMLockPuk[] = "sim-puk"; |
- |
-// APN info property names. |
-const char kApnProperty[] = "apn"; |
-const char kApnNetworkIdProperty[] = "network_id"; |
-const char kApnUsernameProperty[] = "username"; |
-const char kApnPasswordProperty[] = "password"; |
-const char kApnNameProperty[] = "name"; |
-const char kApnLocalizedNameProperty[] = "localized_name"; |
-const char kApnLanguageProperty[] = "language"; |
- |
-// Operator info property names. |
-const char kOperatorNameKey[] = "name"; |
-const char kOperatorCodeKey[] = "code"; |
-const char kOperatorCountryKey[] = "country"; |
- |
-// Flimflam device info property names. |
-const char kScanningProperty[] = "Scanning"; |
-const char kPoweredProperty[] = "Powered"; |
-const char kNetworksProperty[] = "Networks"; |
-const char kCarrierProperty[] = "Cellular.Carrier"; |
-const char kCellularAllowRoamingProperty[] = "Cellular.AllowRoaming"; |
-const char kHomeProviderProperty[] = "Cellular.HomeProvider"; |
-const char kMeidProperty[] = "Cellular.MEID"; |
-const char kImeiProperty[] = "Cellular.IMEI"; |
-const char kImsiProperty[] = "Cellular.IMSI"; |
-const char kEsnProperty[] = "Cellular.ESN"; |
-const char kMdnProperty[] = "Cellular.MDN"; |
-const char kMinProperty[] = "Cellular.MIN"; |
-const char kModelIDProperty[] = "Cellular.ModelID"; |
-const char kManufacturerProperty[] = "Cellular.Manufacturer"; |
-const char kFirmwareRevisionProperty[] = "Cellular.FirmwareRevision"; |
-const char kHardwareRevisionProperty[] = "Cellular.HardwareRevision"; |
-const char kPRLVersionProperty[] = "Cellular.PRLVersion"; // (INT16) |
-const char kSelectedNetworkProperty[] = "Cellular.SelectedNetwork"; |
-const char kSupportNetworkScanProperty[] = "Cellular.SupportNetworkScan"; |
-const char kFoundNetworksProperty[] = "Cellular.FoundNetworks"; |
- |
-// Flimflam ip config property names. |
-const char kAddressProperty[] = "Address"; |
-const char kPrefixlenProperty[] = "Prefixlen"; |
-const char kGatewayProperty[] = "Gateway"; |
-const char kNameServersProperty[] = "NameServers"; |
- |
-// Flimflam type options. |
-const char kTypeEthernet[] = "ethernet"; |
-const char kTypeWifi[] = "wifi"; |
-const char kTypeWimax[] = "wimax"; |
-const char kTypeBluetooth[] = "bluetooth"; |
-const char kTypeCellular[] = "cellular"; |
-const char kTypeVPN[] = "vpn"; |
- |
-// Flimflam mode options. |
-const char kModeManaged[] = "managed"; |
-const char kModeAdhoc[] = "adhoc"; |
- |
-// Flimflam security options. |
-const char kSecurityWpa[] = "wpa"; |
-const char kSecurityWep[] = "wep"; |
-const char kSecurityRsn[] = "rsn"; |
-const char kSecurity8021x[] = "802_1x"; |
-const char kSecurityPsk[] = "psk"; |
-const char kSecurityNone[] = "none"; |
- |
-// Flimflam L2TPIPsec property names. |
-const char kL2TPIPSecCACertNSSProperty[] = "L2TPIPsec.CACertNSS"; |
-const char kL2TPIPSecClientCertIDProperty[] = "L2TPIPsec.ClientCertID"; |
-const char kL2TPIPSecClientCertSlotProp[] = "L2TPIPsec.ClientCertSlot"; |
-const char kL2TPIPSecPINProperty[] = "L2TPIPsec.PIN"; |
-const char kL2TPIPSecPSKProperty[] = "L2TPIPsec.PSK"; |
-const char kL2TPIPSecUserProperty[] = "L2TPIPsec.User"; |
-const char kL2TPIPSecPasswordProperty[] = "L2TPIPsec.Password"; |
- |
-// Flimflam EAP property names. |
-// See src/third_party/flimflam/doc/service-api.txt. |
-const char kEapIdentityProperty[] = "EAP.Identity"; |
-const char kEapMethodProperty[] = "EAP.EAP"; |
-const char kEapPhase2AuthProperty[] = "EAP.InnerEAP"; |
-const char kEapAnonymousIdentityProperty[] = "EAP.AnonymousIdentity"; |
-const char kEapClientCertProperty[] = "EAP.ClientCert"; // path |
-const char kEapCertIDProperty[] = "EAP.CertID"; // PKCS#11 ID |
-const char kEapClientCertNssProperty[] = "EAP.ClientCertNSS"; // NSS nickname |
-const char kEapPrivateKeyProperty[] = "EAP.PrivateKey"; |
-const char kEapPrivateKeyPasswordProperty[] = "EAP.PrivateKeyPassword"; |
-const char kEapKeyIDProperty[] = "EAP.KeyID"; |
-const char kEapCaCertProperty[] = "EAP.CACert"; // server CA cert path |
-const char kEapCaCertIDProperty[] = "EAP.CACertID"; // server CA PKCS#11 ID |
-const char kEapCaCertNssProperty[] = "EAP.CACertNSS"; // server CA NSS nickname |
-const char kEapUseSystemCAsProperty[] = "EAP.UseSystemCAs"; |
-const char kEapPinProperty[] = "EAP.PIN"; |
-const char kEapPasswordProperty[] = "EAP.Password"; |
-const char kEapKeyMgmtProperty[] = "EAP.KeyMgmt"; |
- |
-// Flimflam EAP method options. |
-const char kEapMethodPEAP[] = "PEAP"; |
-const char kEapMethodTLS[] = "TLS"; |
-const char kEapMethodTTLS[] = "TTLS"; |
-const char kEapMethodLEAP[] = "LEAP"; |
- |
-// Flimflam EAP phase 2 auth options. |
-const char kEapPhase2AuthPEAPMD5[] = "auth=MD5"; |
-const char kEapPhase2AuthPEAPMSCHAPV2[] = "auth=MSCHAPV2"; |
-const char kEapPhase2AuthTTLSMD5[] = "autheap=MD5"; |
-const char kEapPhase2AuthTTLSMSCHAPV2[] = "autheap=MSCHAPV2"; |
-const char kEapPhase2AuthTTLSMSCHAP[] = "autheap=MSCHAP"; |
-const char kEapPhase2AuthTTLSPAP[] = "autheap=PAP"; |
-const char kEapPhase2AuthTTLSCHAP[] = "autheap=CHAP"; |
- |
-// Flimflam VPN provider types. |
-const char kProviderL2tpIpsec[] = "l2tpipsec"; |
-const char kProviderOpenVpn[] = "openvpn"; |
- |
- |
-// Flimflam state options. |
-const char kStateIdle[] = "idle"; |
-const char kStateCarrier[] = "carrier"; |
-const char kStateAssociation[] = "association"; |
-const char kStateConfiguration[] = "configuration"; |
-const char kStateReady[] = "ready"; |
-const char kStatePortal[] = "portal"; |
-const char kStateOnline[] = "online"; |
-const char kStateDisconnect[] = "disconnect"; |
-const char kStateFailure[] = "failure"; |
-const char kStateActivationFailure[] = "activation-failure"; |
- |
-// Flimflam network technology options. |
-const char kNetworkTechnology1Xrtt[] = "1xRTT"; |
-const char kNetworkTechnologyEvdo[] = "EVDO"; |
-const char kNetworkTechnologyGprs[] = "GPRS"; |
-const char kNetworkTechnologyEdge[] = "EDGE"; |
-const char kNetworkTechnologyUmts[] = "UMTS"; |
-const char kNetworkTechnologyHspa[] = "HSPA"; |
-const char kNetworkTechnologyHspaPlus[] = "HSPA+"; |
-const char kNetworkTechnologyLte[] = "LTE"; |
-const char kNetworkTechnologyLteAdvanced[] = "LTE Advanced"; |
-const char kNetworkTechnologyGsm[] = "GSM"; |
- |
-// Flimflam roaming state options |
-const char kRoamingStateHome[] = "home"; |
-const char kRoamingStateRoaming[] = "roaming"; |
-const char kRoamingStateUnknown[] = "unknown"; |
- |
-// Flimflam activation state options |
-const char kActivationStateActivated[] = "activated"; |
-const char kActivationStateActivating[] = "activating"; |
-const char kActivationStateNotActivated[] = "not-activated"; |
-const char kActivationStatePartiallyActivated[] = "partially-activated"; |
-const char kActivationStateUnknown[] = "unknown"; |
- |
-// FlimFlam technology family options |
-const char kTechnologyFamilyCdma[] = "CDMA"; |
-const char kTechnologyFamilyGsm[] = "GSM"; |
- |
-// Flimflam error options. |
-const char kErrorOutOfRange[] = "out-of-range"; |
-const char kErrorPinMissing[] = "pin-missing"; |
-const char kErrorDhcpFailed[] = "dhcp-failed"; |
-const char kErrorConnectFailed[] = "connect-failed"; |
-const char kErrorBadPassphrase[] = "bad-passphrase"; |
-const char kErrorBadWEPKey[] = "bad-wepkey"; |
-const char kErrorActivationFailed[] = "activation-failed"; |
-const char kErrorNeedEvdo[] = "need-evdo"; |
-const char kErrorNeedHomeNetwork[] = "need-home-network"; |
-const char kErrorOtaspFailed[] = "otasp-failed"; |
-const char kErrorAaaFailed[] = "aaa-failed"; |
-const char kErrorInternal[] = "internal-error"; |
-const char kErrorDNSLookupFailed[] = "dns-lookup-failed"; |
-const char kErrorHTTPGetFailed[] = "http-get-failed"; |
- |
-// Flimflam error messages. |
-const char kErrorPassphraseRequiredMsg[] = "Passphrase required"; |
-const char kErrorIncorrectPinMsg[] = "org.chromium.flimflam.Error.IncorrectPin"; |
-const char kErrorPinBlockedMsg[] = "org.chromium.flimflam.Error.PinBlocked"; |
-const char kErrorPinRequiredMsg[] = "org.chromium.flimflam.Error.PinRequired"; |
- |
-const char kUnknownString[] = "UNKNOWN"; |
- |
-//////////////////////////////////////////////////////////////////////////// |
- |
-static const char* ConnectionTypeToString(ConnectionType type) { |
- switch (type) { |
- case TYPE_UNKNOWN: |
- break; |
- case TYPE_ETHERNET: |
- return kTypeEthernet; |
- case TYPE_WIFI: |
- return kTypeWifi; |
- case TYPE_WIMAX: |
- return kTypeWimax; |
- case TYPE_BLUETOOTH: |
- return kTypeBluetooth; |
- case TYPE_CELLULAR: |
- return kTypeCellular; |
- case TYPE_VPN: |
- return kTypeVPN; |
- } |
- LOG(ERROR) << "ConnectionTypeToString called with unknown type: " << type; |
- return kUnknownString; |
-} |
- |
-static const char* SecurityToString(ConnectionSecurity security) { |
- switch (security) { |
- case SECURITY_NONE: |
- return kSecurityNone; |
- case SECURITY_WEP: |
- return kSecurityWep; |
- case SECURITY_WPA: |
- return kSecurityWpa; |
- case SECURITY_RSN: |
- return kSecurityRsn; |
- case SECURITY_8021X: |
- return kSecurity8021x; |
- case SECURITY_PSK: |
- return kSecurityPsk; |
- case SECURITY_UNKNOWN: |
- break; |
- } |
- LOG(ERROR) << "SecurityToString called with unknown type: " << security; |
- return kUnknownString; |
-} |
- |
-static const char* ProviderTypeToString(VirtualNetwork::ProviderType type) { |
- switch (type) { |
- case VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_PSK: |
- case VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_USER_CERT: |
- return kProviderL2tpIpsec; |
- case VirtualNetwork::PROVIDER_TYPE_OPEN_VPN: |
- return kProviderOpenVpn; |
- case VirtualNetwork::PROVIDER_TYPE_MAX: |
- break; |
- } |
- LOG(ERROR) << "ProviderTypeToString called with unknown type: " << type; |
- return kUnknownString; |
-} |
- |
-//////////////////////////////////////////////////////////////////////////// |
- |
-// Helper class to cache maps of strings to enums. |
-template <typename Type> |
-class StringToEnum { |
- public: |
- struct Pair { |
- const char* key; |
- const Type value; |
- }; |
- |
- StringToEnum(const Pair* list, size_t num_entries, Type unknown) |
- : unknown_value_(unknown) { |
- for (size_t i = 0; i < num_entries; ++i, ++list) |
- enum_map_[list->key] = list->value; |
- } |
- |
- Type Get(const std::string& type) const { |
- EnumMapConstIter iter = enum_map_.find(type); |
- if (iter != enum_map_.end()) |
- return iter->second; |
- return unknown_value_; |
- } |
- |
- private: |
- typedef typename std::map<std::string, Type> EnumMap; |
- typedef typename std::map<std::string, Type>::const_iterator EnumMapConstIter; |
- EnumMap enum_map_; |
- Type unknown_value_; |
- DISALLOW_COPY_AND_ASSIGN(StringToEnum); |
-}; |
- |
-//////////////////////////////////////////////////////////////////////////// |
- |
-enum PropertyIndex { |
- PROPERTY_INDEX_ACTIVATION_STATE, |
- PROPERTY_INDEX_ACTIVE_PROFILE, |
- PROPERTY_INDEX_AUTO_CONNECT, |
- PROPERTY_INDEX_AVAILABLE_TECHNOLOGIES, |
- PROPERTY_INDEX_CARRIER, |
- PROPERTY_INDEX_CELLULAR_ALLOW_ROAMING, |
- PROPERTY_INDEX_CELLULAR_APN, |
- PROPERTY_INDEX_CELLULAR_APN_LIST, |
- PROPERTY_INDEX_CELLULAR_LAST_GOOD_APN, |
- PROPERTY_INDEX_CHECK_PORTAL_LIST, |
- PROPERTY_INDEX_CONNECTABLE, |
- PROPERTY_INDEX_CONNECTED_TECHNOLOGIES, |
- PROPERTY_INDEX_CONNECTIVITY_STATE, |
- PROPERTY_INDEX_DEFAULT_TECHNOLOGY, |
- PROPERTY_INDEX_DEVICE, |
- PROPERTY_INDEX_DEVICES, |
- PROPERTY_INDEX_EAP_ANONYMOUS_IDENTITY, |
- PROPERTY_INDEX_EAP_CA_CERT, |
- PROPERTY_INDEX_EAP_CA_CERT_ID, |
- PROPERTY_INDEX_EAP_CA_CERT_NSS, |
- PROPERTY_INDEX_EAP_CERT_ID, |
- PROPERTY_INDEX_EAP_CLIENT_CERT, |
- PROPERTY_INDEX_EAP_CLIENT_CERT_NSS, |
- PROPERTY_INDEX_EAP_IDENTITY, |
- PROPERTY_INDEX_EAP_KEY_ID, |
- PROPERTY_INDEX_EAP_KEY_MGMT, |
- PROPERTY_INDEX_EAP_METHOD, |
- PROPERTY_INDEX_EAP_PASSWORD, |
- PROPERTY_INDEX_EAP_PHASE_2_AUTH, |
- PROPERTY_INDEX_EAP_PIN, |
- PROPERTY_INDEX_EAP_PRIVATE_KEY, |
- PROPERTY_INDEX_EAP_PRIVATE_KEY_PASSWORD, |
- PROPERTY_INDEX_EAP_USE_SYSTEM_CAS, |
- PROPERTY_INDEX_ENABLED_TECHNOLOGIES, |
- PROPERTY_INDEX_ERROR, |
- PROPERTY_INDEX_ESN, |
- PROPERTY_INDEX_FAVORITE, |
- PROPERTY_INDEX_FIRMWARE_REVISION, |
- PROPERTY_INDEX_FOUND_NETWORKS, |
- PROPERTY_INDEX_HARDWARE_REVISION, |
- PROPERTY_INDEX_HOME_PROVIDER, |
- PROPERTY_INDEX_HOST, |
- PROPERTY_INDEX_IDENTITY, |
- PROPERTY_INDEX_IMEI, |
- PROPERTY_INDEX_IMSI, |
- PROPERTY_INDEX_IS_ACTIVE, |
- PROPERTY_INDEX_L2TPIPSEC_CA_CERT_NSS, |
- PROPERTY_INDEX_L2TPIPSEC_CLIENT_CERT_ID, |
- PROPERTY_INDEX_L2TPIPSEC_CLIENT_CERT_SLOT, |
- PROPERTY_INDEX_L2TPIPSEC_PASSWORD, |
- PROPERTY_INDEX_L2TPIPSEC_PIN, |
- PROPERTY_INDEX_L2TPIPSEC_PSK, |
- PROPERTY_INDEX_L2TPIPSEC_USER, |
- PROPERTY_INDEX_MANUFACTURER, |
- PROPERTY_INDEX_MDN, |
- PROPERTY_INDEX_MEID, |
- PROPERTY_INDEX_MIN, |
- PROPERTY_INDEX_MODE, |
- PROPERTY_INDEX_MODEL_ID, |
- PROPERTY_INDEX_NAME, |
- PROPERTY_INDEX_NETWORKS, |
- PROPERTY_INDEX_NETWORK_TECHNOLOGY, |
- PROPERTY_INDEX_OFFLINE_MODE, |
- PROPERTY_INDEX_OPERATOR_CODE, |
- PROPERTY_INDEX_OPERATOR_NAME, |
- PROPERTY_INDEX_PASSPHRASE, |
- PROPERTY_INDEX_PASSPHRASE_REQUIRED, |
- PROPERTY_INDEX_PAYMENT_URL, |
- PROPERTY_INDEX_PORTAL_URL, |
- PROPERTY_INDEX_POWERED, |
- PROPERTY_INDEX_PRIORITY, |
- PROPERTY_INDEX_PRL_VERSION, |
- PROPERTY_INDEX_PROFILE, |
- PROPERTY_INDEX_PROFILES, |
- PROPERTY_INDEX_PROVIDER, |
- PROPERTY_INDEX_PROXY_CONFIG, |
- PROPERTY_INDEX_ROAMING_STATE, |
- PROPERTY_INDEX_SAVE_CREDENTIALS, |
- PROPERTY_INDEX_SCANNING, |
- PROPERTY_INDEX_SECURITY, |
- PROPERTY_INDEX_SELECTED_NETWORK, |
- PROPERTY_INDEX_SERVICES, |
- PROPERTY_INDEX_SERVICE_WATCH_LIST, |
- PROPERTY_INDEX_SERVING_OPERATOR, |
- PROPERTY_INDEX_SIGNAL_STRENGTH, |
- PROPERTY_INDEX_SIM_LOCK, |
- PROPERTY_INDEX_STATE, |
- PROPERTY_INDEX_SUPPORT_NETWORK_SCAN, |
- PROPERTY_INDEX_TECHNOLOGY_FAMILY, |
- PROPERTY_INDEX_TYPE, |
- PROPERTY_INDEX_UNKNOWN, |
- PROPERTY_INDEX_USAGE_URL, |
- PROPERTY_INDEX_WIFI_AUTH_MODE, |
- PROPERTY_INDEX_WIFI_FREQUENCY, |
- PROPERTY_INDEX_WIFI_HEX_SSID, |
- PROPERTY_INDEX_WIFI_HIDDEN_SSID, |
- PROPERTY_INDEX_WIFI_PHY_MODE, |
-}; |
- |
-StringToEnum<PropertyIndex>::Pair property_index_table[] = { |
- { kActivationStateProperty, PROPERTY_INDEX_ACTIVATION_STATE }, |
- { kActiveProfileProperty, PROPERTY_INDEX_ACTIVE_PROFILE }, |
- { kAutoConnectProperty, PROPERTY_INDEX_AUTO_CONNECT }, |
- { kAvailableTechnologiesProperty, PROPERTY_INDEX_AVAILABLE_TECHNOLOGIES }, |
- { kCarrierProperty, PROPERTY_INDEX_CARRIER }, |
- { kCellularAllowRoamingProperty, PROPERTY_INDEX_CELLULAR_ALLOW_ROAMING }, |
- { kCellularApnListProperty, PROPERTY_INDEX_CELLULAR_APN_LIST }, |
- { kCellularApnProperty, PROPERTY_INDEX_CELLULAR_APN }, |
- { kCellularLastGoodApnProperty, PROPERTY_INDEX_CELLULAR_LAST_GOOD_APN }, |
- { kCheckPortalListProperty, PROPERTY_INDEX_CHECK_PORTAL_LIST }, |
- { kConnectableProperty, PROPERTY_INDEX_CONNECTABLE }, |
- { kConnectedTechnologiesProperty, PROPERTY_INDEX_CONNECTED_TECHNOLOGIES }, |
- { kDefaultTechnologyProperty, PROPERTY_INDEX_DEFAULT_TECHNOLOGY }, |
- { kDeviceProperty, PROPERTY_INDEX_DEVICE }, |
- { kDevicesProperty, PROPERTY_INDEX_DEVICES }, |
- { kEapAnonymousIdentityProperty, PROPERTY_INDEX_EAP_ANONYMOUS_IDENTITY }, |
- { kEapCaCertIDProperty, PROPERTY_INDEX_EAP_CA_CERT_ID }, |
- { kEapCaCertNssProperty, PROPERTY_INDEX_EAP_CA_CERT_NSS }, |
- { kEapCaCertProperty, PROPERTY_INDEX_EAP_CA_CERT }, |
- { kEapCertIDProperty, PROPERTY_INDEX_EAP_CERT_ID }, |
- { kEapClientCertNssProperty, PROPERTY_INDEX_EAP_CLIENT_CERT_NSS }, |
- { kEapClientCertProperty, PROPERTY_INDEX_EAP_CLIENT_CERT }, |
- { kEapIdentityProperty, PROPERTY_INDEX_EAP_IDENTITY }, |
- { kEapKeyIDProperty, PROPERTY_INDEX_EAP_KEY_ID }, |
- { kEapKeyMgmtProperty, PROPERTY_INDEX_EAP_KEY_MGMT }, |
- { kEapMethodProperty, PROPERTY_INDEX_EAP_METHOD }, |
- { kEapPasswordProperty, PROPERTY_INDEX_EAP_PASSWORD }, |
- { kEapPhase2AuthProperty, PROPERTY_INDEX_EAP_PHASE_2_AUTH }, |
- { kEapPinProperty, PROPERTY_INDEX_EAP_PIN }, |
- { kEapPrivateKeyPasswordProperty, PROPERTY_INDEX_EAP_PRIVATE_KEY_PASSWORD }, |
- { kEapPrivateKeyProperty, PROPERTY_INDEX_EAP_PRIVATE_KEY }, |
- { kEapUseSystemCAsProperty, PROPERTY_INDEX_EAP_USE_SYSTEM_CAS }, |
- { kEnabledTechnologiesProperty, PROPERTY_INDEX_ENABLED_TECHNOLOGIES }, |
- { kErrorProperty, PROPERTY_INDEX_ERROR }, |
- { kEsnProperty, PROPERTY_INDEX_ESN }, |
- { kFavoriteProperty, PROPERTY_INDEX_FAVORITE }, |
- { kFirmwareRevisionProperty, PROPERTY_INDEX_FIRMWARE_REVISION }, |
- { kFoundNetworksProperty, PROPERTY_INDEX_FOUND_NETWORKS }, |
- { kHardwareRevisionProperty, PROPERTY_INDEX_HARDWARE_REVISION }, |
- { kHomeProviderProperty, PROPERTY_INDEX_HOME_PROVIDER }, |
- { kHostProperty, PROPERTY_INDEX_HOST }, |
- { kIdentityProperty, PROPERTY_INDEX_IDENTITY }, |
- { kImeiProperty, PROPERTY_INDEX_IMEI }, |
- { kImsiProperty, PROPERTY_INDEX_IMSI }, |
- { kIsActiveProperty, PROPERTY_INDEX_IS_ACTIVE }, |
- { kL2TPIPSecCACertNSSProperty, PROPERTY_INDEX_L2TPIPSEC_CA_CERT_NSS }, |
- { kL2TPIPSecClientCertIDProperty, PROPERTY_INDEX_L2TPIPSEC_CLIENT_CERT_ID }, |
- { kL2TPIPSecClientCertSlotProp, PROPERTY_INDEX_L2TPIPSEC_CLIENT_CERT_SLOT }, |
- { kL2TPIPSecPasswordProperty, PROPERTY_INDEX_L2TPIPSEC_PASSWORD }, |
- { kL2TPIPSecPINProperty, PROPERTY_INDEX_L2TPIPSEC_PIN }, |
- { kL2TPIPSecPSKProperty, PROPERTY_INDEX_L2TPIPSEC_PSK }, |
- { kL2TPIPSecUserProperty, PROPERTY_INDEX_L2TPIPSEC_USER }, |
- { kManufacturerProperty, PROPERTY_INDEX_MANUFACTURER }, |
- { kMdnProperty, PROPERTY_INDEX_MDN }, |
- { kMeidProperty, PROPERTY_INDEX_MEID }, |
- { kMinProperty, PROPERTY_INDEX_MIN }, |
- { kModeProperty, PROPERTY_INDEX_MODE }, |
- { kModelIDProperty, PROPERTY_INDEX_MODEL_ID }, |
- { kNameProperty, PROPERTY_INDEX_NAME }, |
- { kNetworkTechnologyProperty, PROPERTY_INDEX_NETWORK_TECHNOLOGY }, |
- { kNetworksProperty, PROPERTY_INDEX_NETWORKS }, |
- { kOfflineModeProperty, PROPERTY_INDEX_OFFLINE_MODE }, |
- { kOperatorCodeProperty, PROPERTY_INDEX_OPERATOR_CODE }, |
- { kOperatorNameProperty, PROPERTY_INDEX_OPERATOR_NAME }, |
- { kPRLVersionProperty, PROPERTY_INDEX_PRL_VERSION }, |
- { kPassphraseProperty, PROPERTY_INDEX_PASSPHRASE }, |
- { kPassphraseRequiredProperty, PROPERTY_INDEX_PASSPHRASE_REQUIRED }, |
- { kPaymentURLProperty, PROPERTY_INDEX_PAYMENT_URL }, |
- { kPortalURLProperty, PROPERTY_INDEX_PORTAL_URL }, |
- { kPoweredProperty, PROPERTY_INDEX_POWERED }, |
- { kPriorityProperty, PROPERTY_INDEX_PRIORITY }, |
- { kProfileProperty, PROPERTY_INDEX_PROFILE }, |
- { kProfilesProperty, PROPERTY_INDEX_PROFILES }, |
- { kProviderProperty, PROPERTY_INDEX_PROVIDER }, |
- { kProxyConfigProperty, PROPERTY_INDEX_PROXY_CONFIG }, |
- { kRoamingStateProperty, PROPERTY_INDEX_ROAMING_STATE }, |
- { kSIMLockStatusProperty, PROPERTY_INDEX_SIM_LOCK }, |
- { kSaveCredentialsProperty, PROPERTY_INDEX_SAVE_CREDENTIALS }, |
- { kScanningProperty, PROPERTY_INDEX_SCANNING }, |
- { kSecurityProperty, PROPERTY_INDEX_SECURITY }, |
- { kSelectedNetworkProperty, PROPERTY_INDEX_SELECTED_NETWORK }, |
- { kServiceWatchListProperty, PROPERTY_INDEX_SERVICE_WATCH_LIST }, |
- { kServicesProperty, PROPERTY_INDEX_SERVICES }, |
- { kServingOperatorProperty, PROPERTY_INDEX_SERVING_OPERATOR }, |
- { kSignalStrengthProperty, PROPERTY_INDEX_SIGNAL_STRENGTH }, |
- { kStateProperty, PROPERTY_INDEX_STATE }, |
- { kSupportNetworkScanProperty, PROPERTY_INDEX_SUPPORT_NETWORK_SCAN }, |
- { kTechnologyFamilyProperty, PROPERTY_INDEX_TECHNOLOGY_FAMILY }, |
- { kTypeProperty, PROPERTY_INDEX_TYPE }, |
- { kUsageURLProperty, PROPERTY_INDEX_USAGE_URL }, |
- { kWifiAuthMode, PROPERTY_INDEX_WIFI_AUTH_MODE }, |
- { kWifiFrequency, PROPERTY_INDEX_WIFI_FREQUENCY }, |
- { kWifiHexSsid, PROPERTY_INDEX_WIFI_HEX_SSID }, |
- { kWifiHiddenSsid, PROPERTY_INDEX_WIFI_HIDDEN_SSID }, |
- { kWifiPhyMode, PROPERTY_INDEX_WIFI_PHY_MODE }, |
-}; |
- |
-StringToEnum<PropertyIndex>& property_index_parser() { |
- static StringToEnum<PropertyIndex> parser(property_index_table, |
- arraysize(property_index_table), |
- PROPERTY_INDEX_UNKNOWN); |
- return parser; |
-} |
- |
-//////////////////////////////////////////////////////////////////////////// |
-// Parse strings from libcros. |
- |
-// Network. |
-static ConnectionType ParseType(const std::string& type) { |
- static StringToEnum<ConnectionType>::Pair table[] = { |
- { kTypeEthernet, TYPE_ETHERNET }, |
- { kTypeWifi, TYPE_WIFI }, |
- { kTypeWimax, TYPE_WIMAX }, |
- { kTypeBluetooth, TYPE_BLUETOOTH }, |
- { kTypeCellular, TYPE_CELLULAR }, |
- { kTypeVPN, TYPE_VPN }, |
- }; |
- static StringToEnum<ConnectionType> parser( |
- table, arraysize(table), TYPE_UNKNOWN); |
- return parser.Get(type); |
-} |
- |
-ConnectionType ParseTypeFromDictionary(const DictionaryValue* info) { |
- std::string type_string; |
- info->GetString(kTypeProperty, &type_string); |
- return ParseType(type_string); |
-} |
- |
-static ConnectionMode ParseMode(const std::string& mode) { |
- static StringToEnum<ConnectionMode>::Pair table[] = { |
- { kModeManaged, MODE_MANAGED }, |
- { kModeAdhoc, MODE_ADHOC }, |
- }; |
- static StringToEnum<ConnectionMode> parser( |
- table, arraysize(table), MODE_UNKNOWN); |
- return parser.Get(mode); |
-} |
- |
-static ConnectionState ParseState(const std::string& state) { |
- static StringToEnum<ConnectionState>::Pair table[] = { |
- { kStateIdle, STATE_IDLE }, |
- { kStateCarrier, STATE_CARRIER }, |
- { kStateAssociation, STATE_ASSOCIATION }, |
- { kStateConfiguration, STATE_CONFIGURATION }, |
- { kStateReady, STATE_READY }, |
- { kStateDisconnect, STATE_DISCONNECT }, |
- { kStateFailure, STATE_FAILURE }, |
- { kStateActivationFailure, STATE_ACTIVATION_FAILURE }, |
- { kStatePortal, STATE_PORTAL }, |
- { kStateOnline, STATE_ONLINE }, |
- }; |
- static StringToEnum<ConnectionState> parser( |
- table, arraysize(table), STATE_UNKNOWN); |
- return parser.Get(state); |
-} |
- |
-static ConnectionError ParseError(const std::string& error) { |
- static StringToEnum<ConnectionError>::Pair table[] = { |
- { kErrorOutOfRange, ERROR_OUT_OF_RANGE }, |
- { kErrorPinMissing, ERROR_PIN_MISSING }, |
- { kErrorDhcpFailed, ERROR_DHCP_FAILED }, |
- { kErrorConnectFailed, ERROR_CONNECT_FAILED }, |
- { kErrorBadPassphrase, ERROR_BAD_PASSPHRASE }, |
- { kErrorBadWEPKey, ERROR_BAD_WEPKEY }, |
- { kErrorActivationFailed, ERROR_ACTIVATION_FAILED }, |
- { kErrorNeedEvdo, ERROR_NEED_EVDO }, |
- { kErrorNeedHomeNetwork, ERROR_NEED_HOME_NETWORK }, |
- { kErrorOtaspFailed, ERROR_OTASP_FAILED }, |
- { kErrorAaaFailed, ERROR_AAA_FAILED }, |
- { kErrorInternal, ERROR_INTERNAL }, |
- { kErrorDNSLookupFailed, ERROR_DNS_LOOKUP_FAILED }, |
- { kErrorHTTPGetFailed, ERROR_HTTP_GET_FAILED }, |
- }; |
- static StringToEnum<ConnectionError> parser( |
- table, arraysize(table), ERROR_NO_ERROR); |
- return parser.Get(error); |
-} |
- |
-// VirtualNetwork |
-static VirtualNetwork::ProviderType ParseProviderType(const std::string& mode) { |
- static StringToEnum<VirtualNetwork::ProviderType>::Pair table[] = { |
- { kProviderL2tpIpsec, VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_PSK }, |
- { kProviderOpenVpn, VirtualNetwork::PROVIDER_TYPE_OPEN_VPN }, |
- }; |
- static StringToEnum<VirtualNetwork::ProviderType> parser( |
- table, arraysize(table), VirtualNetwork::PROVIDER_TYPE_MAX); |
- return parser.Get(mode); |
-} |
- |
-// CellularNetwork. |
-static ActivationState ParseActivationState(const std::string& state) { |
- static StringToEnum<ActivationState>::Pair table[] = { |
- { kActivationStateActivated, ACTIVATION_STATE_ACTIVATED }, |
- { kActivationStateActivating, ACTIVATION_STATE_ACTIVATING }, |
- { kActivationStateNotActivated, ACTIVATION_STATE_NOT_ACTIVATED }, |
- { kActivationStatePartiallyActivated, ACTIVATION_STATE_PARTIALLY_ACTIVATED}, |
- { kActivationStateUnknown, ACTIVATION_STATE_UNKNOWN}, |
- }; |
- static StringToEnum<ActivationState> parser( |
- table, arraysize(table), ACTIVATION_STATE_UNKNOWN); |
- return parser.Get(state); |
-} |
- |
-static NetworkTechnology ParseNetworkTechnology(const std::string& technology) { |
- static StringToEnum<NetworkTechnology>::Pair table[] = { |
- { kNetworkTechnology1Xrtt, NETWORK_TECHNOLOGY_1XRTT }, |
- { kNetworkTechnologyEvdo, NETWORK_TECHNOLOGY_EVDO }, |
- { kNetworkTechnologyGprs, NETWORK_TECHNOLOGY_GPRS }, |
- { kNetworkTechnologyEdge, NETWORK_TECHNOLOGY_EDGE }, |
- { kNetworkTechnologyUmts, NETWORK_TECHNOLOGY_UMTS }, |
- { kNetworkTechnologyHspa, NETWORK_TECHNOLOGY_HSPA }, |
- { kNetworkTechnologyHspaPlus, NETWORK_TECHNOLOGY_HSPA_PLUS }, |
- { kNetworkTechnologyLte, NETWORK_TECHNOLOGY_LTE }, |
- { kNetworkTechnologyLteAdvanced, NETWORK_TECHNOLOGY_LTE_ADVANCED }, |
- { kNetworkTechnologyGsm, NETWORK_TECHNOLOGY_GSM }, |
- }; |
- static StringToEnum<NetworkTechnology> parser( |
- table, arraysize(table), NETWORK_TECHNOLOGY_UNKNOWN); |
- return parser.Get(technology); |
-} |
- |
-static SIMLockState ParseSimLockState(const std::string& state) { |
- static StringToEnum<SIMLockState>::Pair table[] = { |
- { "", SIM_UNLOCKED }, |
- { kSIMLockPin, SIM_LOCKED_PIN }, |
- { kSIMLockPuk, SIM_LOCKED_PUK }, |
- }; |
- static StringToEnum<SIMLockState> parser( |
- table, arraysize(table), SIM_UNKNOWN); |
- SIMLockState parsed_state = parser.Get(state); |
- DCHECK_NE(parsed_state, SIM_UNKNOWN) << "Unknown SIMLock state encountered"; |
- return parsed_state; |
-} |
- |
-static bool ParseSimLockStateFromDictionary(const DictionaryValue* info, |
- SIMLockState* out_state, |
- int* out_retries) { |
- std::string state_string; |
- if (!info->GetString(kSIMLockTypeProperty, &state_string) || |
- !info->GetInteger(kSIMLockRetriesLeftProperty, out_retries)) { |
- LOG(ERROR) << "Error parsing SIMLock state"; |
- return false; |
- } |
- *out_state = ParseSimLockState(state_string); |
- return true; |
-} |
- |
-static bool 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(Value::TYPE_DICTIONARY)) { |
- found_networks_->resize(found_networks_->size() + 1); |
- const DictionaryValue* dict = static_cast<const DictionaryValue*>(*it); |
- dict->GetStringWithoutPathExpansion( |
- kStatusProperty, &found_networks_->back().status); |
- dict->GetStringWithoutPathExpansion( |
- kNetworkIdProperty, &found_networks_->back().network_id); |
- dict->GetStringWithoutPathExpansion( |
- kShortNameProperty, &found_networks_->back().short_name); |
- dict->GetStringWithoutPathExpansion( |
- kLongNameProperty, &found_networks_->back().long_name); |
- dict->GetStringWithoutPathExpansion( |
- kTechnologyProperty, &found_networks_->back().technology); |
- } else { |
- return false; |
- } |
- } |
- return true; |
-} |
- |
-static bool 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(Value::TYPE_DICTIONARY)) { |
- apn_list->resize(apn_list->size() + 1); |
- apn_list->back().Set(*static_cast<const DictionaryValue*>(*it)); |
- } else { |
- return false; |
- } |
- } |
- return true; |
-} |
- |
-static NetworkRoamingState ParseRoamingState(const std::string& roaming_state) { |
- static StringToEnum<NetworkRoamingState>::Pair table[] = { |
- { kRoamingStateHome, ROAMING_STATE_HOME }, |
- { kRoamingStateRoaming, ROAMING_STATE_ROAMING }, |
- { kRoamingStateUnknown, ROAMING_STATE_UNKNOWN }, |
- }; |
- static StringToEnum<NetworkRoamingState> parser( |
- table, arraysize(table), ROAMING_STATE_UNKNOWN); |
- return parser.Get(roaming_state); |
-} |
- |
-// WifiNetwork |
-static ConnectionSecurity ParseSecurity(const std::string& security) { |
- static StringToEnum<ConnectionSecurity>::Pair table[] = { |
- { kSecurityNone, SECURITY_NONE }, |
- { kSecurityWep, SECURITY_WEP }, |
- { kSecurityWpa, SECURITY_WPA }, |
- { kSecurityRsn, SECURITY_RSN }, |
- { kSecurityPsk, SECURITY_PSK }, |
- { kSecurity8021x, SECURITY_8021X }, |
- }; |
- static StringToEnum<ConnectionSecurity> parser( |
- table, arraysize(table), SECURITY_UNKNOWN); |
- return parser.Get(security); |
-} |
- |
-static EAPMethod ParseEAPMethod(const std::string& method) { |
- static StringToEnum<EAPMethod>::Pair table[] = { |
- { kEapMethodPEAP, EAP_METHOD_PEAP }, |
- { kEapMethodTLS, EAP_METHOD_TLS }, |
- { kEapMethodTTLS, EAP_METHOD_TTLS }, |
- { kEapMethodLEAP, EAP_METHOD_LEAP }, |
- }; |
- static StringToEnum<EAPMethod> parser( |
- table, arraysize(table), EAP_METHOD_UNKNOWN); |
- return parser.Get(method); |
-} |
- |
-static EAPPhase2Auth ParseEAPPhase2Auth(const std::string& auth) { |
- static StringToEnum<EAPPhase2Auth>::Pair table[] = { |
- { kEapPhase2AuthPEAPMD5, EAP_PHASE_2_AUTH_MD5 }, |
- { kEapPhase2AuthPEAPMSCHAPV2, EAP_PHASE_2_AUTH_MSCHAPV2 }, |
- { kEapPhase2AuthTTLSMD5, EAP_PHASE_2_AUTH_MD5 }, |
- { kEapPhase2AuthTTLSMSCHAPV2, EAP_PHASE_2_AUTH_MSCHAPV2 }, |
- { kEapPhase2AuthTTLSMSCHAP, EAP_PHASE_2_AUTH_MSCHAP }, |
- { kEapPhase2AuthTTLSPAP, EAP_PHASE_2_AUTH_PAP }, |
- { kEapPhase2AuthTTLSCHAP, EAP_PHASE_2_AUTH_CHAP }, |
- }; |
- static StringToEnum<EAPPhase2Auth> parser( |
- table, arraysize(table), EAP_PHASE_2_AUTH_AUTO); |
- return parser.Get(auth); |
-} |
- |
-// NetworkDevice |
-static TechnologyFamily ParseTechnologyFamily(const std::string& family) { |
- static StringToEnum<TechnologyFamily>::Pair table[] = { |
- { kTechnologyFamilyCdma, TECHNOLOGY_FAMILY_CDMA }, |
- { kTechnologyFamilyGsm, TECHNOLOGY_FAMILY_GSM }, |
- }; |
- static StringToEnum<TechnologyFamily> parser( |
- table, arraysize(table), TECHNOLOGY_FAMILY_UNKNOWN); |
- return parser.Get(family); |
-} |
- |
//////////////////////////////////////////////////////////////////////////////// |
// Misc. |
@@ -968,158 +163,33 @@ NetworkDevice::NetworkDevice(const std::string& device_path) |
sim_lock_state_(SIM_UNKNOWN), |
sim_retries_left_(kDefaultSimUnlockRetriesCount), |
sim_pin_required_(SIM_PIN_REQUIRE_UNKNOWN), |
- PRL_version_(0), |
+ prl_version_(0), |
data_roaming_allowed_(false), |
- support_network_scan_(false) { |
+ support_network_scan_(false), |
+ device_parser_(new NativeNetworkDeviceParser) { |
} |
NetworkDevice::~NetworkDevice() {} |
-bool NetworkDevice::ParseValue(int index, const Value* value) { |
- switch (index) { |
- case PROPERTY_INDEX_TYPE: { |
- std::string type_string; |
- if (value->GetAsString(&type_string)) { |
- type_ = ParseType(type_string); |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_NAME: |
- return value->GetAsString(&name_); |
- case PROPERTY_INDEX_CARRIER: |
- return value->GetAsString(&carrier_); |
- case PROPERTY_INDEX_SCANNING: |
- return value->GetAsBoolean(&scanning_); |
- case PROPERTY_INDEX_CELLULAR_ALLOW_ROAMING: |
- return value->GetAsBoolean(&data_roaming_allowed_); |
- case PROPERTY_INDEX_CELLULAR_APN_LIST: |
- if (value->IsType(Value::TYPE_LIST)) { |
- return ParseApnList(static_cast<const ListValue*>(value), |
- &provider_apn_list_); |
- } |
- break; |
- case PROPERTY_INDEX_NETWORKS: |
- if (value->IsType(Value::TYPE_LIST)) { |
- // Ignored. |
- return true; |
- } |
- break; |
- case PROPERTY_INDEX_FOUND_NETWORKS: |
- if (value->IsType(Value::TYPE_LIST)) { |
- return ParseFoundNetworksFromList( |
- static_cast<const ListValue*>(value), |
- &found_cellular_networks_); |
- } |
- break; |
- case PROPERTY_INDEX_HOME_PROVIDER: { |
- if (value->IsType(Value::TYPE_DICTIONARY)) { |
- const DictionaryValue* dict = |
- static_cast<const DictionaryValue*>(value); |
- home_provider_code_.clear(); |
- home_provider_country_.clear(); |
- home_provider_name_.clear(); |
- dict->GetStringWithoutPathExpansion(kOperatorCodeKey, |
- &home_provider_code_); |
- dict->GetStringWithoutPathExpansion(kOperatorCountryKey, |
- &home_provider_country_); |
- dict->GetStringWithoutPathExpansion(kOperatorNameKey, |
- &home_provider_name_); |
- if (!home_provider_name_.empty() && !home_provider_country_.empty()) { |
- home_provider_id_ = base::StringPrintf( |
- kCarrierIdFormat, |
- home_provider_name_.c_str(), |
- home_provider_country_.c_str()); |
- } else { |
- home_provider_id_ = home_provider_code_; |
- LOG(WARNING) << "Carrier ID not defined, using code instead: " |
- << home_provider_id_; |
- } |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_MEID: |
- return value->GetAsString(&MEID_); |
- case PROPERTY_INDEX_IMEI: |
- return value->GetAsString(&IMEI_); |
- case PROPERTY_INDEX_IMSI: |
- return value->GetAsString(&IMSI_); |
- case PROPERTY_INDEX_ESN: |
- return value->GetAsString(&ESN_); |
- case PROPERTY_INDEX_MDN: |
- return value->GetAsString(&MDN_); |
- case PROPERTY_INDEX_MIN: |
- return value->GetAsString(&MIN_); |
- case PROPERTY_INDEX_MODEL_ID: |
- return value->GetAsString(&model_id_); |
- case PROPERTY_INDEX_MANUFACTURER: |
- return value->GetAsString(&manufacturer_); |
- case PROPERTY_INDEX_SIM_LOCK: |
- if (value->IsType(Value::TYPE_DICTIONARY)) { |
- bool result = ParseSimLockStateFromDictionary( |
- static_cast<const DictionaryValue*>(value), |
- &sim_lock_state_, |
- &sim_retries_left_); |
- // Initialize PinRequired value only once. |
- // See SIMPinRequire enum comments. |
- if (sim_pin_required_ == SIM_PIN_REQUIRE_UNKNOWN) { |
- if (sim_lock_state_ == SIM_UNLOCKED) { |
- sim_pin_required_ = SIM_PIN_NOT_REQUIRED; |
- } else if (sim_lock_state_ == SIM_LOCKED_PIN || |
- sim_lock_state_ == SIM_LOCKED_PUK) { |
- sim_pin_required_ = SIM_PIN_REQUIRED; |
- } |
- } |
- return result; |
- } |
- break; |
- case PROPERTY_INDEX_FIRMWARE_REVISION: |
- return value->GetAsString(&firmware_revision_); |
- case PROPERTY_INDEX_HARDWARE_REVISION: |
- return value->GetAsString(&hardware_revision_); |
- case PROPERTY_INDEX_POWERED: |
- // we don't care about the value, just the fact that it changed |
- return true; |
- case PROPERTY_INDEX_PRL_VERSION: |
- return value->GetAsInteger(&PRL_version_); |
- case PROPERTY_INDEX_SELECTED_NETWORK: |
- return value->GetAsString(&selected_cellular_network_); |
- case PROPERTY_INDEX_SUPPORT_NETWORK_SCAN: |
- return value->GetAsBoolean(&support_network_scan_); |
- case PROPERTY_INDEX_TECHNOLOGY_FAMILY: { |
- std::string technology_family_string; |
- if (value->GetAsString(&technology_family_string)) { |
- technology_family_ = ParseTechnologyFamily(technology_family_string); |
- return true; |
- } |
- break; |
- } |
- default: |
- break; |
- } |
- return false; |
+void NetworkDevice::ParseInfo(const DictionaryValue& info) { |
+ if (device_parser_.get()) |
+ device_parser_->UpdateDeviceFromInfo(info, this); |
} |
-void NetworkDevice::ParseInfo(const DictionaryValue* info) { |
- for (DictionaryValue::key_iterator iter = info->begin_keys(); |
- iter != info->end_keys(); ++iter) { |
- const std::string& key = *iter; |
- Value* value; |
- bool res = info->GetWithoutPathExpansion(key, &value); |
- DCHECK(res); |
- if (res) { |
- int index = property_index_parser().Get(key); |
- if (!ParseValue(index, value)) |
- VLOG(1) << "NetworkDevice: Unhandled key: " << key; |
- } |
- } |
+bool NetworkDevice::UpdateStatus(const std::string& key, |
+ const Value& value, |
+ PropertyIndex* index) { |
+ if (device_parser_.get()) |
+ return device_parser_->UpdateStatus(key, value, this, index); |
+ return false; |
} |
//////////////////////////////////////////////////////////////////////////////// |
// Network |
-Network::Network(const std::string& service_path, ConnectionType type) |
+Network::Network(const std::string& service_path, |
+ ConnectionType type, |
+ NativeNetworkParser* parser) |
: state_(STATE_UNKNOWN), |
error_(ERROR_NO_ERROR), |
connectable_(true), |
@@ -1132,7 +202,8 @@ Network::Network(const std::string& service_path, ConnectionType type) |
notify_failure_(false), |
profile_type_(PROFILE_NONE), |
service_path_(service_path), |
- type_(type) { |
+ type_(type), |
+ network_parser_(parser) { |
} |
Network::~Network() {} |
@@ -1161,96 +232,9 @@ void Network::SetName(const std::string& name) { |
set_name(name_utf8); |
} |
-bool Network::ParseValue(int index, const Value* value) { |
- switch (index) { |
- case PROPERTY_INDEX_TYPE: { |
- std::string type_string; |
- if (value->GetAsString(&type_string)) { |
- ConnectionType type = ParseType(type_string); |
- LOG_IF(ERROR, type != type_) |
- << "Network with mismatched type: " << service_path_ |
- << " " << type << " != " << type_; |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_DEVICE: |
- return value->GetAsString(&device_path_); |
- case PROPERTY_INDEX_NAME: { |
- std::string name; |
- if (value->GetAsString(&name)) { |
- SetName(name); |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_PROFILE: |
- // Note: currently this is only provided for non remembered networks. |
- return value->GetAsString(&profile_path_); |
- case PROPERTY_INDEX_STATE: { |
- std::string state_string; |
- if (value->GetAsString(&state_string)) { |
- SetState(ParseState(state_string)); |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_MODE: { |
- std::string mode_string; |
- if (value->GetAsString(&mode_string)) { |
- mode_ = ParseMode(mode_string); |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_ERROR: { |
- std::string error_string; |
- if (value->GetAsString(&error_string)) { |
- error_ = ParseError(error_string); |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_CONNECTABLE: |
- return value->GetAsBoolean(&connectable_); |
- case PROPERTY_INDEX_IS_ACTIVE: |
- return value->GetAsBoolean(&is_active_); |
- case PROPERTY_INDEX_FAVORITE: |
- // Not used currently. |
- return true; |
- case PROPERTY_INDEX_PRIORITY: |
- return value->GetAsInteger(&priority_); |
- case PROPERTY_INDEX_AUTO_CONNECT: |
- return value->GetAsBoolean(&auto_connect_); |
- case PROPERTY_INDEX_SAVE_CREDENTIALS: |
- return value->GetAsBoolean(&save_credentials_); |
- case PROPERTY_INDEX_PROXY_CONFIG: |
- return value->GetAsString(&proxy_config_); |
- default: |
- break; |
- } |
- return false; |
-} |
- |
-void Network::ParseInfo(const DictionaryValue* info) { |
- // Set default values for properties that may not exist in the dictionary. |
- priority_ = kPriorityNotSet; |
- |
- for (DictionaryValue::key_iterator iter = info->begin_keys(); |
- iter != info->end_keys(); ++iter) { |
- const std::string& key = *iter; |
- Value* value; |
- bool res = info->GetWithoutPathExpansion(key, &value); |
- DCHECK(res); |
- if (res) { |
- int index = property_index_parser().Get(key); |
- if (!ParseValue(index, value)) // virtual. |
- VLOG(1) << "Network: " << name() |
- << " Type: " << ConnectionTypeToString(type()) |
- << " Unhandled key: " << key; |
- } |
- } |
- CalculateUniqueId(); |
+void Network::ParseInfo(const DictionaryValue& info) { |
+ if (network_parser_.get()) |
+ network_parser_->UpdateNetworkFromInfo(info, this); |
} |
void Network::EraseCredentials() { |
@@ -1436,91 +420,31 @@ void Network::InitIPAddress() { |
} |
} |
+bool Network::UpdateStatus(const std::string& key, |
+ const Value& value, |
+ PropertyIndex* index) { |
+ if (network_parser_.get()) |
+ return network_parser_->UpdateStatus(key, value, this, index); |
+ return false; |
+} |
+ |
+//////////////////////////////////////////////////////////////////////////////// |
+// EthernetNetwork |
+ |
+EthernetNetwork::EthernetNetwork(const std::string& service_path) |
+ : Network(service_path, TYPE_ETHERNET, new NativeEthernetNetworkParser) { |
+} |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// VirtualNetwork |
VirtualNetwork::VirtualNetwork(const std::string& service_path) |
- : Network(service_path, TYPE_VPN), |
+ : Network(service_path, TYPE_VPN, new NativeVirtualNetworkParser), |
provider_type_(PROVIDER_TYPE_L2TP_IPSEC_PSK) { |
} |
VirtualNetwork::~VirtualNetwork() {} |
-bool VirtualNetwork::ParseProviderValue(int index, const Value* value) { |
- switch (index) { |
- case PROPERTY_INDEX_HOST: |
- return value->GetAsString(&server_hostname_); |
- case PROPERTY_INDEX_NAME: |
- // Note: shadows Network::name_ property. |
- return value->GetAsString(&name_); |
- case PROPERTY_INDEX_TYPE: { |
- std::string provider_type_string; |
- if (value->GetAsString(&provider_type_string)) { |
- provider_type_ = ParseProviderType(provider_type_string); |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_L2TPIPSEC_CA_CERT_NSS: |
- return value->GetAsString(&ca_cert_nss_); |
- case PROPERTY_INDEX_L2TPIPSEC_PIN: |
- // Ignore PIN property. |
- return true; |
- case PROPERTY_INDEX_L2TPIPSEC_PSK: |
- return value->GetAsString(&psk_passphrase_); |
- case PROPERTY_INDEX_L2TPIPSEC_CLIENT_CERT_ID: |
- return value->GetAsString(&client_cert_id_); |
- case PROPERTY_INDEX_L2TPIPSEC_CLIENT_CERT_SLOT: |
- // Ignore ClientCertSlot property. |
- return true; |
- case PROPERTY_INDEX_L2TPIPSEC_USER: |
- return value->GetAsString(&username_); |
- case PROPERTY_INDEX_L2TPIPSEC_PASSWORD: |
- return value->GetAsString(&user_passphrase_); |
- default: |
- break; |
- } |
- return false; |
-} |
- |
-bool VirtualNetwork::ParseValue(int index, const Value* value) { |
- switch (index) { |
- case PROPERTY_INDEX_PROVIDER: { |
- DCHECK_EQ(value->GetType(), Value::TYPE_DICTIONARY); |
- const DictionaryValue* dict = static_cast<const DictionaryValue*>(value); |
- for (DictionaryValue::key_iterator iter = dict->begin_keys(); |
- iter != dict->end_keys(); ++iter) { |
- const std::string& key = *iter; |
- Value* v; |
- bool res = dict->GetWithoutPathExpansion(key, &v); |
- DCHECK(res); |
- if (res) { |
- int index = property_index_parser().Get(key); |
- if (!ParseProviderValue(index, v)) |
- VLOG(1) << name() << ": Provider unhandled key: " << key |
- << " Type: " << v->GetType(); |
- } |
- } |
- return true; |
- } |
- default: |
- return Network::ParseValue(index, value); |
- break; |
- } |
- return false; |
-} |
- |
-void VirtualNetwork::ParseInfo(const DictionaryValue* info) { |
- Network::ParseInfo(info); |
- VLOG(1) << "VPN: " << name() |
- << " Server: " << server_hostname() |
- << " Type: " << ProviderTypeToString(provider_type()); |
- if (provider_type_ == PROVIDER_TYPE_L2TP_IPSEC_PSK) { |
- if (!client_cert_id_.empty()) |
- provider_type_ = PROVIDER_TYPE_L2TP_IPSEC_USER_CERT; |
- } |
-} |
- |
void VirtualNetwork::EraseCredentials() { |
WipeString(&ca_cert_nss_); |
WipeString(&psk_passphrase_); |
@@ -1530,7 +454,7 @@ void VirtualNetwork::EraseCredentials() { |
void VirtualNetwork::CalculateUniqueId() { |
std::string provider_type(ProviderTypeToString(provider_type_)); |
- unique_id_ = provider_type + "|" + server_hostname_; |
+ set_unique_id(provider_type + "|" + server_hostname_); |
} |
bool VirtualNetwork::RequiresUserProfile() const { |
@@ -1595,47 +519,36 @@ std::string VirtualNetwork::GetProviderTypeString() const { |
} |
void VirtualNetwork::SetCACertNSS(const std::string& ca_cert_nss) { |
- SetStringProperty(kL2TPIPSecCACertNSSProperty, ca_cert_nss, &ca_cert_nss_); |
+ SetStringProperty(kL2tpIpsecCaCertNssProperty, ca_cert_nss, &ca_cert_nss_); |
} |
void VirtualNetwork::SetPSKPassphrase(const std::string& psk_passphrase) { |
- SetStringProperty(kL2TPIPSecPSKProperty, psk_passphrase, |
+ SetStringProperty(kL2tpIpsecPskProperty, psk_passphrase, |
&psk_passphrase_); |
} |
void VirtualNetwork::SetClientCertID(const std::string& cert_id) { |
- SetStringProperty(kL2TPIPSecClientCertIDProperty, cert_id, &client_cert_id_); |
+ SetStringProperty(kL2tpIpsecClientCertIdProperty, cert_id, &client_cert_id_); |
} |
void VirtualNetwork::SetUsername(const std::string& username) { |
- SetStringProperty(kL2TPIPSecUserProperty, username, &username_); |
+ SetStringProperty(kL2tpIpsecUserProperty, username, &username_); |
} |
void VirtualNetwork::SetUserPassphrase(const std::string& user_passphrase) { |
- SetStringProperty(kL2TPIPSecPasswordProperty, user_passphrase, |
+ SetStringProperty(kL2tpIpsecPasswordProperty, user_passphrase, |
&user_passphrase_); |
} |
void VirtualNetwork::SetCertificateSlotAndPin( |
const std::string& slot, const std::string& pin) { |
- SetOrClearStringProperty(kL2TPIPSecClientCertSlotProp, slot, NULL); |
- SetOrClearStringProperty(kL2TPIPSecPINProperty, pin, NULL); |
+ SetOrClearStringProperty(kL2tpIpsecClientCertSlotProp, slot, NULL); |
+ SetOrClearStringProperty(kL2tpIpsecPinProperty, pin, NULL); |
} |
//////////////////////////////////////////////////////////////////////////////// |
// WirelessNetwork |
-bool WirelessNetwork::ParseValue(int index, const Value* value) { |
- switch (index) { |
- case PROPERTY_INDEX_SIGNAL_STRENGTH: |
- return value->GetAsInteger(&strength_); |
- default: |
- return Network::ParseValue(index, value); |
- break; |
- } |
- return false; |
-} |
- |
//////////////////////////////////////////////////////////////////////////////// |
// CellularDataPlan |
@@ -1883,7 +796,8 @@ void CellularApn::Set(const DictionaryValue& dict) { |
// CellularNetwork |
CellularNetwork::CellularNetwork(const std::string& service_path) |
- : WirelessNetwork(service_path, TYPE_CELLULAR), |
+ : WirelessNetwork(service_path, TYPE_CELLULAR, |
+ new NativeCellularNetworkParser), |
activation_state_(ACTIVATION_STATE_UNKNOWN), |
network_technology_(NETWORK_TECHNOLOGY_UNKNOWN), |
roaming_state_(ROAMING_STATE_UNKNOWN), |
@@ -1893,90 +807,6 @@ CellularNetwork::CellularNetwork(const std::string& service_path) |
CellularNetwork::~CellularNetwork() { |
} |
-bool CellularNetwork::ParseValue(int index, const Value* value) { |
- switch (index) { |
- case PROPERTY_INDEX_ACTIVATION_STATE: { |
- std::string activation_state_string; |
- if (value->GetAsString(&activation_state_string)) { |
- ActivationState prev_state = activation_state_; |
- activation_state_ = ParseActivationState(activation_state_string); |
- if (activation_state_ != prev_state) |
- RefreshDataPlansIfNeeded(); |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_CELLULAR_APN: { |
- if (value->IsType(Value::TYPE_DICTIONARY)) { |
- apn_.Set(*static_cast<const DictionaryValue*>(value)); |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_CELLULAR_LAST_GOOD_APN: { |
- if (value->IsType(Value::TYPE_DICTIONARY)) { |
- last_good_apn_.Set(*static_cast<const DictionaryValue*>(value)); |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_NETWORK_TECHNOLOGY: { |
- std::string network_technology_string; |
- if (value->GetAsString(&network_technology_string)) { |
- 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)) { |
- roaming_state_ = ParseRoamingState(roaming_state_string); |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_OPERATOR_NAME: |
- return value->GetAsString(&operator_name_); |
- case PROPERTY_INDEX_OPERATOR_CODE: |
- return value->GetAsString(&operator_code_); |
- case PROPERTY_INDEX_SERVING_OPERATOR: { |
- if (value->IsType(Value::TYPE_DICTIONARY)) { |
- const DictionaryValue* dict = |
- static_cast<const DictionaryValue*>(value); |
- operator_code_.clear(); |
- operator_country_.clear(); |
- operator_name_.clear(); |
- dict->GetStringWithoutPathExpansion(kOperatorNameKey, |
- &operator_name_); |
- dict->GetStringWithoutPathExpansion(kOperatorCodeKey, |
- &operator_code_); |
- dict->GetStringWithoutPathExpansion(kOperatorCountryKey, |
- &operator_country_); |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_PAYMENT_URL: |
- return value->GetAsString(&payment_url_); |
- case PROPERTY_INDEX_USAGE_URL: |
- return value->GetAsString(&usage_url_); |
- case PROPERTY_INDEX_STATE: { |
- // Save previous state before calling WirelessNetwork::ParseValue. |
- ConnectionState prev_state = state_; |
- if (WirelessNetwork::ParseValue(index, value)) { |
- if (state_ != prev_state) |
- RefreshDataPlansIfNeeded(); |
- return true; |
- } |
- break; |
- } |
- default: |
- return WirelessNetwork::ParseValue(index, value); |
- } |
- return false; |
-} |
- |
bool CellularNetwork::StartActivation() const { |
if (!EnsureCrosLoaded()) |
return false; |
@@ -2105,7 +935,7 @@ std::string CellularNetwork::GetRoamingStateString() const { |
// WifiNetwork |
WifiNetwork::WifiNetwork(const std::string& service_path) |
- : WirelessNetwork(service_path, TYPE_WIFI), |
+ : WirelessNetwork(service_path, TYPE_WIFI, new NativeWifiNetworkParser), |
encryption_(SECURITY_NONE), |
passphrase_required_(false), |
eap_method_(EAP_METHOD_UNKNOWN), |
@@ -2122,7 +952,7 @@ void WifiNetwork::CalculateUniqueId() { |
if (encryption == SECURITY_WPA || encryption == SECURITY_RSN) |
encryption = SECURITY_PSK; |
std::string security = std::string(SecurityToString(encryption)); |
- unique_id_ = security + "|" + name_; |
+ set_unique_id(security + "|" + name()); |
} |
bool WifiNetwork::SetSsid(const std::string& ssid) { |
@@ -2157,97 +987,6 @@ bool WifiNetwork::SetHexSsid(const std::string& ssid_hex) { |
return SetSsid(std::string(ssid_raw.begin(), ssid_raw.end())); |
} |
-bool WifiNetwork::ParseValue(int index, const Value* value) { |
- switch (index) { |
- case PROPERTY_INDEX_WIFI_HEX_SSID: { |
- std::string ssid_hex; |
- if (!value->GetAsString(&ssid_hex)) |
- return false; |
- |
- SetHexSsid(ssid_hex); |
- return true; |
- } |
- case PROPERTY_INDEX_WIFI_AUTH_MODE: |
- case PROPERTY_INDEX_WIFI_PHY_MODE: |
- case PROPERTY_INDEX_WIFI_HIDDEN_SSID: |
- case PROPERTY_INDEX_WIFI_FREQUENCY: |
- // These properties are currently not used in the UI. |
- return true; |
- case PROPERTY_INDEX_NAME: { |
- // Does not change network name when it was already set by WiFi.HexSSID. |
- if (!name().empty()) |
- return true; |
- else |
- return WirelessNetwork::ParseValue(index, value); |
- } |
- case PROPERTY_INDEX_SECURITY: { |
- std::string security_string; |
- if (value->GetAsString(&security_string)) { |
- encryption_ = ParseSecurity(security_string); |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_PASSPHRASE: { |
- std::string passphrase; |
- if (value->GetAsString(&passphrase)) { |
- // Only store the passphrase if we are the owner. |
- // TODO(stevenjb): Remove this when chromium-os:12948 is resolved. |
- if (chromeos::UserManager::Get()->current_user_is_owner()) |
- passphrase_ = passphrase; |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_PASSPHRASE_REQUIRED: |
- return value->GetAsBoolean(&passphrase_required_); |
- case PROPERTY_INDEX_IDENTITY: |
- return value->GetAsString(&identity_); |
- case PROPERTY_INDEX_EAP_IDENTITY: |
- return value->GetAsString(&eap_identity_); |
- case PROPERTY_INDEX_EAP_METHOD: { |
- std::string method; |
- if (value->GetAsString(&method)) { |
- eap_method_ = ParseEAPMethod(method); |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_EAP_PHASE_2_AUTH: { |
- std::string auth; |
- if (value->GetAsString(&auth)) { |
- eap_phase_2_auth_ = ParseEAPPhase2Auth(auth); |
- return true; |
- } |
- break; |
- } |
- case PROPERTY_INDEX_EAP_ANONYMOUS_IDENTITY: |
- return value->GetAsString(&eap_anonymous_identity_); |
- case PROPERTY_INDEX_EAP_CERT_ID: |
- return value->GetAsString(&eap_client_cert_pkcs11_id_); |
- case PROPERTY_INDEX_EAP_CA_CERT_NSS: |
- return value->GetAsString(&eap_server_ca_cert_nss_nickname_); |
- case PROPERTY_INDEX_EAP_USE_SYSTEM_CAS: |
- return value->GetAsBoolean(&eap_use_system_cas_); |
- case PROPERTY_INDEX_EAP_PASSWORD: |
- return value->GetAsString(&eap_passphrase_); |
- 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: |
- 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 WirelessNetwork::ParseValue(index, value); |
- } |
- return false; |
-} |
- |
const std::string& WifiNetwork::GetPassphrase() const { |
if (!user_passphrase_.empty()) |
return user_passphrase_; |
@@ -2288,16 +1027,16 @@ void WifiNetwork::SetEAPMethod(EAPMethod method) { |
eap_method_ = method; |
switch (method) { |
case EAP_METHOD_PEAP: |
- SetStringProperty(kEapMethodProperty, kEapMethodPEAP, NULL); |
+ SetStringProperty(kEapMethodProperty, kEapMethodPeap, NULL); |
break; |
case EAP_METHOD_TLS: |
- SetStringProperty(kEapMethodProperty, kEapMethodTLS, NULL); |
+ SetStringProperty(kEapMethodProperty, kEapMethodTls, NULL); |
break; |
case EAP_METHOD_TTLS: |
- SetStringProperty(kEapMethodProperty, kEapMethodTTLS, NULL); |
+ SetStringProperty(kEapMethodProperty, kEapMethodTtls, NULL); |
break; |
case EAP_METHOD_LEAP: |
- SetStringProperty(kEapMethodProperty, kEapMethodLEAP, NULL); |
+ SetStringProperty(kEapMethodProperty, kEapMethodLeap, NULL); |
break; |
default: |
ClearProperty(kEapMethodProperty); |
@@ -2314,24 +1053,24 @@ void WifiNetwork::SetEAPPhase2Auth(EAPPhase2Auth auth) { |
break; |
case EAP_PHASE_2_AUTH_MD5: |
SetStringProperty(kEapPhase2AuthProperty, |
- is_peap ? kEapPhase2AuthPEAPMD5 |
- : kEapPhase2AuthTTLSMD5, |
+ is_peap ? kEapPhase2AuthPeapMd5 |
+ : kEapPhase2AuthTtlsMd5, |
NULL); |
break; |
case EAP_PHASE_2_AUTH_MSCHAPV2: |
SetStringProperty(kEapPhase2AuthProperty, |
- is_peap ? kEapPhase2AuthPEAPMSCHAPV2 |
- : kEapPhase2AuthTTLSMSCHAPV2, |
+ is_peap ? kEapPhase2AuthPeapMschap2 |
+ : kEapPhase2AuthTtlsMschapV2, |
NULL); |
break; |
case EAP_PHASE_2_AUTH_MSCHAP: |
- SetStringProperty(kEapPhase2AuthProperty, kEapPhase2AuthTTLSMSCHAP, NULL); |
+ SetStringProperty(kEapPhase2AuthProperty, kEapPhase2AuthTtlsMschap, NULL); |
break; |
case EAP_PHASE_2_AUTH_PAP: |
- SetStringProperty(kEapPhase2AuthProperty, kEapPhase2AuthTTLSPAP, NULL); |
+ SetStringProperty(kEapPhase2AuthProperty, kEapPhase2AuthTtlsPap, NULL); |
break; |
case EAP_PHASE_2_AUTH_CHAP: |
- SetStringProperty(kEapPhase2AuthProperty, kEapPhase2AuthTTLSCHAP, NULL); |
+ SetStringProperty(kEapPhase2AuthProperty, kEapPhase2AuthTtlsChap, NULL); |
break; |
} |
} |
@@ -2345,15 +1084,15 @@ void WifiNetwork::SetEAPServerCaCertNssNickname( |
void WifiNetwork::SetEAPClientCertPkcs11Id(const std::string& pkcs11_id) { |
VLOG(1) << "SetEAPClientCertPkcs11Id " << pkcs11_id; |
- SetOrClearStringProperty(kEapCertIDProperty, pkcs11_id, |
+ SetOrClearStringProperty(kEapCertIdProperty, pkcs11_id, |
&eap_client_cert_pkcs11_id_); |
// flimflam requires both CertID and KeyID for TLS connections, despite |
// the fact that by convention they are the same ID. |
- SetOrClearStringProperty(kEapKeyIDProperty, pkcs11_id, NULL); |
+ SetOrClearStringProperty(kEapKeyIdProperty, pkcs11_id, NULL); |
} |
void WifiNetwork::SetEAPUseSystemCAs(bool use_system_cas) { |
- SetBooleanProperty(kEapUseSystemCAsProperty, use_system_cas, |
+ SetBooleanProperty(kEapUseSystemCasProperty, use_system_cas, |
&eap_use_system_cas_); |
} |
@@ -2411,11 +1150,11 @@ std::string WifiNetwork::GetEncryptionString() const { |
bool WifiNetwork::IsPassphraseRequired() const { |
// TODO(stevenjb): Remove error_ tests when fixed in flimflam |
// (http://crosbug.com/10135). |
- if (error_ == ERROR_BAD_PASSPHRASE || error_ == ERROR_BAD_WEPKEY) |
+ if (error() == ERROR_BAD_PASSPHRASE || error() == ERROR_BAD_WEPKEY) |
return true; |
// For 802.1x networks, configuration is required if connectable is false. |
if (encryption_ == SECURITY_8021X) |
- return !connectable_; |
+ return !connectable(); |
return passphrase_required_; |
} |
@@ -2458,7 +1197,7 @@ class NetworkLibraryImplBase : public NetworkLibrary { |
virtual void CallRequestVirtualNetworkAndConnect( |
const std::string& service_name, |
const std::string& server_hostname, |
- VirtualNetwork::ProviderType provider_type) = 0; |
+ ProviderType provider_type) = 0; |
// Called from NetworkConnectStart. |
// Calls NetworkConnectCompleted when the connection attept completes. |
virtual void CallConnectToNetwork(Network* network) = 0; |
@@ -2759,8 +1498,6 @@ class NetworkLibraryImplBase : public NetworkLibrary { |
void DeleteNetwork(Network* network); |
void AddRememberedNetwork(Network* network); |
void DeleteRememberedNetwork(const std::string& service_path); |
- Network* CreateNewNetwork( |
- ConnectionType type, const std::string& service_path); |
void ClearNetworks(); |
void ClearRememberedNetworks(); |
void DeleteNetworks(); |
@@ -3166,7 +1903,7 @@ NetworkDevice* NetworkLibraryImplBase::FindNetworkDeviceByPath( |
const NetworkDevice* NetworkLibraryImplBase::FindCellularDevice() const { |
for (NetworkDeviceMap::const_iterator iter = device_map_.begin(); |
iter != device_map_.end(); ++iter) { |
- if (iter->second->type() == TYPE_CELLULAR) |
+ if (iter->second && iter->second->type() == TYPE_CELLULAR) |
return iter->second; |
} |
return NULL; |
@@ -3612,7 +2349,7 @@ void NetworkLibraryImplBase::ConnectToVirtualNetworkPSK( |
connect_data_.passphrase = user_passphrase; |
CallRequestVirtualNetworkAndConnect( |
service_name, server_hostname, |
- VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_PSK); |
+ PROVIDER_TYPE_L2TP_IPSEC_PSK); |
} |
// 1. Connect to a virtual network with a user cert. |
@@ -3632,7 +2369,7 @@ void NetworkLibraryImplBase::ConnectToVirtualNetworkCert( |
connect_data_.passphrase = user_passphrase; |
CallRequestVirtualNetworkAndConnect( |
service_name, server_hostname, |
- VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_USER_CERT); |
+ PROVIDER_TYPE_L2TP_IPSEC_USER_CERT); |
} |
// 2. Requests a WiFi Network by SSID and security. |
@@ -3645,7 +2382,7 @@ void NetworkLibraryImplBase::ConnectToVirtualNetworkCert( |
// virtual void CallRequestVirtualNetworkAndConnect( |
// const std::string& service_name, |
// const std::string& server_hostname, |
-// VirtualNetwork::ProviderType provider_type) = 0; |
+// ProviderType provider_type) = 0; |
// 3. Sets network properties stored in ConnectData and calls |
// NetworkConnectStart. |
@@ -3875,7 +2612,7 @@ void NetworkLibraryImplBase::DeleteRememberedNetwork( |
const std::string& service_path) { |
NetworkMap::iterator found = remembered_network_map_.find(service_path); |
if (found == remembered_network_map_.end()) { |
- LOG(WARNING) << "Attempt to delete non-existant remembered network: " |
+ LOG(WARNING) << "Attempt to delete non-existent remembered network: " |
<< service_path; |
return; |
} |
@@ -3929,32 +2666,6 @@ void NetworkLibraryImplBase::DeleteRememberedNetwork( |
delete remembered_network; |
} |
-Network* NetworkLibraryImplBase::CreateNewNetwork( |
- ConnectionType type, const std::string& service_path) { |
- switch (type) { |
- case TYPE_ETHERNET: { |
- EthernetNetwork* ethernet = new EthernetNetwork(service_path); |
- return ethernet; |
- } |
- case TYPE_WIFI: { |
- WifiNetwork* wifi = new WifiNetwork(service_path); |
- return wifi; |
- } |
- case TYPE_CELLULAR: { |
- CellularNetwork* cellular = new CellularNetwork(service_path); |
- return cellular; |
- } |
- case TYPE_VPN: { |
- VirtualNetwork* vpn = new VirtualNetwork(service_path); |
- return vpn; |
- } |
- default: { |
- LOG(WARNING) << "Unknown service type: " << type; |
- return new Network(service_path, type); |
- } |
- } |
-} |
- |
//////////////////////////////////////////////////////////////////////////// |
void NetworkLibraryImplBase::ClearNetworks() { |
@@ -3988,7 +2699,7 @@ void NetworkLibraryImplBase::DeleteRememberedNetworks() { |
void NetworkLibraryImplBase::DeleteDevice(const std::string& device_path) { |
NetworkDeviceMap::iterator found = device_map_.find(device_path); |
if (found == device_map_.end()) { |
- LOG(WARNING) << "Attempt to delete non-existant device: " |
+ LOG(WARNING) << "Attempt to delete non-existent device: " |
<< device_path; |
return; |
} |
@@ -4213,7 +2924,7 @@ class NetworkLibraryImplCros : public NetworkLibraryImplBase { |
virtual void CallRequestVirtualNetworkAndConnect( |
const std::string& service_name, |
const std::string& server_hostname, |
- VirtualNetwork::ProviderType provider_type) OVERRIDE; |
+ ProviderType provider_type) OVERRIDE; |
virtual void CallDeleteRememberedNetwork( |
const std::string& profile_path, |
const std::string& service_path) OVERRIDE; |
@@ -4250,12 +2961,12 @@ class NetworkLibraryImplCros : public NetworkLibraryImplBase { |
static void NetworkStatusChangedHandler( |
void* object, const char* path, const char* key, const Value* value); |
void UpdateNetworkStatus( |
- const char* path, const char* key, const Value* value); |
+ const std::string& path, const std::string& key, const Value& value); |
static void NetworkDevicePropertyChangedHandler( |
void* object, const char* path, const char* key, const Value* value); |
void UpdateNetworkDeviceStatus( |
- const char* path, const char* key, const Value* value); |
+ const std::string& path, const std::string& key, const Value& value); |
static void PinOperationCallback(void* object, |
const char* path, |
@@ -4298,7 +3009,7 @@ class NetworkLibraryImplCros : public NetworkLibraryImplBase { |
private: |
// This processes all Manager update messages. |
void NetworkManagerStatusChanged(const char* key, const Value* value); |
- void ParseNetworkManager(const DictionaryValue* dict); |
+ void ParseNetworkManager(const DictionaryValue& dict); |
void UpdateTechnologies(const ListValue* technologies, int* bitfieldp); |
void UpdateAvailableTechnologies(const ListValue* technologies); |
void UpdateEnabledTechnologies(const ListValue* technologies); |
@@ -4308,19 +3019,19 @@ class NetworkLibraryImplCros : public NetworkLibraryImplBase { |
void UpdateNetworkServiceList(const ListValue* services); |
void UpdateWatchedNetworkServiceList(const ListValue* services); |
Network* ParseNetwork(const std::string& service_path, |
- const DictionaryValue* info); |
+ const DictionaryValue& info); |
void UpdateRememberedNetworks(const ListValue* profiles); |
void RequestRememberedNetworksUpdate(); |
void UpdateRememberedServiceList(const char* profile_path, |
const ListValue* profile_entries); |
Network* ParseRememberedNetwork(const std::string& service_path, |
- const DictionaryValue* info); |
+ const DictionaryValue& info); |
// NetworkDevice list management functions. |
void UpdateNetworkDeviceList(const ListValue* devices); |
void ParseNetworkDevice(const std::string& device_path, |
- const DictionaryValue* info); |
+ const DictionaryValue& info); |
// Empty device observer to ensure that device property updates are received. |
class NetworkLibraryDeviceObserver : public NetworkDeviceObserver { |
@@ -4440,22 +3151,20 @@ void NetworkLibraryImplCros::NetworkStatusChangedHandler( |
NetworkLibraryImplCros* networklib = |
static_cast<NetworkLibraryImplCros*>(object); |
DCHECK(networklib); |
- networklib->UpdateNetworkStatus(path, key, value); |
+ if (key == NULL || value == NULL || path == NULL || object == NULL) |
+ return; |
+ networklib->UpdateNetworkStatus(std::string(path), std::string(key), *value); |
} |
void NetworkLibraryImplCros::UpdateNetworkStatus( |
- const char* path, const char* key, const Value* value) { |
+ const std::string& path, const std::string& key, const Value& value) { |
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- if (key == NULL || value == NULL) |
- return; |
Network* network = FindNetworkByPath(path); |
if (network) { |
VLOG(2) << "UpdateNetworkStatus: " << network->name() << "." << key; |
bool prev_connected = network->connected(); |
- // Note: ParseValue is virtual. |
- int index = property_index_parser().Get(std::string(key)); |
- if (!network->ParseValue(index, value)) { |
- LOG(WARNING) << "UpdateNetworkStatus: Error parsing: " |
+ if (!network->UpdateStatus(key, value, NULL)) { |
+ LOG(WARNING) << "UpdateNetworkStatus: Error updating: " |
<< path << "." << key; |
} |
// If we just connected, this may have been added to remembered list. |
@@ -4473,35 +3182,41 @@ void NetworkLibraryImplCros::NetworkDevicePropertyChangedHandler( |
NetworkLibraryImplCros* networklib = |
static_cast<NetworkLibraryImplCros*>(object); |
DCHECK(networklib); |
- networklib->UpdateNetworkDeviceStatus(path, key, value); |
+ if (key == NULL || value == NULL || path == NULL || object == NULL) |
+ return; |
+ networklib->UpdateNetworkDeviceStatus(std::string(path), |
+ std::string(key), |
+ *value); |
} |
void NetworkLibraryImplCros::UpdateNetworkDeviceStatus( |
- const char* path, const char* key, const Value* value) { |
+ const std::string& path, const std::string& key, const Value& value) { |
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- if (key == NULL || value == NULL) |
- return; |
NetworkDevice* device = FindNetworkDeviceByPath(path); |
if (device) { |
VLOG(2) << "UpdateNetworkDeviceStatus: " << device->name() << "." << key; |
- PropertyIndex index = property_index_parser().Get(std::string(key)); |
- if (!device->ParseValue(index, value)) { |
- VLOG(1) << "UpdateNetworkDeviceStatus: Failed to parse: " |
- << path << "." << key; |
- } else if (index == PROPERTY_INDEX_CELLULAR_ALLOW_ROAMING) { |
- bool settings_value = |
- UserCrosSettingsProvider::cached_data_roaming_enabled(); |
- if (device->data_roaming_allowed() != settings_value) { |
- // Switch back to signed settings value. |
- SetCellularDataRoamingAllowed(settings_value); |
- return; |
+ PropertyIndex index = PROPERTY_INDEX_UNKNOWN; |
+ if (device->UpdateStatus(key, value, &index)) { |
+ if (index == PROPERTY_INDEX_CELLULAR_ALLOW_ROAMING) { |
+ bool settings_value = |
+ UserCrosSettingsProvider::cached_data_roaming_enabled(); |
+ if (device->data_roaming_allowed() != settings_value) { |
+ // Switch back to signed settings value. |
+ SetCellularDataRoamingAllowed(settings_value); |
+ return; |
+ } |
} |
+ } else { |
+ VLOG(1) << "UpdateNetworkDeviceStatus: Failed to update: " |
+ << path << "." << key; |
} |
// Notify only observers on device property change. |
NotifyNetworkDeviceChanged(device, index); |
// If a device's power state changes, new properties may become defined. |
if (index == PROPERTY_INDEX_POWERED) |
- chromeos::RequestNetworkDeviceInfo(path, &NetworkDeviceUpdate, this); |
+ chromeos::RequestNetworkDeviceInfo(path.c_str(), |
+ &NetworkDeviceUpdate, |
+ this); |
} |
} |
@@ -4530,7 +3245,7 @@ void NetworkLibraryImplCros::NetworkConnectCallback( |
} |
NetworkLibraryImplCros* networklib = |
static_cast<NetworkLibraryImplCros*>(object); |
- Network* network = networklib->FindNetworkByPath(service_path); |
+ Network* network = networklib->FindNetworkByPath(std::string(service_path)); |
if (!network) { |
LOG(ERROR) << "No network for path: " << service_path; |
return; |
@@ -4554,7 +3269,7 @@ void NetworkLibraryImplCros::WifiServiceUpdateAndConnect( |
DCHECK_EQ(info->GetType(), Value::TYPE_DICTIONARY); |
const DictionaryValue* dict = static_cast<const DictionaryValue*>(info); |
Network* network = |
- networklib->ParseNetwork(std::string(service_path), dict); |
+ networklib->ParseNetwork(std::string(service_path), *dict); |
DCHECK_EQ(network->type(), TYPE_WIFI); |
networklib->ConnectToWifiNetworkUsingConnectData( |
static_cast<WifiNetwork*>(network)); |
@@ -4582,7 +3297,7 @@ void NetworkLibraryImplCros::VPNServiceUpdateAndConnect( |
DCHECK_EQ(info->GetType(), Value::TYPE_DICTIONARY); |
const DictionaryValue* dict = static_cast<const DictionaryValue*>(info); |
Network* network = |
- networklib->ParseNetwork(std::string(service_path), dict); |
+ networklib->ParseNetwork(std::string(service_path), *dict); |
DCHECK_EQ(network->type(), TYPE_VPN); |
networklib->ConnectToVirtualNetworkUsingConnectData( |
static_cast<VirtualNetwork*>(network)); |
@@ -4594,7 +3309,7 @@ void NetworkLibraryImplCros::VPNServiceUpdateAndConnect( |
void NetworkLibraryImplCros::CallRequestVirtualNetworkAndConnect( |
const std::string& service_name, |
const std::string& server_hostname, |
- VirtualNetwork::ProviderType provider_type) { |
+ ProviderType provider_type) { |
chromeos::RequestVirtualNetwork(service_name.c_str(), |
server_hostname.c_str(), |
ProviderTypeToString(provider_type), |
@@ -4950,7 +3665,7 @@ void NetworkLibraryImplCros::NetworkManagerStatusChanged( |
if (!key) |
return; |
VLOG(1) << "NetworkManagerStatusChanged: KEY=" << key; |
- int index = property_index_parser().Get(std::string(key)); |
+ int index = NativeNetworkParser::property_mapper()->Get(key); |
switch (index) { |
case PROPERTY_INDEX_STATE: |
// Currently we ignore the network manager state. |
@@ -5020,7 +3735,8 @@ void NetworkLibraryImplCros::NetworkManagerStatusChanged( |
} |
case PROPERTY_INDEX_PORTAL_URL: |
case PROPERTY_INDEX_CHECK_PORTAL_LIST: |
- // Currently we ignore PortalURL and CheckPortalList. |
+ case PROPERTY_INDEX_ARP_GATEWAY: |
+ // Currently we ignore PortalURL, CheckPortalList and ArpGateway. |
break; |
default: |
LOG(WARNING) << "Manager: Unhandled key: " << key; |
@@ -5045,20 +3761,20 @@ void NetworkLibraryImplCros::NetworkManagerUpdate( |
VLOG(1) << "Received NetworkManagerUpdate."; |
DCHECK_EQ(info->GetType(), Value::TYPE_DICTIONARY); |
const DictionaryValue* dict = static_cast<const DictionaryValue*>(info); |
- networklib->ParseNetworkManager(dict); |
+ networklib->ParseNetworkManager(*dict); |
} |
-void NetworkLibraryImplCros::ParseNetworkManager(const DictionaryValue* dict) { |
- for (DictionaryValue::key_iterator iter = dict->begin_keys(); |
- iter != dict->end_keys(); ++iter) { |
+void NetworkLibraryImplCros::ParseNetworkManager(const DictionaryValue& dict) { |
+ for (DictionaryValue::key_iterator iter = dict.begin_keys(); |
+ iter != dict.end_keys(); ++iter) { |
const std::string& key = *iter; |
Value* value; |
- bool res = dict->GetWithoutPathExpansion(key, &value); |
+ bool res = dict.GetWithoutPathExpansion(key, &value); |
CHECK(res); |
NetworkManagerStatusChanged(key.c_str(), value); |
} |
// If there is no Profiles entry, request remembered networks here. |
- if (!dict->HasKey(kProfilesProperty)) |
+ if (!dict.HasKey(kProfilesProperty)) |
RequestRememberedNetworksUpdate(); |
} |
@@ -5089,7 +3805,8 @@ void NetworkLibraryImplCros::UpdateTechnologies( |
std::string technology; |
(*iter)->GetAsString(&technology); |
if (!technology.empty()) { |
- ConnectionType type = ParseType(technology); |
+ ConnectionType type = |
+ NativeNetworkParser::ParseConnectionType(technology); |
bitfield |= 1 << type; |
} |
} |
@@ -5175,7 +3892,7 @@ void NetworkLibraryImplCros::UpdateNetworkServiceList( |
network->SetState(STATE_FAILURE); |
AddNetwork(network); |
} else { |
- VLOG(2) << "Deleting non-existant Network: " << network->name() |
+ VLOG(2) << "Deleting non-existent Network: " << network->name() |
<< " State = " << network->GetStateString(); |
DeleteNetwork(network); |
} |
@@ -5215,26 +3932,25 @@ void NetworkLibraryImplCros::NetworkServiceUpdate( |
return; // Network no longer in visible list, ignore. |
DCHECK_EQ(info->GetType(), Value::TYPE_DICTIONARY); |
const DictionaryValue* dict = static_cast<const DictionaryValue*>(info); |
- networklib->ParseNetwork(std::string(service_path), dict); |
+ networklib->ParseNetwork(std::string(service_path), *dict); |
} |
} |
// Called from NetworkServiceUpdate and WifiServiceUpdateAndConnect. |
Network* NetworkLibraryImplCros::ParseNetwork( |
- const std::string& service_path, const DictionaryValue* info) { |
+ const std::string& service_path, const DictionaryValue& info) { |
Network* network = FindNetworkByPath(service_path); |
if (!network) { |
- ConnectionType type = ParseTypeFromDictionary(info); |
- network = CreateNewNetwork(type, service_path); |
+ NativeNetworkParser parser; |
+ network = parser.CreateNetworkFromInfo(service_path, info); |
AddNetwork(network); |
+ } else { |
+ // Erase entry from network_unique_id_map_ in case unique id changes. |
+ if (!network->unique_id().empty()) |
+ network_unique_id_map_.erase(network->unique_id()); |
+ network->network_parser()->UpdateNetworkFromInfo(info, network); |
} |
- // Erase entry from network_unique_id_map_ in case unique id changes. |
- if (!network->unique_id().empty()) |
- network_unique_id_map_.erase(network->unique_id()); |
- |
- network->ParseInfo(info); // virtual. |
- |
if (!network->unique_id().empty()) |
network_unique_id_map_[network->unique_id()] = network; |
@@ -5393,7 +4109,7 @@ void NetworkLibraryImplCros::RememberedNetworkServiceUpdate( |
} else { |
DCHECK_EQ(info->GetType(), Value::TYPE_DICTIONARY); |
const DictionaryValue* dict = static_cast<const DictionaryValue*>(info); |
- networklib->ParseRememberedNetwork(std::string(service_path), dict); |
+ networklib->ParseRememberedNetwork(std::string(service_path), *dict); |
} |
} |
} |
@@ -5401,23 +4117,24 @@ void NetworkLibraryImplCros::RememberedNetworkServiceUpdate( |
// Returns NULL if |service_path| refers to a network that is not a |
// remembered type. Called from RememberedNetworkServiceUpdate. |
Network* NetworkLibraryImplCros::ParseRememberedNetwork( |
- const std::string& service_path, const DictionaryValue* info) { |
+ const std::string& service_path, const DictionaryValue& info) { |
Network* remembered; |
NetworkMap::iterator found = remembered_network_map_.find(service_path); |
if (found != remembered_network_map_.end()) { |
remembered = found->second; |
+ remembered->network_parser()->UpdateNetworkFromInfo(info, remembered); |
} else { |
- ConnectionType type = ParseTypeFromDictionary(info); |
- if (type == TYPE_WIFI || type == TYPE_VPN) { |
- remembered = CreateNewNetwork(type, service_path); |
+ NativeNetworkParser parser; |
+ remembered = parser.CreateNetworkFromInfo(service_path, info); |
+ if (remembered->type() == TYPE_WIFI || remembered->type() == TYPE_VPN) { |
AddRememberedNetwork(remembered); |
} else { |
- VLOG(1) << "Ignoring remembered network: " << service_path |
- << " Type: " << ConnectionTypeToString(type); |
+ LOG(WARNING) << "Ignoring remembered network: " << service_path |
+ << " Type: " << ConnectionTypeToString(remembered->type()); |
+ delete remembered; |
return NULL; |
} |
} |
- remembered->ParseInfo(info); // virtual. |
SetProfileTypeFromPath(remembered); |
@@ -5463,6 +4180,7 @@ void NetworkLibraryImplCros::UpdateNetworkDeviceList(const ListValue* devices) { |
NetworkDeviceMap::iterator found = old_device_map.find(device_path); |
if (found != old_device_map.end()) { |
VLOG(2) << " Adding existing device: " << device_path; |
+ CHECK(found->second) << "Attempted to add NULL device pointer"; |
device_map_[device_path] = found->second; |
old_device_map.erase(found); |
} |
@@ -5493,23 +4211,27 @@ void NetworkLibraryImplCros::NetworkDeviceUpdate( |
} else { |
DCHECK_EQ(info->GetType(), Value::TYPE_DICTIONARY); |
const DictionaryValue* dict = static_cast<const DictionaryValue*>(info); |
- networklib->ParseNetworkDevice(std::string(device_path), dict); |
+ networklib->ParseNetworkDevice(std::string(device_path), *dict); |
} |
} |
} |
-void NetworkLibraryImplCros::ParseNetworkDevice( |
- const std::string& device_path, const DictionaryValue* info) { |
+void NetworkLibraryImplCros::ParseNetworkDevice(const std::string& device_path, |
+ const DictionaryValue& info) { |
NetworkDeviceMap::iterator found = device_map_.find(device_path); |
NetworkDevice* device; |
if (found != device_map_.end()) { |
device = found->second; |
+ device->device_parser()->UpdateDeviceFromInfo(info, device); |
} else { |
- device = new NetworkDevice(device_path); |
+ NativeNetworkDeviceParser parser; |
+ device = parser.CreateDeviceFromInfo(device_path, info); |
VLOG(2) << " Adding device: " << device_path; |
- device_map_[device_path] = device; |
+ if (device) { |
+ device_map_[device_path] = device; |
+ } |
+ CHECK(device) << "Attempted to add NULL device for path: " << device_path; |
} |
- device->ParseInfo(info); |
VLOG(1) << "ParseNetworkDevice:" << device->name(); |
NotifyNetworkManagerChanged(false); // Not forced. |
AddNetworkDeviceObserver(device_path, network_device_observer_.get()); |
@@ -5540,7 +4262,7 @@ class NetworkLibraryImplStub : public NetworkLibraryImplBase { |
virtual void CallRequestVirtualNetworkAndConnect( |
const std::string& service_name, |
const std::string& server_hostname, |
- VirtualNetwork::ProviderType provider_type) OVERRIDE; |
+ ProviderType provider_type) OVERRIDE; |
virtual void CallDeleteRememberedNetwork( |
const std::string& profile_path, |
@@ -5613,9 +4335,8 @@ void NetworkLibraryImplStub::Init() { |
connected_devices_ = devices; |
NetworkDevice* cellular = new NetworkDevice("cellular"); |
- scoped_ptr<Value> cellular_type(Value::CreateStringValue(kTypeCellular)); |
- cellular->ParseValue(PROPERTY_INDEX_TYPE, cellular_type.get()); |
- cellular->IMSI_ = "123456789012345"; |
+ cellular->type_ = TYPE_CELLULAR; |
+ cellular->imsi_ = "123456789012345"; |
device_map_["cellular"] = cellular; |
// Networks |
@@ -5630,7 +4351,7 @@ void NetworkLibraryImplStub::Init() { |
wifi1->set_strength(90); |
wifi1->set_connected(false); |
wifi1->set_connecting(true); |
- wifi1->set_active(true); |
+ wifi1->set_is_active(true); |
wifi1->set_encryption(SECURITY_NONE); |
wifi1->set_profile_type(PROFILE_SHARED); |
AddNetwork(wifi1); |
@@ -5684,7 +4405,7 @@ void NetworkLibraryImplStub::Init() { |
cellular1->set_strength(70); |
cellular1->set_connected(false); |
cellular1->set_connecting(true); |
- cellular1->set_active(true); |
+ cellular1->set_is_active(true); |
cellular1->set_activation_state(ACTIVATION_STATE_ACTIVATED); |
cellular1->set_payment_url(std::string("http://www.google.com")); |
cellular1->set_usage_url(std::string("http://www.google.com")); |
@@ -5722,7 +4443,7 @@ void NetworkLibraryImplStub::Init() { |
VirtualNetwork* vpn1 = new VirtualNetwork("fv1"); |
vpn1->set_name("Fake VPN Provider 1"); |
vpn1->set_server_hostname("vpn1server.fake.com"); |
- vpn1->set_provider_type(VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_PSK); |
+ vpn1->set_provider_type(PROVIDER_TYPE_L2TP_IPSEC_PSK); |
vpn1->set_username("VPN User 1"); |
vpn1->set_connected(false); |
AddNetwork(vpn1); |
@@ -5730,7 +4451,7 @@ void NetworkLibraryImplStub::Init() { |
VirtualNetwork* vpn2 = new VirtualNetwork("fv2"); |
vpn2->set_name("Fake VPN Provider 2"); |
vpn2->set_server_hostname("vpn2server.fake.com"); |
- vpn2->set_provider_type(VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_USER_CERT); |
+ vpn2->set_provider_type(PROVIDER_TYPE_L2TP_IPSEC_USER_CERT); |
vpn2->set_username("VPN User 2"); |
vpn2->set_connected(true); |
AddNetwork(vpn2); |
@@ -5738,7 +4459,7 @@ void NetworkLibraryImplStub::Init() { |
VirtualNetwork* vpn3 = new VirtualNetwork("fv3"); |
vpn3->set_name("Fake VPN Provider 3"); |
vpn3->set_server_hostname("vpn3server.fake.com"); |
- vpn3->set_provider_type(VirtualNetwork::PROVIDER_TYPE_OPEN_VPN); |
+ vpn3->set_provider_type(PROVIDER_TYPE_OPEN_VPN); |
vpn3->set_connected(false); |
AddNetwork(vpn3); |
@@ -5758,7 +4479,7 @@ void NetworkLibraryImplStub::Init() { |
remembered_vpn2->set_name("Fake VPN Provider 2"); |
remembered_vpn2->set_server_hostname("vpn2server.fake.com"); |
remembered_vpn2->set_provider_type( |
- VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_USER_CERT); |
+ PROVIDER_TYPE_L2TP_IPSEC_USER_CERT); |
remembered_vpn2->set_connected(true); |
AddRememberedNetwork(remembered_vpn2); |
@@ -5784,7 +4505,7 @@ void NetworkLibraryImplStub::CallRequestWifiNetworkAndConnect( |
void NetworkLibraryImplStub::CallRequestVirtualNetworkAndConnect( |
const std::string& service_name, |
const std::string& server_hostname, |
- VirtualNetwork::ProviderType provider_type) { |
+ ProviderType provider_type) { |
VirtualNetwork* vpn = new VirtualNetwork(service_name); |
vpn->set_server_hostname(server_hostname); |
vpn->set_provider_type(provider_type); |