| Index: net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java
|
| diff --git a/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java b/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java
|
| index e164c739c8e1512646572bf668a3003c77ae7ee2..3212833c6f7249f062818fd1851ea9d3b151429b 100644
|
| --- a/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java
|
| +++ b/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java
|
| @@ -31,6 +31,7 @@ import android.util.Log;
|
| import org.chromium.base.ThreadUtils;
|
| import org.chromium.base.VisibleForTesting;
|
| import org.chromium.base.metrics.RecordHistogram;
|
| +import org.chromium.net.ConnectionType.ConnectionTypeEnum;
|
|
|
| import java.io.IOException;
|
| import java.util.Arrays;
|
| @@ -85,7 +86,11 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| * default network.
|
| */
|
| NetworkState getNetworkState() {
|
| - return getNetworkState(mConnectivityManager.getActiveNetworkInfo());
|
| + final NetworkInfo networkInfo = mConnectivityManager.getActiveNetworkInfo();
|
| + if (networkInfo == null || !networkInfo.isConnected()) {
|
| + return new NetworkState(false, -1, -1);
|
| + }
|
| + return new NetworkState(true, networkInfo.getType(), networkInfo.getSubtype());
|
| }
|
|
|
| // Fetches NetworkInfo and records UMA for NullPointerExceptions.
|
| @@ -110,29 +115,23 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| }
|
|
|
| /**
|
| - * Returns connection type and status information about |network|.
|
| + * Returns connection type for |network|.
|
| * Only callable on Lollipop and newer releases.
|
| */
|
| @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| - NetworkState getNetworkState(Network network) {
|
| - final NetworkInfo networkInfo = getNetworkInfo(network);
|
| + @ConnectionTypeEnum
|
| + int getConnectionType(Network network) {
|
| + NetworkInfo networkInfo = getNetworkInfo(network);
|
| if (networkInfo != null && networkInfo.getType() == TYPE_VPN) {
|
| // When a VPN is in place the underlying network type can be queried via
|
| // getActiveNeworkInfo() thanks to
|
| // https://android.googlesource.com/platform/frameworks/base/+/d6a7980d
|
| - return getNetworkState();
|
| + networkInfo = mConnectivityManager.getActiveNetworkInfo();
|
| }
|
| - return getNetworkState(networkInfo);
|
| - }
|
| -
|
| - /**
|
| - * Returns connection type and status information gleaned from networkInfo.
|
| - */
|
| - NetworkState getNetworkState(NetworkInfo networkInfo) {
|
| - if (networkInfo == null || !networkInfo.isConnected()) {
|
| - return new NetworkState(false, -1, -1);
|
| + if (networkInfo != null && networkInfo.isConnected()) {
|
| + return convertToConnectionType(networkInfo.getType(), networkInfo.getSubtype());
|
| }
|
| - return new NetworkState(true, networkInfo.getType(), networkInfo.getSubtype());
|
| + return ConnectionType.CONNECTION_NONE;
|
| }
|
|
|
| /**
|
| @@ -382,8 +381,8 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| mVpnInPlace = network;
|
| }
|
| final long netId = networkToNetId(network);
|
| - final int connectionType =
|
| - getCurrentConnectionType(mConnectivityManagerDelegate.getNetworkState(network));
|
| + @ConnectionTypeEnum
|
| + final int connectionType = mConnectivityManagerDelegate.getConnectionType(network);
|
| ThreadUtils.postOnUiThread(new Runnable() {
|
| @Override
|
| public void run() {
|
| @@ -407,8 +406,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| // A capabilities change may indicate the ConnectionType has changed,
|
| // so forward the new ConnectionType along to observer.
|
| final long netId = networkToNetId(network);
|
| - final int connectionType =
|
| - getCurrentConnectionType(mConnectivityManagerDelegate.getNetworkState(network));
|
| + final int connectionType = mConnectivityManagerDelegate.getConnectionType(network);
|
| ThreadUtils.postOnUiThread(new Runnable() {
|
| @Override
|
| public void run() {
|
| @@ -452,8 +450,8 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| getAllNetworksFiltered(mConnectivityManagerDelegate, network)) {
|
| onAvailable(newNetwork);
|
| }
|
| - final int newConnectionType =
|
| - getCurrentConnectionType(mConnectivityManagerDelegate.getNetworkState());
|
| + @ConnectionTypeEnum
|
| + final int newConnectionType = convertToConnectionType(getCurrentNetworkState());
|
| ThreadUtils.postOnUiThread(new Runnable() {
|
| @Override
|
| public void run() {
|
| @@ -513,6 +511,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| private final MyNetworkCallback mNetworkCallback;
|
| private final NetworkRequest mNetworkRequest;
|
| private boolean mRegistered;
|
| + @ConnectionTypeEnum
|
| private int mConnectionType;
|
| private String mWifiSSID;
|
| private double mMaxBandwidthMbps;
|
| @@ -525,7 +524,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| /**
|
| * Called when default network changes.
|
| */
|
| - public void onConnectionTypeChanged(int newConnectionType);
|
| + public void onConnectionTypeChanged(@ConnectionTypeEnum int newConnectionType);
|
| /**
|
| * Called when maximum bandwidth of default network changes.
|
| */
|
| @@ -588,8 +587,8 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| mNetworkCallback = null;
|
| mNetworkRequest = null;
|
| }
|
| - final NetworkState networkState = mConnectivityManagerDelegate.getNetworkState();
|
| - mConnectionType = getCurrentConnectionType(networkState);
|
| + final NetworkState networkState = getCurrentNetworkState();
|
| + mConnectionType = convertToConnectionType(networkState);
|
| mWifiSSID = getCurrentWifiSSID(networkState);
|
| mMaxBandwidthMbps = getCurrentMaxBandwidthInMbps(networkState);
|
| mMaxBandwidthConnectionType = mConnectionType;
|
| @@ -730,8 +729,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| int index = 0;
|
| for (Network network : networks) {
|
| networksAndTypes[index++] = networkToNetId(network);
|
| - networksAndTypes[index++] =
|
| - getCurrentConnectionType(mConnectivityManagerDelegate.getNetworkState(network));
|
| + networksAndTypes[index++] = mConnectivityManagerDelegate.getConnectionType(network);
|
| }
|
| return networksAndTypes;
|
| }
|
| @@ -752,12 +750,21 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| /**
|
| * Returns the connection type for the given NetworkState.
|
| */
|
| - public int getCurrentConnectionType(NetworkState networkState) {
|
| + @ConnectionTypeEnum
|
| + public static int convertToConnectionType(NetworkState networkState) {
|
| if (!networkState.isConnected()) {
|
| return ConnectionType.CONNECTION_NONE;
|
| }
|
| + return convertToConnectionType(
|
| + networkState.getNetworkType(), networkState.getNetworkSubType());
|
| + }
|
|
|
| - switch (networkState.getNetworkType()) {
|
| + /**
|
| + * Returns the connection type for the given ConnectivityManager type and subtype.
|
| + */
|
| + @ConnectionTypeEnum
|
| + private static int convertToConnectionType(int type, int subtype) {
|
| + switch (type) {
|
| case ConnectivityManager.TYPE_ETHERNET:
|
| return ConnectionType.CONNECTION_ETHERNET;
|
| case ConnectivityManager.TYPE_WIFI:
|
| @@ -768,7 +775,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| return ConnectionType.CONNECTION_BLUETOOTH;
|
| case ConnectivityManager.TYPE_MOBILE:
|
| // Use information from TelephonyManager to classify the connection.
|
| - switch (networkState.getNetworkSubType()) {
|
| + switch (subtype) {
|
| case TelephonyManager.NETWORK_TYPE_GPRS:
|
| case TelephonyManager.NETWORK_TYPE_EDGE:
|
| case TelephonyManager.NETWORK_TYPE_CDMA:
|
| @@ -798,7 +805,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| /**
|
| * Returns the connection subtype for the given NetworkState.
|
| */
|
| - public int getCurrentConnectionSubtype(NetworkState networkState) {
|
| + public static int convertToConnectionSubtype(NetworkState networkState) {
|
| if (!networkState.isConnected()) {
|
| return ConnectionSubtype.SUBTYPE_NONE;
|
| }
|
| @@ -857,7 +864,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| * that is used instead. For more on NetInfo, see http://w3c.github.io/netinfo/.
|
| */
|
| public double getCurrentMaxBandwidthInMbps(NetworkState networkState) {
|
| - if (getCurrentConnectionType(networkState) == ConnectionType.CONNECTION_WIFI) {
|
| + if (convertToConnectionType(networkState) == ConnectionType.CONNECTION_WIFI) {
|
| final int link_speed = mWifiManagerDelegate.getLinkSpeedInMbps();
|
| if (link_speed != UNKNOWN_LINK_SPEED) {
|
| return link_speed;
|
| @@ -865,11 +872,11 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| }
|
|
|
| return NetworkChangeNotifier.getMaxBandwidthForConnectionSubtype(
|
| - getCurrentConnectionSubtype(networkState));
|
| + convertToConnectionSubtype(networkState));
|
| }
|
|
|
| private String getCurrentWifiSSID(NetworkState networkState) {
|
| - if (getCurrentConnectionType(networkState) != ConnectionType.CONNECTION_WIFI) return "";
|
| + if (convertToConnectionType(networkState) != ConnectionType.CONNECTION_WIFI) return "";
|
| return mWifiManagerDelegate.getWifiSSID();
|
| }
|
|
|
| @@ -886,7 +893,8 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver {
|
| }
|
|
|
| private void connectionTypeChanged(NetworkState networkState) {
|
| - int newConnectionType = getCurrentConnectionType(networkState);
|
| + @ConnectionTypeEnum
|
| + int newConnectionType = convertToConnectionType(networkState);
|
| String newWifiSSID = getCurrentWifiSSID(networkState);
|
| if (newConnectionType == mConnectionType && newWifiSSID.equals(mWifiSSID)) return;
|
|
|
|
|