Index: chrome/browser/chromeos/cros/network_library.h |
diff --git a/chrome/browser/chromeos/cros/network_library.h b/chrome/browser/chromeos/cros/network_library.h |
deleted file mode 100644 |
index e4ebbb01a0d481f9ec3565a8b787eca3b0daabff..0000000000000000000000000000000000000000 |
--- a/chrome/browser/chromeos/cros/network_library.h |
+++ /dev/null |
@@ -1,1590 +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. |
- |
-#ifndef CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ |
-#define CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ |
- |
-#include <map> |
-#include <string> |
-#include <vector> |
- |
-#include "base/callback.h" |
-#include "base/compiler_specific.h" |
-#include "base/gtest_prod_util.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/memory/singleton.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/observer_list.h" |
-#include "base/timer/timer.h" |
-#include "base/values.h" |
-#include "chrome/browser/chromeos/cros/network_constants.h" |
-#include "chromeos/network/network_ip_config.h" |
-#include "chromeos/network/network_ui_data.h" |
-#include "chromeos/network/network_util.h" |
-#include "chromeos/network/onc/onc_constants.h" |
- |
-namespace chromeos { |
- |
-class CertificatePattern; |
-class EnrollmentDelegate; |
-class NetworkDeviceParser; |
-class NetworkParser; |
- |
-// This is the list of all implementation classes that are allowed |
-// access to the internals of the network library classes. |
-#define NETWORK_LIBRARY_IMPL_FRIENDS \ |
- friend class NetworkLibraryImplBase; \ |
- friend class NetworkLibraryImplCros; \ |
- friend class NetworkLibraryImplStub; |
- |
- |
-// Simple wrapper for property Cellular.FoundNetworks. |
-struct FoundCellularNetwork { |
- FoundCellularNetwork(); |
- ~FoundCellularNetwork(); |
- |
- std::string status; |
- std::string network_id; |
- std::string short_name; |
- std::string long_name; |
- std::string technology; |
-}; |
-typedef std::vector<FoundCellularNetwork> CellularNetworkList; |
- |
-struct CellularApn { |
- std::string apn; |
- std::string network_id; |
- std::string username; |
- std::string password; |
- std::string name; |
- std::string localized_name; |
- std::string language; |
- |
- CellularApn(); |
- CellularApn(const std::string& apn, const std::string& network_id, |
- const std::string& username, const std::string& password); |
- ~CellularApn(); |
- void Set(const base::DictionaryValue& dict); |
-}; |
-typedef std::vector<CellularApn> CellularApnList; |
- |
-// The value of priority if it is not set. |
-const int kPriorityNotSet = 0; |
-// The value of priority if network is preferred. |
-const int kPriorityPreferred = 1; |
- |
-// Contains data related to the shill.Device interface, |
-// e.g. ethernet, wifi, cellular. |
-// TODO(dpolukhin): refactor to make base class and device specific derivatives. |
-class NetworkDevice { |
- public: |
- explicit NetworkDevice(const std::string& device_path); |
- ~NetworkDevice(); |
- |
- NetworkDeviceParser* device_parser() { return device_parser_.get(); } |
- void SetNetworkDeviceParser(NetworkDeviceParser* parser); |
- |
- // Device info. |
- const std::string& device_path() const { return device_path_; } |
- const std::string& name() const { return name_; } |
- const std::string& unique_id() const { return unique_id_; } |
- ConnectionType type() const { return type_; } |
- bool scanning() const { return scanning_; } |
- const std::string& meid() const { return meid_; } |
- const std::string& iccid() const { return iccid_; } |
- const std::string& imei() const { return imei_; } |
- const std::string& imsi() const { return imsi_; } |
- const std::string& esn() const { return esn_; } |
- const std::string& mdn() const { return mdn_; } |
- const std::string& min() const { return min_; } |
- const std::string& model_id() const { return model_id_; } |
- const std::string& manufacturer() const { return manufacturer_; } |
- SimLockState sim_lock_state() const { return sim_lock_state_; } |
- bool is_sim_locked() const { |
- return sim_lock_state_ == SIM_LOCKED_PIN || |
- sim_lock_state_ == SIM_LOCKED_PUK; |
- } |
- // Returns true if GSM modem and SIM as absent, otherwise |
- // returns false: GSM modem and SIM card is present or CDMA modem. |
- bool is_sim_absent() const { |
- return technology_family() == TECHNOLOGY_FAMILY_GSM && |
- !is_sim_locked() && !sim_present_; |
- } |
- int sim_retries_left() const { return sim_retries_left_; } |
- SimPinRequire sim_pin_required() const { return sim_pin_required_; } |
- bool powered() const { return powered_; } |
- const std::string& firmware_revision() const { return firmware_revision_; } |
- const std::string& hardware_revision() const { return hardware_revision_; } |
- const unsigned int prl_version() const { return prl_version_; } |
- const std::string& home_provider_code() const { return home_provider_code_; } |
- const std::string& home_provider_country() const { |
- return home_provider_country_; |
- } |
- const std::string& home_provider_id() const { return home_provider_id_; } |
- const std::string& home_provider_name() const { return home_provider_name_; } |
- const bool provider_requires_roaming() const { |
- return provider_requires_roaming_; |
- } |
- const std::string& selected_cellular_network() const { |
- return selected_cellular_network_; |
- } |
- const CellularNetworkList& found_cellular_networks() const { |
- return found_cellular_networks_; |
- } |
- bool data_roaming_allowed() const { return data_roaming_allowed_; } |
- bool support_network_scan() const { return support_network_scan_; } |
- std::string carrier() const { return carrier_; } |
- base::ListValue* supported_carriers() const { |
- return supported_carriers_.get(); |
- } |
- enum TechnologyFamily technology_family() const { return technology_family_; } |
- const CellularApnList& provider_apn_list() const { |
- return provider_apn_list_; |
- } |
- |
- // Updates the property specified by |key| with the contents of |
- // |value|. Returns false on failure. Upon success, returns the |
- // PropertyIndex that was updated in |index|. |index| may be NULL |
- // if not needed. |
- bool UpdateStatus(const std::string& key, |
- const base::Value& value, |
- PropertyIndex* index); |
- |
- protected: |
- void set_unique_id(const std::string& unique_id) { unique_id_ = unique_id; } |
- |
- private: |
- // This allows NetworkDeviceParser and its subclasses access to |
- // device privates so that they can be reconstituted during parsing. |
- // The parsers only access things through the private set_ functions |
- // so that this class can evolve without having to change all the |
- // parsers. |
- friend class NativeNetworkDeviceParser; |
- |
- // This allows the implementation classes access to privates. |
- NETWORK_LIBRARY_IMPL_FRIENDS; |
- |
- // Use these functions at your peril. They are used by the various |
- // parsers to set state, and really shouldn't be used by anyone |
- // else. |
- void set_device_path(const std::string& device_path) { |
- device_path_ = device_path; |
- } |
- void set_name(const std::string& name) { name_ = name; } |
- void set_type(ConnectionType type) { type_ = type; } |
- void set_scanning(bool scanning) { scanning_ = scanning; } |
- void set_meid(const std::string& meid) { meid_ = meid; } |
- void set_iccid(const std::string& iccid) { iccid_ = iccid; } |
- void set_imei(const std::string& imei) { imei_ = imei; } |
- void set_imsi(const std::string& imsi) { imsi_ = imsi; } |
- void set_esn(const std::string& esn) { esn_ = esn; } |
- void set_mdn(const std::string& mdn) { mdn_ = mdn; } |
- void set_min(const std::string& min) { min_ = min; } |
- void set_technology_family(TechnologyFamily technology_family) { |
- technology_family_ = technology_family; |
- } |
- void set_carrier(const std::string& carrier) { carrier_ = carrier; } |
- void set_supported_carriers(const base::ListValue& supported_carriers) { |
- supported_carriers_.reset(supported_carriers.DeepCopy()); |
- } |
- void set_home_provider_code(const std::string& home_provider_code) { |
- home_provider_code_ = home_provider_code; |
- } |
- void set_home_provider_country(const std::string& home_provider_country) { |
- home_provider_country_ = home_provider_country; |
- } |
- void set_home_provider_id(const std::string& home_provider_id) { |
- home_provider_id_ = home_provider_id; |
- } |
- void set_home_provider_name(const std::string& home_provider_name) { |
- home_provider_name_ = home_provider_name; |
- } |
- void set_provider_requires_roaming(bool provider_requires_roaming) { |
- provider_requires_roaming_ = provider_requires_roaming; |
- } |
- void set_model_id(const std::string& model_id) { model_id_ = model_id; } |
- void set_manufacturer(const std::string& manufacturer) { |
- manufacturer_ = manufacturer; |
- } |
- void set_prl_version(int prl_version) { |
- prl_version_ = prl_version; |
- } |
- void set_sim_lock_state(SimLockState sim_lock_state) { |
- sim_lock_state_ = sim_lock_state; |
- } |
- void set_sim_retries_left(int sim_retries_left) { |
- sim_retries_left_ = sim_retries_left; |
- } |
- void set_sim_pin_required(SimPinRequire sim_pin_required) { |
- sim_pin_required_ = sim_pin_required; |
- } |
- void set_sim_present(bool sim_present) { |
- sim_present_ = sim_present; |
- } |
- void set_powered(bool powered) { |
- powered_ = powered; |
- } |
- void set_firmware_revision(const std::string& firmware_revision) { |
- firmware_revision_ = firmware_revision; |
- } |
- void set_hardware_revision(const std::string& hardware_revision) { |
- hardware_revision_ = hardware_revision; |
- } |
- void set_selected_cellular_network( |
- const std::string& selected_cellular_network) { |
- selected_cellular_network_ = selected_cellular_network; |
- } |
- void set_found_cellular_networks( |
- const CellularNetworkList& found_cellular_networks) { |
- found_cellular_networks_ = found_cellular_networks; |
- } |
- void set_data_roaming_allowed(bool data_roaming_allowed) { |
- data_roaming_allowed_ = data_roaming_allowed; |
- } |
- void set_support_network_scan(bool support_network_scan) { |
- support_network_scan_ = support_network_scan; |
- } |
- void set_provider_apn_list(const CellularApnList& provider_apn_list) { |
- provider_apn_list_ = provider_apn_list; |
- } |
- |
- void ParseInfo(const base::DictionaryValue& info); |
- |
- // General device info. |
- std::string device_path_; |
- std::string name_; |
- std::string unique_id_; |
- ConnectionType type_; |
- bool scanning_; |
- // Cellular specific device info. |
- TechnologyFamily technology_family_; |
- std::string carrier_; |
- scoped_ptr<base::ListValue> supported_carriers_; |
- std::string home_provider_code_; |
- std::string home_provider_country_; |
- std::string home_provider_id_; |
- std::string home_provider_name_; |
- bool provider_requires_roaming_; |
- std::string meid_; |
- std::string imei_; |
- std::string iccid_; |
- std::string imsi_; |
- std::string esn_; |
- std::string mdn_; |
- std::string min_; |
- std::string model_id_; |
- std::string manufacturer_; |
- SimLockState sim_lock_state_; |
- int sim_retries_left_; |
- SimPinRequire sim_pin_required_; |
- bool sim_present_; |
- bool powered_; |
- std::string firmware_revision_; |
- std::string hardware_revision_; |
- int prl_version_; |
- std::string selected_cellular_network_; |
- CellularNetworkList found_cellular_networks_; |
- bool data_roaming_allowed_; |
- bool support_network_scan_; |
- CellularApnList provider_apn_list_; |
- |
- // This is the parser we use to parse messages from the native |
- // network layer. |
- scoped_ptr<NetworkDeviceParser> device_parser_; |
- |
- DISALLOW_COPY_AND_ASSIGN(NetworkDevice); |
-}; |
- |
-// Contains data common to all network service types. |
-class Network { |
- public: |
- virtual ~Network(); |
- |
- // Test API for accessing setters in tests. |
- class TestApi { |
- public: |
- explicit TestApi(Network* network) : network_(network) {} |
- void SetConnected() { |
- network_->set_connected(); |
- } |
- void SetConnecting() { |
- network_->set_connecting(); |
- } |
- void SetDisconnected() { |
- network_->set_disconnected(); |
- } |
- void SetUserConnectState(UserConnectState user_connect_state) { |
- network_->set_user_connect_state(user_connect_state); |
- } |
- |
- private: |
- Network* network_; |
- }; |
- friend class TestApi; |
- |
- const std::string& service_path() const { return service_path_; } |
- const std::string& name() const { return name_; } |
- const std::string& device_path() const { return device_path_; } |
- const std::string& ip_address() const { return ip_address_; } |
- ConnectionType type() const { return type_; } |
- ConnectionState connection_state() const { return state_; } |
- bool connecting() const { return IsConnectingState(state_); } |
- bool configuring() const { return state_ == STATE_CONFIGURATION; } |
- bool connected() const { return IsConnectedState(state_); } |
- bool connecting_or_connected() const { return connecting() || connected(); } |
- // True when a user-initiated connection attempt is in progress |
- bool connection_started() const { |
- return user_connect_state_ == USER_CONNECT_STARTED; |
- } |
- UserConnectState user_connect_state() const { return user_connect_state_; } |
- bool failed() const { return state_ == STATE_FAILURE; } |
- bool disconnected() const { return IsDisconnectedState(state_); } |
- bool online() const { return state_ == STATE_ONLINE; } |
- bool restricted_pool() const { return state_ == STATE_PORTAL; } |
- ConnectionError error() const { return error_; } |
- ConnectionState state() const { return state_; } |
- // Is this network connectable. Currently, this is mainly used by 802.1x |
- // networks to specify that the network is not configured yet. |
- bool connectable() const { return connectable_; } |
- // Is this the active network, i.e, the one through which |
- // network traffic is being routed? A network can be connected, |
- // but not be carrying traffic. |
- bool is_active() const { return is_active_; } |
- bool preferred() const { return priority_ != kPriorityNotSet; } |
- bool auto_connect() const { return auto_connect_; } |
- bool save_credentials() const { return save_credentials_; } |
- |
- bool added() const { return added_; } |
- bool notify_failure() const { return notify_failure_; } |
- const std::string& profile_path() const { return profile_path_; } |
- NetworkProfileType profile_type() const { return profile_type_; } |
- |
- const std::string& unique_id() const { return unique_id_; } |
- int priority_order() const { return priority_order_; } |
- |
- const NetworkUIData& ui_data() const { return ui_data_; } |
- |
- void set_notify_failure(bool state) { notify_failure_ = state; } |
- |
- void SetPreferred(bool preferred); |
- |
- void SetAutoConnect(bool auto_connect); |
- |
- void SetName(const std::string& name); |
- |
- void SetSaveCredentials(bool save_credentials); |
- |
- void ClearUIData(); |
- |
- // This will resolve any automatic configuration that has to occur |
- // (provisioning certificates, etc.) before attempting to connect to the |
- // network. When configuration is complete, calls the closure to finish the |
- // connection or show the config dialog to collect user-supplied info. |
- virtual void AttemptConnection(const base::Closure& connect); |
- |
- // Return a string representation of the state code. |
- std::string GetStateString() const; |
- |
- // Return a string representation of the error code. |
- std::string GetErrorString() const; |
- |
- // Return true if the network must be in the user profile (e.g. has certs). |
- virtual bool RequiresUserProfile() const; |
- |
- // Copy any credentials from a remembered network that are unset in |this|. |
- virtual void CopyCredentialsFromRemembered(Network* remembered); |
- |
- // Static helper functions. |
- static bool IsConnectedState(ConnectionState state) { |
- return (state == STATE_READY || |
- state == STATE_ONLINE || |
- state == STATE_PORTAL); |
- } |
- static bool IsConnectingState(ConnectionState state) { |
- return (state == STATE_CONNECT_REQUESTED || |
- state == STATE_ASSOCIATION || |
- state == STATE_CONFIGURATION || |
- state == STATE_CARRIER); |
- } |
- static bool IsDisconnectedState(ConnectionState state) { |
- return (state == STATE_UNKNOWN || |
- state == STATE_IDLE || |
- state == STATE_DISCONNECT || |
- state == STATE_FAILURE || |
- state == STATE_ACTIVATION_FAILURE); |
- } |
- |
- // Adopts the given enrollment handler to handle any certificate enrollment |
- // URIs encountered during network connection. |
- void SetEnrollmentDelegate(EnrollmentDelegate* delegate); |
- |
- virtual bool UpdateStatus(const std::string& key, |
- const base::Value& value, |
- PropertyIndex* index); |
- |
- // Creates a Network object for the given type for testing. |
- static Network* CreateForTesting(ConnectionType type); |
- |
- protected: |
- Network(const std::string& service_path, |
- ConnectionType type); |
- |
- NetworkParser* network_parser() { return network_parser_.get(); } |
- void SetNetworkParser(NetworkParser* parser); |
- |
- // Set the state and update flags if necessary. |
- void SetState(ConnectionState state); |
- |
- // Set the error state and update notify_failure_ |
- void SetError(ConnectionError error); |
- |
- // Parse name/value pairs from libcros. |
- virtual void ParseInfo(const base::DictionaryValue& info); |
- |
- // Erase cached credentials, used when "Save password" is unchecked. |
- virtual void EraseCredentials(); |
- |
- // Calculate a unique identifier for the network. |
- virtual void CalculateUniqueId(); |
- |
- // Methods to asynchronously set network service properties |
- virtual void SetStringProperty(const char* prop, const std::string& str, |
- std::string* dest); |
- virtual void SetBooleanProperty(const char* prop, bool b, bool* dest); |
- virtual void SetIntegerProperty(const char* prop, int i, int* dest); |
- virtual void SetValueProperty(const char* prop, const base::Value& val); |
- virtual void ClearProperty(const char* prop); |
- |
- // This will clear the property if string is empty. Otherwise, it will set it. |
- virtual void SetOrClearStringProperty(const char* prop, |
- const std::string& str, |
- std::string* dest); |
- |
- void set_unique_id(const std::string& unique_id) { unique_id_ = unique_id; } |
- const CertificatePattern& client_cert_pattern() const { |
- return ui_data_.certificate_pattern(); |
- } |
- |
- ClientCertType client_cert_type() const { |
- return ui_data_.certificate_type(); |
- } |
- |
- EnrollmentDelegate* enrollment_delegate() const { |
- return enrollment_delegate_.get(); |
- } |
- |
- private: |
- // This allows NetworkParser and its subclasses access to device |
- // privates so that they can be reconstituted during parsing. The |
- // parsers only access things through the private set_ functions so |
- // that this class can evolve without having to change all the |
- // parsers. |
- friend class NetworkParser; |
- friend class NativeNetworkParser; |
- friend class NativeVirtualNetworkParser; |
- // We reach directly into the network for testing purposes. |
- friend class MobileActivatorTest; |
- // This allows the implementation classes access to privates. |
- NETWORK_LIBRARY_IMPL_FRIENDS; |
- |
- // Use these functions at your peril. They are used by the various |
- // parsers to set state, and really shouldn't be used by anything else |
- // because they don't do the error checking and sending to the |
- // network layer that the other setters do. |
- void set_device_path(const std::string& device_path) { |
- device_path_ = device_path; |
- } |
- void set_name(const std::string& name) { name_ = name; } |
- void set_connecting(); |
- void set_behind_portal() { |
- state_ = STATE_PORTAL; |
- } |
- void set_connected() { |
- state_ = STATE_ONLINE; |
- } |
- void set_disconnected() { |
- state_ = STATE_IDLE; |
- } |
- void set_connectable(bool connectable) { connectable_ = connectable; } |
- void set_user_connect_state(UserConnectState user_connect_state) { |
- user_connect_state_ = user_connect_state; |
- } |
- void set_is_active(bool is_active) { is_active_ = is_active; } |
- void set_added(bool added) { added_ = added; } |
- void set_auto_connect(bool auto_connect) { auto_connect_ = auto_connect; } |
- void set_save_credentials(bool save_credentials) { |
- save_credentials_ = save_credentials; |
- } |
- void set_profile_path(const std::string& path) { profile_path_ = path; } |
- void set_profile_type(NetworkProfileType type) { profile_type_ = type; } |
- void set_ui_data(const NetworkUIData& ui_data) { |
- ui_data_ = ui_data; |
- } |
- void set_client_cert_pattern(const CertificatePattern& pattern) { |
- ui_data_.set_certificate_pattern(pattern); |
- } |
- void set_client_cert_type(ClientCertType type) { |
- ui_data_.set_certificate_type(type); |
- } |
- |
- // Set the profile path and update the flimflam property. |
- void SetProfilePath(const std::string& profile_path); |
- |
- // Trigger an asynchronous initialization the IP address field. |
- void InitIPAddress(); |
- |
- // Initialize the IP address field. |
- static void InitIPAddressCallback( |
- const std::string& service_path, |
- const NetworkIPConfigVector& ip_configs, |
- const std::string& hardware_address); |
- |
- std::string device_path_; |
- std::string name_; |
- std::string ip_address_; |
- ConnectionState state_; |
- ConnectionError error_; |
- bool connectable_; |
- UserConnectState user_connect_state_; |
- bool is_active_; |
- int priority_; // determines order in network list. |
- bool auto_connect_; |
- bool save_credentials_; // save passphrase and EAP credentials to disk. |
- scoped_ptr<EnrollmentDelegate> enrollment_delegate_; |
- |
- // Unique identifier, set the first time the network is parsed. |
- std::string unique_id_; |
- |
- // Priority value, corresponds to index in list from shill (0 = first) |
- int priority_order_; |
- |
- // Set to true if the UI requested this as a new network. |
- bool added_; |
- |
- // Set to true when a new connection failure occurs; cleared when observers |
- // are notified. |
- bool notify_failure_; |
- |
- // Profile path for networks. |
- std::string profile_path_; |
- |
- // Set to profile type based on profile_path_. |
- NetworkProfileType profile_type_; |
- |
- // These must not be modified after construction. |
- std::string service_path_; |
- ConnectionType type_; |
- |
- // UI-level state that is opaque to the connection manager. The value is |
- // stored in JSON-serialized from in the connection manager. |
- NetworkUIData ui_data_; |
- |
- // This is the parser we use to parse messages from the native |
- // network layer. |
- scoped_ptr<NetworkParser> network_parser_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Network); |
-}; |
- |
-// Class for networks of TYPE_ETHERNET. |
-class EthernetNetwork : public Network { |
- public: |
- explicit EthernetNetwork(const std::string& service_path); |
- private: |
- // This allows the implementation classes access to privates. |
- NETWORK_LIBRARY_IMPL_FRIENDS; |
- |
- DISALLOW_COPY_AND_ASSIGN(EthernetNetwork); |
-}; |
- |
-// Class for networks of TYPE_VPN. |
-class VirtualNetwork : public Network { |
- public: |
- explicit VirtualNetwork(const std::string& service_path); |
- virtual ~VirtualNetwork(); |
- |
- const std::string& server_hostname() const { return server_hostname_; } |
- ProviderType provider_type() const { return provider_type_; } |
- const std::string& ca_cert_pem() const { return ca_cert_pem_; } |
- const std::string& psk_passphrase() const { return psk_passphrase_; } |
- const std::string& client_cert_id() const { return client_cert_id_; } |
- const std::string& username() const { return username_; } |
- const std::string& user_passphrase() const { return user_passphrase_; } |
- const std::string& group_name() const { return group_name_; } |
- |
- // Sets the well-known PKCS#11 slot and PIN for accessing certificates. |
- void SetCertificateSlotAndPin( |
- const std::string& slot, const std::string& pin); |
- |
- // Network overrides. |
- virtual bool RequiresUserProfile() const OVERRIDE; |
- virtual void CopyCredentialsFromRemembered(Network* remembered) OVERRIDE; |
- virtual void AttemptConnection(const base::Closure& connect) OVERRIDE; |
- |
- // Public getters. |
- bool NeedMoreInfoToConnect() const; |
- std::string GetProviderTypeString() const; |
- // Returns true if a PSK passphrase is required to connect. |
- bool IsPSKPassphraseRequired() const; |
- // Returns true if a user passphrase is required to connect. |
- bool IsUserPassphraseRequired() const; |
- |
- // Public setters. |
- void SetCACertPEM(const std::string& ca_cert_pem); |
- void SetL2TPIPsecPSKCredentials(const std::string& psk_passphrase, |
- const std::string& username, |
- const std::string& user_passphrase, |
- const std::string& group_name); |
- void SetL2TPIPsecCertCredentials(const std::string& client_cert_id, |
- const std::string& username, |
- const std::string& user_passphrase, |
- const std::string& group_name); |
- void SetOpenVPNCredentials(const std::string& client_cert_id, |
- const std::string& username, |
- const std::string& user_passphrase, |
- const std::string& otp); |
- void SetServerHostname(const std::string& server_hostname); |
- |
- private: |
- // This allows NetworkParser and its subclasses access to |
- // device privates so that they can be reconstituted during parsing. |
- // The parsers only access things through the private set_ functions |
- // so that this class can evolve without having to change all the |
- // parsers. |
- friend class NativeNetworkParser; |
- friend class NativeVirtualNetworkParser; |
- |
- // This allows the implementation classes access to privates. |
- NETWORK_LIBRARY_IMPL_FRIENDS; |
- |
- // Use these functions at your peril. They are used by the various |
- // parsers to set state, and really shouldn't be used by anything else |
- // because they don't do the error checking and sending to the |
- // network layer that the other setters do. |
- void set_server_hostname(const std::string& server_hostname) { |
- server_hostname_ = server_hostname; |
- } |
- void set_provider_type(ProviderType provider_type) { |
- provider_type_ = provider_type; |
- } |
- void set_ca_cert_pem(const std::string& ca_cert_pem) { |
- ca_cert_pem_ = ca_cert_pem; |
- } |
- void set_psk_passphrase(const std::string& psk_passphrase) { |
- psk_passphrase_ = psk_passphrase; |
- } |
- void set_psk_passphrase_required(bool psk_passphrase_required) { |
- psk_passphrase_required_ = psk_passphrase_required; |
- } |
- void set_client_cert_id(const std::string& client_cert_id) { |
- client_cert_id_ = client_cert_id; |
- } |
- void set_username(const std::string& username) { username_ = username; } |
- void set_user_passphrase(const std::string& user_passphrase) { |
- user_passphrase_ = user_passphrase; |
- } |
- void set_user_passphrase_required(bool user_passphrase_required) { |
- user_passphrase_required_ = user_passphrase_required; |
- } |
- void set_group_name(const std::string& group_name) { |
- group_name_ = group_name; |
- } |
- |
- // Matches the client certificate pattern by checking to see if a certificate |
- // exists that meets the pattern criteria. If it finds one, it sets the |
- // appropriate network property. If not, it passes |connect| to the |
- // EnrollmentDelegate to do something with the enrollment URI (e.g. launch a |
- // dialog) to install the certificate, and then invoke |connect|. If |
- // |allow_enroll| is false, then the enrollment handler will not be invoked in |
- // the case of a missing certificate. |
- void MatchCertificatePattern(bool allow_enroll, const base::Closure& connect); |
- |
- // Network overrides. |
- virtual void EraseCredentials() OVERRIDE; |
- virtual void CalculateUniqueId() OVERRIDE; |
- |
- std::string server_hostname_; |
- ProviderType provider_type_; |
- std::string ca_cert_pem_; |
- std::string psk_passphrase_; |
- bool psk_passphrase_required_; |
- // PKCS#11 ID for client certificate. |
- std::string client_cert_id_; |
- std::string username_; |
- std::string user_passphrase_; |
- bool user_passphrase_required_; |
- std::string group_name_; |
- |
- // Weak pointer factory for wrapping pointers to this network in callbacks. |
- base::WeakPtrFactory<VirtualNetwork> weak_pointer_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(VirtualNetwork); |
-}; |
-typedef std::vector<VirtualNetwork*> VirtualNetworkVector; |
- |
-// Base class for networks of TYPE_WIFI or TYPE_CELLULAR. |
-class WirelessNetwork : public Network { |
- public: |
- // Test API for accessing setters in tests. |
- class TestApi { |
- public: |
- explicit TestApi(WirelessNetwork* network) : network_(network) {} |
- void SetStrength(int strength) { network_->set_strength(strength); } |
- private: |
- WirelessNetwork* network_; |
- }; |
- friend class TestApi; |
- |
- int strength() const { return strength_; } |
- |
- protected: |
- WirelessNetwork(const std::string& service_path, |
- ConnectionType type) |
- : Network(service_path, type), strength_(0) {} |
- |
- private: |
- // This allows NativeWirelessNetworkParser access to device privates |
- // so that they can be reconstituted during parsing. The parsers |
- // only access things through the private set_ functions so that |
- // this class can evolve without having to change all the parsers. |
- friend class NativeWirelessNetworkParser; |
- |
- // This allows the implementation classes access to privates. |
- NETWORK_LIBRARY_IMPL_FRIENDS; |
- |
- // The friend parsers use this. |
- void set_strength(int strength) { strength_ = strength; } |
- |
- int strength_; // 0-100 |
- |
- DISALLOW_COPY_AND_ASSIGN(WirelessNetwork); |
-}; |
- |
-// Class for networks of TYPE_CELLULAR. |
-class CellularNetwork : public WirelessNetwork { |
- public: |
- // Test API for accessing setters in tests. |
- class TestApi { |
- public: |
- explicit TestApi(CellularNetwork* network) : network_(network) {} |
- void SetRoamingState(NetworkRoamingState roaming_state) { |
- network_->set_roaming_state(roaming_state); |
- } |
- private: |
- CellularNetwork* network_; |
- }; |
- friend class TestApi; |
- |
- explicit CellularNetwork(const std::string& service_path); |
- virtual ~CellularNetwork(); |
- |
- // Starts device activation process. Returns false if the device state does |
- // not permit activation. |
- virtual bool StartActivation(); |
- virtual void CompleteActivation(); |
- |
- bool activate_over_non_cellular_network() const { |
- return activate_over_non_cellular_network_; |
- } |
- const ActivationState activation_state() const { return activation_state_; } |
- bool activated() const { |
- return activation_state() == ACTIVATION_STATE_ACTIVATED; |
- } |
- const NetworkTechnology network_technology() const { |
- return network_technology_; |
- } |
- const NetworkRoamingState roaming_state() const { return roaming_state_; } |
- const std::string& operator_name() const { return operator_name_; } |
- const std::string& operator_code() const { return operator_code_; } |
- const std::string& operator_country() const { return operator_country_; } |
- bool out_of_credits() const { return out_of_credits_; } |
- const std::string& payment_url() const { return payment_url_; } |
- const std::string& usage_url() const { return usage_url_; } |
- const std::string& post_data() const { return post_data_; } |
- const bool using_post() const { return using_post_; } |
- const CellularApn& apn() const { return apn_; } |
- const CellularApn& last_good_apn() const { return last_good_apn_; } |
- |
- // Sets the APN to use in establishing data connections. Only |
- // the fields of the APN that are needed for making connections |
- // are passed to shill. The name, localized_name, and language |
- // fields are ignored. |
- void SetApn(const CellularApn& apn); |
- |
- // Returns true if network supports activation. |
- bool SupportsActivation() const; |
- |
- // Returns whether the network needs to be activated. |
- bool NeedsActivation() const; |
- |
- // Return a string representation of network technology. |
- std::string GetNetworkTechnologyString() const; |
- // Return a string representation of activation state. |
- std::string GetActivationStateString() const; |
- // Return a string representation of roaming state. |
- std::string GetRoamingStateString() const; |
- |
- // Return a string representation of |activation_state|. |
- static std::string ActivationStateToString(ActivationState activation_state); |
- |
- private: |
- // This allows NativeCellularNetworkParser access to device privates |
- // so that they can be reconstituted during parsing. The parsers |
- // only access things through the private set_ functions so that |
- // this class can evolve without having to change all the parsers. |
- friend class NativeCellularNetworkParser; |
- // We reach directly into the network for testing purposes. |
- friend class MobileActivatorTest; |
- |
- // This allows the implementation classes access to privates. |
- NETWORK_LIBRARY_IMPL_FRIENDS; |
- |
- // Use these functions at your peril. They are used by the various |
- // parsers to set state, and really shouldn't be used by anything else |
- // because they don't do the error checking and sending to the |
- // network layer that the other setters do. |
- void set_activate_over_non_cellular_network(bool value) { |
- activate_over_non_cellular_network_ = value; |
- } |
- void set_activation_state(ActivationState activation_state) { |
- activation_state_ = activation_state; |
- } |
- void set_network_technology(NetworkTechnology network_technology) { |
- network_technology_ = network_technology; |
- } |
- void set_roaming_state(NetworkRoamingState roaming_state) { |
- roaming_state_ = roaming_state; |
- } |
- void set_operator_name(const std::string& operator_name) { |
- operator_name_ = operator_name; |
- } |
- void set_operator_code(const std::string& operator_code) { |
- operator_code_ = operator_code; |
- } |
- void set_operator_country(const std::string& operator_country) { |
- operator_country_ = operator_country; |
- } |
- void set_out_of_credits(bool out_of_credits) { |
- out_of_credits_ = out_of_credits; |
- } |
- void set_payment_url(const std::string& payment_url) { |
- payment_url_ = payment_url; |
- } |
- void set_post_data(const std::string& post_data) { |
- post_data_ = post_data; |
- } |
- void set_using_post(bool using_post) { |
- using_post_ = using_post; |
- } |
- void set_usage_url(const std::string& usage_url) { usage_url_ = usage_url; } |
- void set_apn(const base::DictionaryValue& apn) { apn_.Set(apn); } |
- void set_last_good_apn(const base::DictionaryValue& last_good_apn) { |
- last_good_apn_.Set(last_good_apn); |
- } |
- |
- bool activate_over_non_cellular_network_; |
- bool out_of_credits_; |
- ActivationState activation_state_; |
- NetworkTechnology network_technology_; |
- NetworkRoamingState roaming_state_; |
- // Carrier Info |
- std::string operator_name_; |
- std::string operator_code_; |
- std::string operator_country_; |
- std::string payment_url_; |
- std::string usage_url_; |
- std::string post_data_; |
- bool using_post_; |
- // Cached values |
- CellularApn apn_; |
- CellularApn last_good_apn_; |
- |
- DISALLOW_COPY_AND_ASSIGN(CellularNetwork); |
-}; |
-typedef std::vector<CellularNetwork*> CellularNetworkVector; |
- |
-// Class for networks of TYPE_WIFI. |
-class WifiNetwork : public WirelessNetwork { |
- public: |
- // Test API for accessing setters in tests. |
- class TestApi { |
- public: |
- explicit TestApi(WifiNetwork* network) : network_(network) {} |
- void SetEncryption(ConnectionSecurity encryption) { |
- network_->set_encryption(encryption); |
- } |
- void SetSsid(const std::string& ssid) { |
- network_->SetSsid(ssid); |
- } |
- void SetHexSsid(const std::string& ssid_hex) { |
- network_->SetHexSsid(ssid_hex); |
- } |
- private: |
- WifiNetwork* network_; |
- }; |
- friend class TestApi; |
- |
- explicit WifiNetwork(const std::string& service_path); |
- virtual ~WifiNetwork(); |
- |
- bool encrypted() const { return encryption_ != SECURITY_NONE; } |
- ConnectionSecurity encryption() const { return encryption_; } |
- const std::string& passphrase() const { return passphrase_; } |
- const std::string& identity() const { return identity_; } |
- bool passphrase_required() const { return passphrase_required_; } |
- bool hidden_ssid() const { return hidden_ssid_; } |
- const std::string& bssid() const { return bssid_; } |
- int frequency() const { return frequency_; } |
- |
- EAPMethod eap_method() const { return eap_method_; } |
- EAPPhase2Auth eap_phase_2_auth() const { return eap_phase_2_auth_; } |
- const std::string& eap_server_ca_cert_pem() const { |
- return eap_server_ca_cert_pem_; } |
- const std::string& eap_client_cert_pkcs11_id() const { |
- return eap_client_cert_pkcs11_id_; } |
- const bool eap_use_system_cas() const { return eap_use_system_cas_; } |
- const std::string& eap_identity() const { return eap_identity_; } |
- const std::string& eap_anonymous_identity() const { |
- return eap_anonymous_identity_; |
- } |
- const std::string& eap_passphrase() const { return eap_passphrase_; } |
- const bool eap_save_credentials() const { return eap_save_credentials_; } |
- |
- const std::string& GetPassphrase() const; |
- |
- // Set property and call SetNetworkServiceProperty: |
- |
- void SetPassphrase(const std::string& passphrase); |
- |
- // 802.1x properties |
- void SetEAPMethod(EAPMethod method); |
- void SetEAPPhase2Auth(EAPPhase2Auth auth); |
- void SetEAPServerCaCertPEM(const std::string& ca_cert_pem); |
- void SetEAPClientCertPkcs11Id(const std::string& pkcs11_id); |
- void SetEAPUseSystemCAs(bool use_system_cas); |
- void SetEAPIdentity(const std::string& identity); |
- void SetEAPAnonymousIdentity(const std::string& identity); |
- void SetEAPPassphrase(const std::string& passphrase); |
- |
- // Sets the well-known PKCS#11 PIN for accessing certificates. |
- void SetCertificatePin(const std::string& pin); |
- |
- // Network overrides. |
- virtual bool RequiresUserProfile() const OVERRIDE; |
- virtual void AttemptConnection(const base::Closure& connect) OVERRIDE; |
- |
- // Return a string representation of the encryption code. |
- // This not translated and should be only used for debugging purposes. |
- std::string GetEncryptionString() const; |
- |
- // Return true if a passphrase or other input is required to connect. |
- bool IsPassphraseRequired() const; |
- |
- protected: |
- // This allows NativeWifiNetworkParser access to device privates so |
- // that they can be reconstituted during parsing. The parsers only |
- // access things through the private set_ functions so that this |
- // class can evolve without having to change all the parsers. |
- friend class NativeWifiNetworkParser; |
- |
- // This allows the implementation classes access to privates. |
- NETWORK_LIBRARY_IMPL_FRIENDS; |
- |
- // Use these functions at your peril. They are used by the various |
- // parsers to set state, and really shouldn't be used by anything else |
- // because they don't do the error checking and sending to the |
- // network layer that the other setters do. |
- |
- bool SetSsid(const std::string& ssid); |
- bool SetHexSsid(const std::string& ssid_hex); |
- |
- void set_encryption(ConnectionSecurity encryption) { |
- encryption_ = encryption; |
- } |
- void set_passphrase(const std::string& passphrase) { |
- passphrase_ = passphrase; |
- user_passphrase_ = passphrase; |
- } |
- void set_passphrase_required(bool passphrase_required) { |
- passphrase_required_ = passphrase_required; |
- } |
- void set_identity(const std::string& identity) { |
- identity_ = identity; |
- } |
- void set_hidden_ssid(bool hidden_ssid) { |
- hidden_ssid_ = hidden_ssid; |
- } |
- void set_bssid(const std::string& bssid) { bssid_ = bssid; } |
- void set_frequency(int frequency) { frequency_ = frequency; } |
- void set_eap_method(EAPMethod eap_method) { eap_method_ = eap_method; } |
- void set_eap_phase_2_auth(EAPPhase2Auth eap_phase_2_auth) { |
- eap_phase_2_auth_ = eap_phase_2_auth; |
- } |
- void set_eap_server_ca_cert_pem(const std::string& eap_server_ca_cert_pem) { |
- eap_server_ca_cert_pem_ = eap_server_ca_cert_pem; |
- } |
- void set_eap_client_cert_pkcs11_id( |
- const std::string& eap_client_cert_pkcs11_id) { |
- eap_client_cert_pkcs11_id_ = eap_client_cert_pkcs11_id; |
- } |
- void set_eap_use_system_cas(bool eap_use_system_cas) { |
- eap_use_system_cas_ = eap_use_system_cas; |
- } |
- void set_eap_identity(const std::string& eap_identity) { |
- eap_identity_ = eap_identity; |
- } |
- void set_eap_anonymous_identity(const std::string& eap_anonymous_identity) { |
- eap_anonymous_identity_ = eap_anonymous_identity; |
- } |
- void set_eap_passphrase(const std::string& eap_passphrase) { |
- eap_passphrase_ = eap_passphrase; |
- } |
- void set_eap_save_credentials(bool save_credentials) { |
- eap_save_credentials_ = save_credentials; |
- } |
- |
- // Matches the client certificate pattern by checking to see if a certificate |
- // exists that meets the pattern criteria. If it finds one, it sets the |
- // appropriate network property. If not, it passes |connect| to the |
- // EnrollmentDelegate to do something with the enrollment URI (e.g. launch a |
- // dialog) to install the certificate, and then invoke |connect|. If |
- // |allow_enroll| is false, then the enrollment handler will not be invoked in |
- // the case of a missing certificate. |
- void MatchCertificatePattern(bool allow_enroll, const base::Closure& connect); |
- |
- // Network overrides. |
- virtual void EraseCredentials() OVERRIDE; |
- virtual void CalculateUniqueId() OVERRIDE; |
- |
- ConnectionSecurity encryption_; |
- std::string passphrase_; |
- bool passphrase_required_; |
- std::string identity_; |
- bool hidden_ssid_; |
- std::string bssid_; |
- int frequency_; |
- |
- EAPMethod eap_method_; |
- EAPPhase2Auth eap_phase_2_auth_; |
- std::string eap_server_ca_cert_pem_; |
- std::string eap_client_cert_pkcs11_id_; |
- bool eap_use_system_cas_; |
- std::string eap_identity_; |
- std::string eap_anonymous_identity_; |
- std::string eap_passphrase_; |
- bool eap_save_credentials_; |
- |
- // Internal state (not stored in shill). |
- // Passphrase set by user (stored for UI). |
- std::string user_passphrase_; |
- |
- // Weak pointer factory for wrapping pointers to this network in callbacks. |
- base::WeakPtrFactory<WifiNetwork> weak_pointer_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(WifiNetwork); |
-}; |
- |
-typedef std::vector<WifiNetwork*> WifiNetworkVector; |
- |
- |
-// Class for networks of TYPE_WIMAX. |
-class WimaxNetwork : public WirelessNetwork { |
- public: |
- explicit WimaxNetwork(const std::string& service_path); |
- virtual ~WimaxNetwork(); |
- |
- bool passphrase_required() const { return passphrase_required_; } |
- const std::string& eap_identity() const { return eap_identity_; } |
- const std::string& eap_passphrase() const { return eap_passphrase_; } |
- |
- void SetEAPIdentity(const std::string& identity); |
- void SetEAPPassphrase(const std::string& passphrase); |
- |
- protected: |
- // This allows NativeWimaxNetworkParser access to device privates so |
- // that they can be reconstituted during parsing. The parsers only |
- // access things through the private set_ functions so that this |
- // class can evolve without having to change all the parsers. |
- friend class NativeWimaxNetworkParser; |
- |
- // This allows the implementation classes access to privates. |
- NETWORK_LIBRARY_IMPL_FRIENDS; |
- |
- void set_eap_identity(const std::string& identity) { |
- eap_identity_ = identity; |
- } |
- void set_eap_passphrase(const std::string& passphrase) { |
- eap_passphrase_ = passphrase; |
- } |
- void set_passphrase_required(bool passphrase_required) { |
- passphrase_required_ = passphrase_required; |
- } |
- |
- // Network overrides. |
- virtual void EraseCredentials() OVERRIDE; |
- virtual void CalculateUniqueId() OVERRIDE; |
- |
- bool passphrase_required_; |
- std::string eap_identity_; |
- std::string eap_passphrase_; |
- |
- DISALLOW_COPY_AND_ASSIGN(WimaxNetwork); |
-}; |
- |
-typedef std::vector<WimaxNetwork*> WimaxNetworkVector; |
- |
-// Geolocation data. |
-struct CellTower { |
- CellTower(); |
- |
- enum RadioType { |
- RADIOTYPE_GSM, |
- RADIOTYPE_CDMA, |
- RADIOTYPE_WCDMA, |
- } radio_type; // GSM/WCDMA CDMA |
- int mobile_country_code; // MCC MCC |
- int mobile_network_code; // MNC SID |
- int location_area_code; // LAC NID |
- int cell_id; // CID BID |
- base::Time timestamp; // Timestamp when this cell was primary |
- int signal_strength; // Radio signal strength measured in dBm. |
- int timing_advance; // Represents the distance from the cell tower. |
- // Each unit is roughly 550 meters. |
-}; |
- |
-typedef std::vector<CellTower> CellTowerVector; |
- |
-// This class handles the interaction with the ChromeOS network library APIs. |
-// Classes can add themselves as observers. Users can get an instance of the |
-// library like this: chromeos::NetworkLibrary::Get() |
-class NetworkLibrary { |
- public: |
- enum HardwareAddressFormat { |
- FORMAT_RAW_HEX, |
- FORMAT_COLON_SEPARATED_HEX |
- }; |
- |
- // Used to configure which IP parameters will be specified by DHCP and which |
- // will be set by the user. |
- enum UseDHCP { |
- USE_DHCP_ADDRESS = 0x1, |
- USE_DHCP_NETMASK = 0x1 << 1, |
- USE_DHCP_GATEWAY = 0x1 << 2, |
- USE_DHCP_NAME_SERVERS = 0x1 << 3, |
- USE_DHCP_ALL_ROUTING_INFO = |
- (USE_DHCP_ADDRESS | |
- USE_DHCP_NETMASK | |
- USE_DHCP_GATEWAY), |
- }; |
- |
- class NetworkProfileObserver { |
- public: |
- // Called when the list of network profiles was changed. |
- virtual void OnProfileListChanged() = 0; |
- protected: |
- virtual ~NetworkProfileObserver() {} |
- }; |
- |
- class NetworkManagerObserver { |
- public: |
- // Called when the state of the network manager has changed, |
- // for example, networks have appeared or disappeared. |
- virtual void OnNetworkManagerChanged(NetworkLibrary* obj) = 0; |
- protected: |
- virtual ~NetworkManagerObserver() {} |
- }; |
- |
- class NetworkObserver { |
- public: |
- // Called when the state of a single network has changed, |
- // for example signal strength or connection state. |
- virtual void OnNetworkChanged(NetworkLibrary* cros, |
- const Network* network) = 0; |
- protected: |
- virtual ~NetworkObserver() {} |
- }; |
- |
- class NetworkDeviceObserver { |
- public: |
- // Called when |device| got notification about new networks available. |
- virtual void OnNetworkDeviceFoundNetworks(NetworkLibrary* cros, |
- const NetworkDevice* device) {} |
- |
- // Called when |device| got notification about SIM lock change. |
- virtual void OnNetworkDeviceSimLockChanged(NetworkLibrary* cros, |
- const NetworkDevice* device) {} |
- protected: |
- virtual ~NetworkDeviceObserver() {} |
- }; |
- |
- class PinOperationObserver { |
- public: |
- // Called when pin async operation has completed. |
- // Network is NULL when we don't have an associated Network object. |
- virtual void OnPinOperationCompleted(NetworkLibrary* cros, |
- PinOperationError error) = 0; |
- protected: |
- virtual ~PinOperationObserver() {} |
- }; |
- |
- virtual ~NetworkLibrary() {} |
- |
- virtual void Init() = 0; |
- |
- // Returns true if libcros was loaded instead of stubbed out. |
- virtual bool IsCros() const = 0; |
- |
- virtual void AddNetworkProfileObserver(NetworkProfileObserver* observer) = 0; |
- virtual void RemoveNetworkProfileObserver( |
- NetworkProfileObserver* observer) = 0; |
- |
- virtual void AddNetworkManagerObserver(NetworkManagerObserver* observer) = 0; |
- virtual void RemoveNetworkManagerObserver( |
- NetworkManagerObserver* observer) = 0; |
- |
- // An attempt to add an observer that has already been added for a |
- // give service path will be ignored. |
- virtual void AddNetworkObserver(const std::string& service_path, |
- NetworkObserver* observer) = 0; |
- // Remove an observer of a single network |
- virtual void RemoveNetworkObserver(const std::string& service_path, |
- NetworkObserver* observer) = 0; |
- // Stop |observer| from observing any networks |
- virtual void RemoveObserverForAllNetworks(NetworkObserver* observer) = 0; |
- |
- // Add an observer for a single network device. |
- virtual void AddNetworkDeviceObserver(const std::string& device_path, |
- NetworkDeviceObserver* observer) = 0; |
- // Remove an observer for a single network device. |
- virtual void RemoveNetworkDeviceObserver(const std::string& device_path, |
- NetworkDeviceObserver* observer) = 0; |
- |
- virtual void AddPinOperationObserver(PinOperationObserver* observer) = 0; |
- virtual void RemovePinOperationObserver(PinOperationObserver* observer) = 0; |
- |
- // Return the active or default Ethernet network (or NULL if none). |
- virtual const EthernetNetwork* ethernet_network() const = 0; |
- virtual bool ethernet_connecting() const = 0; |
- virtual bool ethernet_connected() const = 0; |
- |
- // Return the active Wifi network (or NULL if none active). |
- virtual const WifiNetwork* wifi_network() const = 0; |
- virtual bool wifi_connecting() const = 0; |
- virtual bool wifi_connected() const = 0; |
- |
- // Return the active Cellular network (or NULL if none active). |
- virtual const CellularNetwork* cellular_network() const = 0; |
- virtual bool cellular_connecting() const = 0; |
- virtual bool cellular_connected() const = 0; |
- |
- // Return the active Wimax network (or NULL if none active). |
- virtual const WimaxNetwork* wimax_network() const = 0; |
- virtual bool wimax_connecting() const = 0; |
- virtual bool wimax_connected() const = 0; |
- |
- // Return the active virtual network (or NULL if none active). |
- virtual const VirtualNetwork* virtual_network() const = 0; |
- virtual bool virtual_network_connecting() const = 0; |
- virtual bool virtual_network_connected() const = 0; |
- |
- // Return true if any network is currently connected. |
- virtual bool Connected() const = 0; |
- |
- // Return true if any network is currently connecting. |
- virtual bool Connecting() const = 0; |
- |
- // Returns the current list of wifi networks. |
- virtual const WifiNetworkVector& wifi_networks() const = 0; |
- |
- // Returns the list of remembered wifi networks. |
- virtual const WifiNetworkVector& remembered_wifi_networks() const = 0; |
- |
- // Returns the current list of cellular networks. |
- virtual const CellularNetworkVector& cellular_networks() const = 0; |
- |
- // Returns the current list of Wimax networks. |
- virtual const WimaxNetworkVector& wimax_networks() const = 0; |
- |
- // Returns the current list of virtual networks. |
- virtual const VirtualNetworkVector& virtual_networks() const = 0; |
- |
- // Returns the current list of virtual networks. |
- virtual const VirtualNetworkVector& remembered_virtual_networks() const = 0; |
- |
- virtual const Network* active_network() const = 0; |
- virtual const Network* active_nonvirtual_network() const = 0; |
- virtual const Network* connected_network() const = 0; |
- virtual const Network* connecting_network() const = 0; |
- |
- virtual bool ethernet_available() const = 0; |
- virtual bool wifi_available() const = 0; |
- virtual bool wimax_available() const = 0; |
- virtual bool cellular_available() const = 0; |
- |
- virtual bool ethernet_enabled() const = 0; |
- virtual bool wifi_enabled() const = 0; |
- virtual bool wimax_enabled() const = 0; |
- virtual bool cellular_enabled() const = 0; |
- |
- virtual bool wifi_scanning() const = 0; |
- virtual bool cellular_initializing() const = 0; |
- |
- // Return a pointer to the device, if it exists, or NULL. |
- virtual const NetworkDevice* FindNetworkDeviceByPath( |
- const std::string& path) const = 0; |
- |
- // Returns device with TYPE_CELLULAR or TYPE_WIMAX. |
- // Returns NULL if none exists. |
- virtual const NetworkDevice* FindMobileDevice() const = 0; |
- |
- // Returns device with TYPE_CELLULAR. Returns NULL if none exists. |
- virtual const NetworkDevice* FindCellularDevice() const = 0; |
- |
- // Return a pointer to the network, if it exists, or NULL. |
- // NOTE: Never store these results, store service paths instead. |
- // The pattern for doing an operation on a Network is: |
- // Network* network = cros->FindNetworkByPath(service_path); |
- // network->SetFoo(); |
- // network->Connect(); |
- // As long as this is done in sequence on the UI thread it will be safe; |
- // the network list only gets updated on the UI thread. |
- virtual Network* FindNetworkByPath(const std::string& path) const = 0; |
- virtual Network* FindNetworkByUniqueId( |
- const std::string& unique_id) const = 0; |
- virtual WifiNetwork* FindWifiNetworkByPath(const std::string& path) const = 0; |
- virtual CellularNetwork* FindCellularNetworkByPath( |
- const std::string& path) const = 0; |
- virtual WimaxNetwork* FindWimaxNetworkByPath( |
- const std::string& path) const = 0; |
- virtual VirtualNetwork* FindVirtualNetworkByPath( |
- const std::string& path) const = 0; |
- |
- // Return a pointer to the remembered network, if it exists, or NULL. |
- virtual Network* FindRememberedNetworkByPath( |
- const std::string& path) const = 0; |
- |
- // Return a pointer to the ONC dictionary for a network identified by unique |
- // ID. Returns NULL if there is no ONC dictionary available for that network. |
- // The ONC dictionary is usually only present for policy-configure networks |
- // which get reconfigured at startup. |
- virtual const base::DictionaryValue* FindOncForNetwork( |
- const std::string& unique_id) const = 0; |
- |
- // Records information that cellular plan payment has happened. |
- virtual void SignalCellularPlanPayment() = 0; |
- |
- // Returns true if cellular plan payment has been recorded recently. |
- virtual bool HasRecentCellularPlanPayment() = 0; |
- |
- // Returns home carrier ID if available, otherwise empty string is returned. |
- // Carrier ID format: <carrier name> (country). Ex.: "Verizon (us)". |
- virtual const std::string& GetCellularHomeCarrierId() const = 0; |
- |
- // Checks if the current cellular device should be activated by directly |
- // calling it's activate function instead of going through the activation |
- // process. |
- // Note: Currently Sprint is the only carrier using direct activation. |
- virtual bool CellularDeviceUsesDirectActivation() const = 0; |
- |
- // Passes |old_pin|, |new_pin| to change SIM card PIM. |
- virtual void ChangePin(const std::string& old_pin, |
- const std::string& new_pin) = 0; |
- |
- // Passes |pin|, |require_pin| value to change SIM card RequirePin setting. |
- virtual void ChangeRequirePin(bool require_pin, |
- const std::string& pin) = 0; |
- |
- // Passes |pin| to unlock SIM card. |
- virtual void EnterPin(const std::string& pin) = 0; |
- |
- // Passes |puk|, |new_pin| to unblock SIM card. |
- virtual void UnblockPin(const std::string& puk, |
- const std::string& new_pin) = 0; |
- |
- // Request a scan for available cellular networks. |
- virtual void RequestCellularScan() = 0; |
- |
- // Request a register in cellular network with |network_id|. |
- virtual void RequestCellularRegister(const std::string& network_id) = 0; |
- |
- // Change data roaming restriction for current cellular device. |
- virtual void SetCellularDataRoamingAllowed(bool new_value) = 0; |
- |
- // Changes the active cellular carrier to the one provided, calls the closure |
- // once the transition is complete. |
- virtual void SetCarrier(const std::string& carrier, |
- const NetworkOperationCallback& completed) = 0; |
- |
- // Return true if GSM SIM card can work only with enabled roaming. |
- virtual bool IsCellularAlwaysInRoaming() = 0; |
- |
- // Request a scan for new wifi networks. |
- virtual void RequestNetworkScan() = 0; |
- |
- // TODO(joth): Add GetCellTowers to retrieve a CellTowerVector. |
- |
- // Returns false if there is no way to connect to this network, even with |
- // user input (e.g. it requires a user profile but none is available). |
- virtual bool CanConnectToNetwork(const Network* network) const = 0; |
- |
- // Connect to the specified wireless network. |
- virtual void ConnectToWifiNetwork(WifiNetwork* network) = 0; |
- |
- // Connect to the specified wireless network and set its profile |
- // to SHARED if |shared| is true, otherwise to USER. |
- virtual void ConnectToWifiNetwork(WifiNetwork* network, bool shared) = 0; |
- |
- // Connect to the specified cellular network. |
- virtual void ConnectToCellularNetwork(CellularNetwork* network) = 0; |
- |
- // Connect to the specified WiMAX network. |
- virtual void ConnectToWimaxNetwork(WimaxNetwork* network) = 0; |
- |
- // Connect to the specified WiMAX network and set its profile |
- // to SHARED if |shared| is true, otherwise to USER. |
- virtual void ConnectToWimaxNetwork(WimaxNetwork* network, bool shared) = 0; |
- |
- // Connect to the specified virtual network. |
- virtual void ConnectToVirtualNetwork(VirtualNetwork* network) = 0; |
- |
- // Connect to an unconfigured network with given SSID, security, passphrase, |
- // and optional EAP configuration. If |security| is SECURITY_8021X, |
- // |eap_config| must be provided. |
- struct EAPConfigData { |
- EAPConfigData(); |
- ~EAPConfigData(); |
- EAPMethod method; |
- EAPPhase2Auth auth; |
- std::string server_ca_cert_pem; |
- bool use_system_cas; |
- std::string client_cert_pkcs11_id; |
- std::string identity; |
- std::string anonymous_identity; |
- }; |
- virtual void ConnectToUnconfiguredWifiNetwork( |
- const std::string& ssid, |
- ConnectionSecurity security, |
- const std::string& passphrase, |
- const EAPConfigData* eap_config, |
- bool save_credentials, |
- bool shared) = 0; |
- |
- // Connect to the specified virtual network with service name. |
- // VPNConfigData must be provided. |
- struct VPNConfigData { |
- VPNConfigData(); |
- ~VPNConfigData(); |
- std::string psk; |
- std::string server_ca_cert_pem; |
- std::string client_cert_pkcs11_id; |
- std::string username; |
- std::string user_passphrase; |
- std::string otp; |
- std::string group_name; |
- bool save_credentials; |
- }; |
- virtual void ConnectToUnconfiguredVirtualNetwork( |
- const std::string& service_name, |
- const std::string& server_hostname, |
- ProviderType provider_type, |
- const VPNConfigData& config) = 0; |
- |
- // Disconnect from the specified network. |
- virtual void DisconnectFromNetwork(const Network* network) = 0; |
- |
- // Forget the network corresponding to service_path. |
- virtual void ForgetNetwork(const std::string& service_path) = 0; |
- |
- // Enables/disables the ethernet network device. |
- virtual void EnableEthernetNetworkDevice(bool enable) = 0; |
- |
- // Enables/disables the wifi network device. |
- virtual void EnableWifiNetworkDevice(bool enable) = 0; |
- |
- // Enables/disables the wimax network device. |
- virtual void EnableWimaxNetworkDevice(bool enable) = 0; |
- |
- // Enables/disables the cellular network device. |
- virtual void EnableCellularNetworkDevice(bool enable) = 0; |
- |
- // Fetches IP configs and hardware address for a given device_path and returns |
- // them via the given callback. |
- virtual void GetIPConfigs(const std::string& device_path, |
- HardwareAddressFormat format, |
- const NetworkGetIPConfigsCallback& callback) = 0; |
- |
- // Sets the configuration of the IP parameters. This is called when user |
- // changes IP settings from dhcp to static or vice versa or when user changes |
- // the ip config info. If nothing is changed, this method does nothing. |
- // |dhcp_usage_mask| is a bitmask composed of items from the UseDHCP enum, and |
- // indicates which of the supplied values are overridden by values given by |
- // the default IP acquisition technique for the service (DHCP, usually). |
- virtual void SetIPParameters(const std::string& service_path, |
- const std::string& address, |
- const std::string& netmask, |
- const std::string& gateway, |
- const std::string& name_servers, |
- int dhcp_usage_mask) = 0; |
- |
- // Requests the service properties associated with |service_path|. Calls |
- // |callback| with the properties when competed. |
- typedef base::Callback<void(const std::string& service_path, |
- const base::DictionaryValue* properties)> |
- NetworkServicePropertiesCallback; |
- virtual void RequestNetworkServiceProperties( |
- const std::string& service_path, |
- const NetworkServicePropertiesCallback& callback) = 0; |
- |
- // Load networks from a list of NetworkConfigurations of ONC. |
- virtual void LoadOncNetworks(const base::ListValue& network_configs, |
- onc::ONCSource source) = 0; |
- |
- // This sets the active network for the network type. Note: priority order |
- // is unchanged (i.e. if a wifi network is set to active, but an ethernet |
- // network is still active, active_network() will still return the ethernet |
- // network). Other networks of the same type will become inactive. |
- // Used for testing. |
- virtual bool SetActiveNetwork(ConnectionType type, |
- const std::string& service_path) = 0; |
- |
- // Factory function, creates a new instance and returns ownership. |
- // For normal usage, access the singleton via NetworkLibrary::Get(). |
- static NetworkLibrary* GetImpl(bool stub); |
- |
- // Initializes the global instance. |
- static void Initialize(bool use_stub); |
- |
- // Destroys the global instance. Must be called before AtExitManager is |
- // destroyed to ensure a clean shutdown. |
- static void Shutdown(); |
- |
- // Gets the global instance. Returns NULL if Initialize() has not been |
- // called (or Shutdown() has been called). |
- static NetworkLibrary* Get(); |
- |
- // Sets the network library to be returned from Get(). The existing network |
- // library will be deleted. |
- static void SetForTesting(NetworkLibrary* network_library); |
-}; |
- |
-// The class is used for enabling the stub libcros, and cleaning it up at |
-// the end of the object lifetime. Useful for testing. |
-class ScopedStubNetworkLibraryEnabler { |
- public: |
- ScopedStubNetworkLibraryEnabler() { |
- NetworkLibrary::Initialize(true); |
- } |
- |
- ~ScopedStubNetworkLibraryEnabler() { |
- NetworkLibrary::Shutdown(); |
- } |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(ScopedStubNetworkLibraryEnabler); |
-}; |
- |
-} // namespace chromeos |
- |
-#endif // CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ |