Index: webrtc/base/network.h |
diff --git a/webrtc/base/network.h b/webrtc/base/network.h |
index 8e5c8f0fb70e196acb1bab84321f1aa63812bf96..ef2c78f6733493e9500f618f2a72ca3ce4b466dd 100644 |
--- a/webrtc/base/network.h |
+++ b/webrtc/base/network.h |
@@ -56,6 +56,15 @@ class NetworkManager { |
public: |
typedef std::vector<Network*> NetworkList; |
+ // This enum indicates the state of GetNetworks. |
+ enum NetworkPermissionState { |
+ STATE_UNKNOWN, // SignalNetworksChanged is not fired yet. |
+ STATE_ALLOWED, // Adapter enumeration is allowed. Getting 0 network from |
+ // GetNetworks means that there is no network available. |
+ STATE_BLOCKED // Adapter enumeration is disabled. GetAnyAddressNetworks() |
+ // should be used instead. |
+ }; |
+ |
NetworkManager(); |
virtual ~NetworkManager(); |
@@ -73,12 +82,15 @@ class NetworkManager { |
virtual void StopUpdating() = 0; |
// Returns the current list of networks available on this machine. |
- // UpdateNetworks() must be called before this method is called. |
+ // StartUpdating() must be called before this method is called. |
// It makes sure that repeated calls return the same object for a |
// given network, so that quality is tracked appropriately. Does not |
// include ignored networks. |
virtual void GetNetworks(NetworkList* networks) const = 0; |
+ // return the current permission state of GetNetworks() |
+ virtual NetworkPermissionState network_permission_state() const = 0; |
+ |
// "AnyAddressNetwork" is a network which only contains single "any address" |
// IP address. (i.e. INADDR_ANY for IPv4 or in6addr_any for IPv6). This is |
// useful as binding to such interfaces allow default routing behavior like |
@@ -113,6 +125,10 @@ class NetworkManagerBase : public NetworkManager { |
void set_max_ipv6_networks(int networks) { max_ipv6_networks_ = networks; } |
int max_ipv6_networks() { return max_ipv6_networks_; } |
+ NetworkPermissionState network_permission_state() const override { |
+ return network_permission_state_; |
+ } |
+ |
protected: |
typedef std::map<std::string, Network*> NetworkMap; |
// Updates |networks_| with the networks listed in |list|. If |
@@ -127,10 +143,16 @@ class NetworkManagerBase : public NetworkManager { |
bool* changed, |
NetworkManager::Stats* stats); |
+ void set_network_permission_state(NetworkPermissionState state) { |
+ network_permission_state_ = state; |
+ } |
+ |
private: |
friend class NetworkTest; |
void DoUpdateNetworks(); |
+ NetworkPermissionState network_permission_state_; |
+ |
NetworkList networks_; |
int max_ipv6_networks_; |