Index: talk/app/webrtc/java/android/org/webrtc/NetworkMonitor.java |
diff --git a/talk/app/webrtc/java/android/org/webrtc/NetworkMonitor.java b/talk/app/webrtc/java/android/org/webrtc/NetworkMonitor.java |
index 0f3df42fbd64f1da81ccdb5e221b1fbbe8dbc74d..427070efad43db7f46855c2f712e50f4932e80a0 100644 |
--- a/talk/app/webrtc/java/android/org/webrtc/NetworkMonitor.java |
+++ b/talk/app/webrtc/java/android/org/webrtc/NetworkMonitor.java |
@@ -154,19 +154,27 @@ public class NetworkMonitor { |
if (autoDetector == null) { |
autoDetector = new NetworkMonitorAutoDetect( |
new NetworkMonitorAutoDetect.Observer() { |
+ |
@Override |
public void onConnectionTypeChanged(ConnectionType newConnectionType) { |
updateCurrentConnectionType(newConnectionType); |
} |
+ |
@Override |
public void onNetworkConnect(NetworkInformation networkInfo) { |
- updateNetworkInformation(networkInfo); |
+ notifyObserversOfNetworkConnect(networkInfo); |
+ } |
+ |
+ @Override |
+ public void onNetworkDisconnect(int networkHandle) { |
+ notifyObserversOfNetworkDisconnect(networkHandle); |
} |
}, |
applicationContext); |
final NetworkMonitorAutoDetect.NetworkState networkState = |
autoDetector.getCurrentNetworkState(); |
updateCurrentConnectionType(autoDetector.getConnectionType(networkState)); |
+ updateActiveNetworkList(); |
} |
} |
@@ -187,12 +195,28 @@ public class NetworkMonitor { |
} |
} |
- private void updateNetworkInformation(NetworkInformation networkInfo) { |
+ private void notifyObserversOfNetworkConnect(NetworkInformation networkInfo) { |
for (long nativeObserver : nativeNetworkObservers) { |
nativeNotifyOfNetworkConnect(nativeObserver, networkInfo); |
} |
} |
+ private void notifyObserversOfNetworkDisconnect(int networkHandle) { |
+ for (long nativeObserver : nativeNetworkObservers) { |
+ nativeNotifyOfNetworkDisconnect(nativeObserver, networkHandle); |
+ } |
+ } |
+ |
+ private void updateActiveNetworkList() { |
+ NetworkInformation[] networkInfos = autoDetector.getActiveNetworkList(); |
+ if (networkInfos.length == 0) { |
+ return; |
+ } |
+ for (long nativeObserver : nativeNetworkObservers) { |
+ nativeNotifyOfActiveNetworkList(nativeObserver, networkInfos); |
+ } |
+ } |
+ |
/** |
* Adds an observer for any connection type changes. |
*/ |
@@ -224,11 +248,11 @@ public class NetworkMonitor { |
&& connectionType != ConnectionType.CONNECTION_NONE; |
} |
- private native long nativeCreateNetworkMonitor(); |
- |
private native void nativeNotifyConnectionTypeChanged(long nativePtr); |
- |
private native void nativeNotifyOfNetworkConnect(long nativePtr, NetworkInformation networkInfo); |
+ private native void nativeNotifyOfNetworkDisconnect(long nativePtr, int networkHandle); |
+ private native void nativeNotifyOfActiveNetworkList(long nativePtr, |
+ NetworkInformation[] networkInfos); |
// For testing only. |
static void resetInstanceForTests(Context context) { |