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 466d03f194e83a9caa43a54e57062f09292d04b6..468a1b42c5de393bc565311f839a7614051a5a96 100644 |
--- a/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java |
+++ b/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java |
@@ -17,8 +17,6 @@ import android.net.wifi.WifiManager; |
import android.telephony.TelephonyManager; |
import android.util.Log; |
-import org.chromium.base.ApplicationState; |
-import org.chromium.base.ApplicationStatus; |
import org.chromium.base.VisibleForTesting; |
/** |
@@ -26,9 +24,8 @@ import org.chromium.base.VisibleForTesting; |
* Note that use of this class requires that the app have the platform |
* ACCESS_NETWORK_STATE permission. |
*/ |
-public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver |
- implements ApplicationStatus.ApplicationStateListener { |
- |
+public class NetworkChangeNotifierAutoDetect |
+ extends BroadcastReceiver implements RegistrationPolicy.Listener { |
static class NetworkState { |
private final boolean mConnected; |
private final int mType; |
@@ -139,15 +136,15 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver |
private static final String TAG = "NetworkChangeNotifierAutoDetect"; |
private static final int UNKNOWN_LINK_SPEED = -1; |
- private final NetworkConnectivityIntentFilter mIntentFilter; |
+ private final NetworkConnectivityIntentFilter mIntentFilter; |
private final Observer mObserver; |
- |
private final Context mContext; |
+ private final RegistrationPolicy mRegistrationPolicy; |
+ |
private ConnectivityManagerDelegate mConnectivityManagerDelegate; |
private WifiManagerDelegate mWifiManagerDelegate; |
private boolean mRegistered; |
- private final boolean mApplicationStateRegistered; |
private int mConnectionType; |
private String mWifiSSID; |
private double mMaxBandwidthMbps; |
@@ -166,8 +163,8 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver |
* @param alwaysWatchForChanges If true, always watch for network changes. |
* Otherwise, only watch if app is in foreground. |
*/ |
- public NetworkChangeNotifierAutoDetect(Observer observer, Context context, |
- boolean alwaysWatchForChanges) { |
+ public NetworkChangeNotifierAutoDetect( |
+ Observer observer, Context context, RegistrationPolicy policy) { |
mObserver = observer; |
mContext = context.getApplicationContext(); |
mConnectivityManagerDelegate = new ConnectivityManagerDelegate(context); |
@@ -178,15 +175,8 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver |
mMaxBandwidthMbps = getCurrentMaxBandwidthInMbps(networkState); |
mIntentFilter = |
new NetworkConnectivityIntentFilter(mWifiManagerDelegate.getHasWifiPermission()); |
- |
- if (alwaysWatchForChanges) { |
- registerReceiver(); |
- mApplicationStateRegistered = false; |
- } else { |
- ApplicationStatus.registerApplicationStateListener(this); |
- onApplicationStateChange(getApplicationState()); |
- mApplicationStateRegistered = true; |
- } |
+ mRegistrationPolicy = policy; |
+ mRegistrationPolicy.init(this); |
} |
/** |
@@ -203,13 +193,9 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver |
mWifiManagerDelegate = delegate; |
} |
- /** |
- * Returns the activity's status. |
- * @return an {@code int} that is one of {@code ApplicationState.HAS_*_ACTIVITIES}. |
- */ |
@VisibleForTesting |
- int getApplicationState() { |
- return ApplicationStatus.getStateForApplication(); |
+ RegistrationPolicy getRegistrationPolicy() { |
+ return mRegistrationPolicy; |
} |
/** |
@@ -221,28 +207,8 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver |
} |
public void destroy() { |
- if (mApplicationStateRegistered) ApplicationStatus.unregisterApplicationStateListener(this); |
- unregisterReceiver(); |
- } |
- |
- /** |
- * Register a BroadcastReceiver in the given context. |
- */ |
- private void registerReceiver() { |
- if (!mRegistered) { |
- mRegistered = true; |
- mContext.registerReceiver(this, mIntentFilter); |
- } |
- } |
- |
- /** |
- * Unregister the BroadcastReceiver in the given context. |
- */ |
- private void unregisterReceiver() { |
- if (mRegistered) { |
- mRegistered = false; |
- mContext.unregisterReceiver(this); |
- } |
+ mRegistrationPolicy.destroy(); |
+ unregister(); |
} |
public NetworkState getCurrentNetworkState() { |
@@ -379,17 +345,23 @@ public class NetworkChangeNotifierAutoDetect extends BroadcastReceiver |
} |
} |
- // ApplicationStatus.ApplicationStateListener |
+ // RegistrationPolicy.Listener |
@Override |
- public void onApplicationStateChange(int newState) { |
+ public void register() { |
+ if (mRegistered) return; |
+ |
final NetworkState networkState = getCurrentNetworkState(); |
- if (newState == ApplicationState.HAS_RUNNING_ACTIVITIES) { |
- connectionTypeChanged(networkState); |
- maxBandwidthChanged(networkState); |
- registerReceiver(); |
- } else if (newState == ApplicationState.HAS_PAUSED_ACTIVITIES) { |
- unregisterReceiver(); |
- } |
+ connectionTypeChanged(networkState); |
+ maxBandwidthChanged(networkState); |
+ mContext.registerReceiver(this, mIntentFilter); |
+ mRegistered = true; |
+ } |
+ |
+ @Override |
+ public void unregister() { |
+ if (!mRegistered) return; |
+ mContext.unregisterReceiver(this); |
+ mRegistered = false; |
} |
private void connectionTypeChanged(NetworkState networkState) { |