| Index: webrtc/api/java/android/org/webrtc/NetworkMonitor.java
|
| diff --git a/webrtc/api/java/android/org/webrtc/NetworkMonitor.java b/webrtc/api/java/android/org/webrtc/NetworkMonitor.java
|
| deleted file mode 100644
|
| index 3fcb1c511ed6d4724650d99035847e36db9bf67a..0000000000000000000000000000000000000000
|
| --- a/webrtc/api/java/android/org/webrtc/NetworkMonitor.java
|
| +++ /dev/null
|
| @@ -1,253 +0,0 @@
|
| -/*
|
| - * Copyright 2015 The WebRTC project authors. All Rights Reserved.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license
|
| - * that can be found in the LICENSE file in the root of the source
|
| - * tree. An additional intellectual property rights grant can be found
|
| - * in the file PATENTS. All contributing project authors may
|
| - * be found in the AUTHORS file in the root of the source tree.
|
| - */
|
| -
|
| -package org.webrtc;
|
| -
|
| -import static org.webrtc.NetworkMonitorAutoDetect.ConnectionType;
|
| -import static org.webrtc.NetworkMonitorAutoDetect.INVALID_NET_ID;
|
| -import static org.webrtc.NetworkMonitorAutoDetect.NetworkInformation;
|
| -
|
| -import org.webrtc.Logging;
|
| -
|
| -import android.content.Context;
|
| -
|
| -import java.util.ArrayList;
|
| -import java.util.List;
|
| -
|
| -/**
|
| - * Borrowed from Chromium's src/net/android/java/src/org/chromium/net/NetworkChangeNotifier.java
|
| - *
|
| - * Triggers updates to the underlying network state from OS networking events.
|
| - *
|
| - * WARNING: This class is not thread-safe.
|
| - */
|
| -public class NetworkMonitor {
|
| - /**
|
| - * Alerted when the connection type of the network changes.
|
| - * The alert is fired on the UI thread.
|
| - */
|
| - public interface NetworkObserver {
|
| - public void onConnectionTypeChanged(ConnectionType connectionType);
|
| - }
|
| -
|
| - private static final String TAG = "NetworkMonitor";
|
| - private static NetworkMonitor instance;
|
| -
|
| - private final Context applicationContext;
|
| -
|
| - // Native observers of the connection type changes.
|
| - private final ArrayList<Long> nativeNetworkObservers;
|
| - // Java observers of the connection type changes.
|
| - private final ArrayList<NetworkObserver> networkObservers;
|
| -
|
| - // Object that detects the connection type changes.
|
| - private NetworkMonitorAutoDetect autoDetector;
|
| -
|
| - private ConnectionType currentConnectionType = ConnectionType.CONNECTION_UNKNOWN;
|
| -
|
| - private NetworkMonitor(Context context) {
|
| - assertIsTrue(context != null);
|
| - applicationContext =
|
| - context.getApplicationContext() == null ? context : context.getApplicationContext();
|
| -
|
| - nativeNetworkObservers = new ArrayList<Long>();
|
| - networkObservers = new ArrayList<NetworkObserver>();
|
| - }
|
| -
|
| - /**
|
| - * Initializes the singleton once.
|
| - * Called from the native code.
|
| - */
|
| - public static NetworkMonitor init(Context context) {
|
| - if (!isInitialized()) {
|
| - instance = new NetworkMonitor(context);
|
| - }
|
| - return instance;
|
| - }
|
| -
|
| - public static boolean isInitialized() {
|
| - return instance != null;
|
| - }
|
| -
|
| - /**
|
| - * Returns the singleton instance.
|
| - */
|
| - public static NetworkMonitor getInstance() {
|
| - return instance;
|
| - }
|
| -
|
| - /**
|
| - * Enables auto detection of the current network state based on notifications from the system.
|
| - * Note that passing true here requires the embedding app have the platform ACCESS_NETWORK_STATE
|
| - * permission.
|
| - *
|
| - * @param shouldAutoDetect true if the NetworkMonitor should listen for system changes in
|
| - * network connectivity.
|
| - */
|
| - public static void setAutoDetectConnectivityState(boolean shouldAutoDetect) {
|
| - getInstance().setAutoDetectConnectivityStateInternal(shouldAutoDetect);
|
| - }
|
| -
|
| - private static void assertIsTrue(boolean condition) {
|
| - if (!condition) {
|
| - throw new AssertionError("Expected to be true");
|
| - }
|
| - }
|
| -
|
| - // Called by the native code.
|
| - private void startMonitoring(long nativeObserver) {
|
| - Logging.d(TAG, "Start monitoring from native observer " + nativeObserver);
|
| - nativeNetworkObservers.add(nativeObserver);
|
| - setAutoDetectConnectivityStateInternal(true);
|
| - }
|
| -
|
| - // Called by the native code.
|
| - private void stopMonitoring(long nativeObserver) {
|
| - Logging.d(TAG, "Stop monitoring from native observer " + nativeObserver);
|
| - setAutoDetectConnectivityStateInternal(false);
|
| - nativeNetworkObservers.remove(nativeObserver);
|
| - }
|
| -
|
| - private ConnectionType getCurrentConnectionType() {
|
| - return currentConnectionType;
|
| - }
|
| -
|
| - private int getCurrentDefaultNetId() {
|
| - return autoDetector == null ? INVALID_NET_ID : autoDetector.getDefaultNetId();
|
| - }
|
| -
|
| - private void destroyAutoDetector() {
|
| - if (autoDetector != null) {
|
| - autoDetector.destroy();
|
| - autoDetector = null;
|
| - }
|
| - }
|
| -
|
| - private void setAutoDetectConnectivityStateInternal(boolean shouldAutoDetect) {
|
| - if (!shouldAutoDetect) {
|
| - destroyAutoDetector();
|
| - return;
|
| - }
|
| - if (autoDetector == null) {
|
| - autoDetector = new NetworkMonitorAutoDetect(
|
| - new NetworkMonitorAutoDetect.Observer() {
|
| -
|
| - @Override
|
| - public void onConnectionTypeChanged(ConnectionType newConnectionType) {
|
| - updateCurrentConnectionType(newConnectionType);
|
| - }
|
| -
|
| - @Override
|
| - public void onNetworkConnect(NetworkInformation networkInfo) {
|
| - notifyObserversOfNetworkConnect(networkInfo);
|
| - }
|
| -
|
| - @Override
|
| - public void onNetworkDisconnect(int networkHandle) {
|
| - notifyObserversOfNetworkDisconnect(networkHandle);
|
| - }
|
| - },
|
| - applicationContext);
|
| - final NetworkMonitorAutoDetect.NetworkState networkState =
|
| - autoDetector.getCurrentNetworkState();
|
| - updateCurrentConnectionType(NetworkMonitorAutoDetect.getConnectionType(networkState));
|
| - updateActiveNetworkList();
|
| - }
|
| - }
|
| -
|
| - private void updateCurrentConnectionType(ConnectionType newConnectionType) {
|
| - currentConnectionType = newConnectionType;
|
| - notifyObserversOfConnectionTypeChange(newConnectionType);
|
| - }
|
| -
|
| - /**
|
| - * Alerts all observers of a connection change.
|
| - */
|
| - private void notifyObserversOfConnectionTypeChange(ConnectionType newConnectionType) {
|
| - for (long nativeObserver : nativeNetworkObservers) {
|
| - nativeNotifyConnectionTypeChanged(nativeObserver);
|
| - }
|
| - for (NetworkObserver observer : networkObservers) {
|
| - observer.onConnectionTypeChanged(newConnectionType);
|
| - }
|
| - }
|
| -
|
| - 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() {
|
| - List<NetworkInformation> networkInfoList = autoDetector.getActiveNetworkList();
|
| - if (networkInfoList == null || networkInfoList.size() == 0) {
|
| - return;
|
| - }
|
| -
|
| - NetworkInformation[] networkInfos = new NetworkInformation[networkInfoList.size()];
|
| - networkInfos = networkInfoList.toArray(networkInfos);
|
| - for (long nativeObserver : nativeNetworkObservers) {
|
| - nativeNotifyOfActiveNetworkList(nativeObserver, networkInfos);
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Adds an observer for any connection type changes.
|
| - */
|
| - public static void addNetworkObserver(NetworkObserver observer) {
|
| - getInstance().addNetworkObserverInternal(observer);
|
| - }
|
| -
|
| - private void addNetworkObserverInternal(NetworkObserver observer) {
|
| - networkObservers.add(observer);
|
| - }
|
| -
|
| - /**
|
| - * Removes an observer for any connection type changes.
|
| - */
|
| - public static void removeNetworkObserver(NetworkObserver observer) {
|
| - getInstance().removeNetworkObserverInternal(observer);
|
| - }
|
| -
|
| - private void removeNetworkObserverInternal(NetworkObserver observer) {
|
| - networkObservers.remove(observer);
|
| - }
|
| -
|
| - /**
|
| - * Checks if there currently is connectivity.
|
| - */
|
| - public static boolean isOnline() {
|
| - ConnectionType connectionType = getInstance().getCurrentConnectionType();
|
| - return connectionType != ConnectionType.CONNECTION_UNKNOWN
|
| - && connectionType != ConnectionType.CONNECTION_NONE;
|
| - }
|
| -
|
| - 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) {
|
| - instance = new NetworkMonitor(context);
|
| - }
|
| -
|
| - // For testing only.
|
| - public static NetworkMonitorAutoDetect getAutoDetectorForTest() {
|
| - return getInstance().autoDetector;
|
| - }
|
| -}
|
|
|