Start listening to telephony changes in #start()
Starting to listen on the handler races with the rest of
the constructor. The class already has a #start() method
meant to start listening, so implement better practices
by leveraging this method.
Test: CtsNetTestCases
FrameworksNetIntegrationTests
FrameworksNetTests
Change-Id: I772f761d3ca5f9711b9d988e6330b0878814f491
This commit is contained in:
@@ -109,8 +109,6 @@ public class MultinetworkPolicyTracker {
|
|||||||
this(ctx, handler, null);
|
this(ctx, handler, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Set the mini sdk to 31 and remove @TargetApi annotation when b/205923322 is addressed.
|
|
||||||
@TargetApi(Build.VERSION_CODES.S)
|
|
||||||
public MultinetworkPolicyTracker(Context ctx, Handler handler, Runnable avoidBadWifiCallback) {
|
public MultinetworkPolicyTracker(Context ctx, Handler handler, Runnable avoidBadWifiCallback) {
|
||||||
mContext = ctx;
|
mContext = ctx;
|
||||||
mResources = new ConnectivityResources(ctx);
|
mResources = new ConnectivityResources(ctx);
|
||||||
@@ -128,13 +126,12 @@ public class MultinetworkPolicyTracker {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ctx.getSystemService(TelephonyManager.class).registerTelephonyCallback(
|
|
||||||
new HandlerExecutor(handler), new ActiveDataSubscriptionIdListener());
|
|
||||||
|
|
||||||
updateAvoidBadWifi();
|
updateAvoidBadWifi();
|
||||||
updateMeteredMultipathPreference();
|
updateMeteredMultipathPreference();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Set the mini sdk to 31 and remove @TargetApi annotation when b/205923322 is addressed.
|
||||||
|
@TargetApi(Build.VERSION_CODES.S)
|
||||||
public void start() {
|
public void start() {
|
||||||
for (Uri uri : mSettingsUris) {
|
for (Uri uri : mSettingsUris) {
|
||||||
mResolver.registerContentObserver(uri, false, mSettingObserver);
|
mResolver.registerContentObserver(uri, false, mSettingObserver);
|
||||||
@@ -145,6 +142,9 @@ public class MultinetworkPolicyTracker {
|
|||||||
mContext.registerReceiverForAllUsers(mBroadcastReceiver, intentFilter,
|
mContext.registerReceiverForAllUsers(mBroadcastReceiver, intentFilter,
|
||||||
null /* broadcastPermission */, mHandler);
|
null /* broadcastPermission */, mHandler);
|
||||||
|
|
||||||
|
mContext.getSystemService(TelephonyManager.class).registerTelephonyCallback(
|
||||||
|
new HandlerExecutor(mHandler), new ActiveDataSubscriptionIdListener());
|
||||||
|
|
||||||
reevaluate();
|
reevaluate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import android.net.ConnectivitySettingsManager.NETWORK_AVOID_BAD_WIFI
|
|||||||
import android.net.ConnectivitySettingsManager.NETWORK_METERED_MULTIPATH_PREFERENCE
|
import android.net.ConnectivitySettingsManager.NETWORK_METERED_MULTIPATH_PREFERENCE
|
||||||
import android.net.util.MultinetworkPolicyTracker.ActiveDataSubscriptionIdListener
|
import android.net.util.MultinetworkPolicyTracker.ActiveDataSubscriptionIdListener
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import android.os.Handler
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.telephony.SubscriptionInfo
|
import android.telephony.SubscriptionInfo
|
||||||
import android.telephony.SubscriptionManager
|
import android.telephony.SubscriptionManager
|
||||||
@@ -40,6 +41,7 @@ import org.junit.After
|
|||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Assert.assertFalse
|
import org.junit.Assert.assertFalse
|
||||||
import org.junit.Assert.assertTrue
|
import org.junit.Assert.assertTrue
|
||||||
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.ArgumentCaptor
|
import org.mockito.ArgumentCaptor
|
||||||
@@ -48,6 +50,7 @@ import org.mockito.ArgumentMatchers.argThat
|
|||||||
import org.mockito.ArgumentMatchers.eq
|
import org.mockito.ArgumentMatchers.eq
|
||||||
import org.mockito.Mockito.any
|
import org.mockito.Mockito.any
|
||||||
import org.mockito.Mockito.doCallRealMethod
|
import org.mockito.Mockito.doCallRealMethod
|
||||||
|
import org.mockito.Mockito.doNothing
|
||||||
import org.mockito.Mockito.doReturn
|
import org.mockito.Mockito.doReturn
|
||||||
import org.mockito.Mockito.mock
|
import org.mockito.Mockito.mock
|
||||||
import org.mockito.Mockito.times
|
import org.mockito.Mockito.times
|
||||||
@@ -90,7 +93,8 @@ class MultinetworkPolicyTrackerTest {
|
|||||||
Settings.Global.putString(resolver, NETWORK_AVOID_BAD_WIFI, "1")
|
Settings.Global.putString(resolver, NETWORK_AVOID_BAD_WIFI, "1")
|
||||||
ConnectivityResources.setResourcesContextForTest(it)
|
ConnectivityResources.setResourcesContextForTest(it)
|
||||||
}
|
}
|
||||||
private val tracker = MultinetworkPolicyTracker(context, null /* handler */)
|
private val handler = mock(Handler::class.java)
|
||||||
|
private val tracker = MultinetworkPolicyTracker(context, handler)
|
||||||
|
|
||||||
private fun assertMultipathPreference(preference: Int) {
|
private fun assertMultipathPreference(preference: Int) {
|
||||||
Settings.Global.putString(resolver, NETWORK_METERED_MULTIPATH_PREFERENCE,
|
Settings.Global.putString(resolver, NETWORK_METERED_MULTIPATH_PREFERENCE,
|
||||||
@@ -99,6 +103,11 @@ class MultinetworkPolicyTrackerTest {
|
|||||||
assertEquals(preference, tracker.meteredMultipathPreference)
|
assertEquals(preference, tracker.meteredMultipathPreference)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setUp() {
|
||||||
|
tracker.start()
|
||||||
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
fun tearDown() {
|
fun tearDown() {
|
||||||
ConnectivityResources.setResourcesContextForTest(null)
|
ConnectivityResources.setResourcesContextForTest(null)
|
||||||
|
|||||||
Reference in New Issue
Block a user