diff --git a/framework/src/android/net/util/MultinetworkPolicyTracker.java b/framework/src/android/net/util/MultinetworkPolicyTracker.java index c1790c992c..2dcf932345 100644 --- a/framework/src/android/net/util/MultinetworkPolicyTracker.java +++ b/framework/src/android/net/util/MultinetworkPolicyTracker.java @@ -109,8 +109,6 @@ public class MultinetworkPolicyTracker { 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) { mContext = ctx; mResources = new ConnectivityResources(ctx); @@ -128,13 +126,12 @@ public class MultinetworkPolicyTracker { } }; - ctx.getSystemService(TelephonyManager.class).registerTelephonyCallback( - new HandlerExecutor(handler), new ActiveDataSubscriptionIdListener()); - updateAvoidBadWifi(); 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() { for (Uri uri : mSettingsUris) { mResolver.registerContentObserver(uri, false, mSettingObserver); @@ -145,6 +142,9 @@ public class MultinetworkPolicyTracker { mContext.registerReceiverForAllUsers(mBroadcastReceiver, intentFilter, null /* broadcastPermission */, mHandler); + mContext.getSystemService(TelephonyManager.class).registerTelephonyCallback( + new HandlerExecutor(mHandler), new ActiveDataSubscriptionIdListener()); + reevaluate(); } diff --git a/tests/unit/java/android/net/util/MultinetworkPolicyTrackerTest.kt b/tests/unit/java/android/net/util/MultinetworkPolicyTrackerTest.kt index 576b8d348e..0dbee5d7b0 100644 --- a/tests/unit/java/android/net/util/MultinetworkPolicyTrackerTest.kt +++ b/tests/unit/java/android/net/util/MultinetworkPolicyTrackerTest.kt @@ -26,6 +26,7 @@ import android.net.ConnectivitySettingsManager.NETWORK_AVOID_BAD_WIFI import android.net.ConnectivitySettingsManager.NETWORK_METERED_MULTIPATH_PREFERENCE import android.net.util.MultinetworkPolicyTracker.ActiveDataSubscriptionIdListener import android.os.Build +import android.os.Handler import android.provider.Settings import android.telephony.SubscriptionInfo import android.telephony.SubscriptionManager @@ -40,6 +41,7 @@ import org.junit.After import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue +import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentCaptor @@ -48,6 +50,7 @@ import org.mockito.ArgumentMatchers.argThat import org.mockito.ArgumentMatchers.eq import org.mockito.Mockito.any import org.mockito.Mockito.doCallRealMethod +import org.mockito.Mockito.doNothing import org.mockito.Mockito.doReturn import org.mockito.Mockito.mock import org.mockito.Mockito.times @@ -90,7 +93,8 @@ class MultinetworkPolicyTrackerTest { Settings.Global.putString(resolver, NETWORK_AVOID_BAD_WIFI, "1") 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) { Settings.Global.putString(resolver, NETWORK_METERED_MULTIPATH_PREFERENCE, @@ -99,6 +103,11 @@ class MultinetworkPolicyTrackerTest { assertEquals(preference, tracker.meteredMultipathPreference) } + @Before + fun setUp() { + tracker.start() + } + @After fun tearDown() { ConnectivityResources.setResourcesContextForTest(null)