| 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 911869493e26471773c6f6036cdf8ac1b804526f..c5fd0330f514e08fae45368e1d84414e1bb73d04 100644
|
| --- a/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java
|
| +++ b/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java
|
| @@ -23,6 +23,31 @@ import org.chromium.base.ActivityStatus;
|
| public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver
|
| implements ActivityStatus.Listener {
|
|
|
| + /** Queries the ConnectivityManager for information about the current connection. */
|
| + static class ConnectivityManagerDelegate {
|
| + private ConnectivityManager mConnectivityManager;
|
| +
|
| + ConnectivityManagerDelegate(Context context) {
|
| + if (context != null) {
|
| + mConnectivityManager = (ConnectivityManager)
|
| + context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
| + }
|
| + }
|
| +
|
| + boolean activeNetworkExists() {
|
| + return mConnectivityManager != null &&
|
| + mConnectivityManager.getActiveNetworkInfo() != null;
|
| + }
|
| +
|
| + int getNetworkType() {
|
| + return mConnectivityManager.getActiveNetworkInfo().getType();
|
| + }
|
| +
|
| + int getNetworkSubtype() {
|
| + return mConnectivityManager.getActiveNetworkInfo().getSubtype();
|
| + }
|
| + }
|
| +
|
| private static final String TAG = "NetworkChangeNotifierAutoDetect";
|
|
|
| private final NetworkConnectivityIntentFilter mIntentFilter =
|
| @@ -31,6 +56,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver
|
| private final Observer mObserver;
|
|
|
| private final Context mContext;
|
| + private ConnectivityManagerDelegate mConnectivityManagerDelegate;
|
| private boolean mRegistered;
|
| private int mConnectionType;
|
|
|
| @@ -44,6 +70,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver
|
| public NetworkChangeNotifierAutoDetect(Observer observer, Context context) {
|
| mObserver = observer;
|
| mContext = context;
|
| + mConnectivityManagerDelegate = new ConnectivityManagerDelegate(context);
|
| mConnectionType = currentConnectionType(context);
|
|
|
| ActivityStatus status = ActivityStatus.getInstance();
|
| @@ -53,6 +80,13 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver
|
| status.registerListener(this);
|
| }
|
|
|
| + /**
|
| + * Allows overriding the ConnectivityManagerDelegate for tests.
|
| + */
|
| + void setConnectivityManagerDelegateForTests(ConnectivityManagerDelegate delegate) {
|
| + mConnectivityManagerDelegate = delegate;
|
| + }
|
| +
|
| public void destroy() {
|
| unregisterReceiver();
|
| }
|
| @@ -79,14 +113,11 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver
|
|
|
| private int currentConnectionType(Context context) {
|
| // Track exactly what type of connection we have.
|
| - ConnectivityManager connectivityManager = (ConnectivityManager)
|
| - context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
| - NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
|
| - if (activeNetworkInfo == null) {
|
| + if (!mConnectivityManagerDelegate.activeNetworkExists()) {
|
| return NetworkChangeNotifier.CONNECTION_NONE;
|
| }
|
|
|
| - switch (activeNetworkInfo.getType()) {
|
| + switch (mConnectivityManagerDelegate.getNetworkType()) {
|
| case ConnectivityManager.TYPE_ETHERNET:
|
| return NetworkChangeNotifier.CONNECTION_ETHERNET;
|
| case ConnectivityManager.TYPE_WIFI:
|
| @@ -95,7 +126,7 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver
|
| return NetworkChangeNotifier.CONNECTION_4G;
|
| case ConnectivityManager.TYPE_MOBILE:
|
| // Use information from TelephonyManager to classify the connection.
|
| - switch (activeNetworkInfo.getSubtype()) {
|
| + switch (mConnectivityManagerDelegate.getNetworkSubtype()) {
|
| case TelephonyManager.NETWORK_TYPE_GPRS:
|
| case TelephonyManager.NETWORK_TYPE_EDGE:
|
| case TelephonyManager.NETWORK_TYPE_CDMA:
|
|
|