Loading services/core/java/com/android/server/ConnectivityService.java +5 −6 Original line number Diff line number Diff line Loading @@ -736,19 +736,18 @@ public class ConnectivityService extends IConnectivityManager.Stub } } final DetailedState state = DetailedState.DISCONNECTED; if (wasFirstNetwork || wasDefault) { maybeLogBroadcast(nai, state, type, wasDefault); mService.sendLegacyNetworkBroadcast(nai, state, type); maybeLogBroadcast(nai, DetailedState.DISCONNECTED, type, wasDefault); mService.sendLegacyNetworkBroadcast(nai, DetailedState.DISCONNECTED, type); } if (!list.isEmpty() && wasFirstNetwork) { if (DBG) log("Other network available for type " + type + ", sending connected broadcast"); final NetworkAgentInfo replacement = list.get(0); maybeLogBroadcast(replacement, state, type, mService.isDefaultNetwork(replacement)); mService.sendLegacyNetworkBroadcast(replacement, state, type); maybeLogBroadcast(replacement, DetailedState.CONNECTED, type, mService.isDefaultNetwork(replacement)); mService.sendLegacyNetworkBroadcast(replacement, DetailedState.CONNECTED, type); } } Loading tests/net/java/com/android/server/LegacyTypeTrackerTest.kt +22 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.net.ConnectivityManager.TYPE_ETHERNET import android.net.ConnectivityManager.TYPE_MOBILE import android.net.ConnectivityManager.TYPE_WIFI import android.net.ConnectivityManager.TYPE_WIMAX import android.net.NetworkInfo.DetailedState.CONNECTED import android.net.NetworkInfo.DetailedState.DISCONNECTED import androidx.test.filters.SmallTest import androidx.test.runner.AndroidJUnit4 import com.android.server.ConnectivityService.LegacyTypeTracker Loading @@ -32,8 +34,12 @@ import org.junit.Assert.fail import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.any import org.mockito.ArgumentMatchers.anyInt import org.mockito.Mockito.doReturn import org.mockito.Mockito.mock import org.mockito.Mockito.never import org.mockito.Mockito.reset import org.mockito.Mockito.verify const val UNSUPPORTED_TYPE = TYPE_WIMAX Loading Loading @@ -89,4 +95,20 @@ class LegacyTypeTrackerTest { mTracker.add(UNSUPPORTED_TYPE, mobileNai) assertNull(mTracker.getNetworkForType(UNSUPPORTED_TYPE)) } @Test fun testBroadcastOnDisconnect() { val mobileNai1 = mock(NetworkAgentInfo::class.java) val mobileNai2 = mock(NetworkAgentInfo::class.java) doReturn(false).`when`(mMockService).isDefaultNetwork(mobileNai1) mTracker.add(TYPE_MOBILE, mobileNai1) verify(mMockService).sendLegacyNetworkBroadcast(mobileNai1, CONNECTED, TYPE_MOBILE) reset(mMockService) doReturn(false).`when`(mMockService).isDefaultNetwork(mobileNai2) mTracker.add(TYPE_MOBILE, mobileNai2) verify(mMockService, never()).sendLegacyNetworkBroadcast(any(), any(), anyInt()) mTracker.remove(TYPE_MOBILE, mobileNai1, false /* wasDefault */) verify(mMockService).sendLegacyNetworkBroadcast(mobileNai1, DISCONNECTED, TYPE_MOBILE) verify(mMockService).sendLegacyNetworkBroadcast(mobileNai2, CONNECTED, TYPE_MOBILE) } } Loading
services/core/java/com/android/server/ConnectivityService.java +5 −6 Original line number Diff line number Diff line Loading @@ -736,19 +736,18 @@ public class ConnectivityService extends IConnectivityManager.Stub } } final DetailedState state = DetailedState.DISCONNECTED; if (wasFirstNetwork || wasDefault) { maybeLogBroadcast(nai, state, type, wasDefault); mService.sendLegacyNetworkBroadcast(nai, state, type); maybeLogBroadcast(nai, DetailedState.DISCONNECTED, type, wasDefault); mService.sendLegacyNetworkBroadcast(nai, DetailedState.DISCONNECTED, type); } if (!list.isEmpty() && wasFirstNetwork) { if (DBG) log("Other network available for type " + type + ", sending connected broadcast"); final NetworkAgentInfo replacement = list.get(0); maybeLogBroadcast(replacement, state, type, mService.isDefaultNetwork(replacement)); mService.sendLegacyNetworkBroadcast(replacement, state, type); maybeLogBroadcast(replacement, DetailedState.CONNECTED, type, mService.isDefaultNetwork(replacement)); mService.sendLegacyNetworkBroadcast(replacement, DetailedState.CONNECTED, type); } } Loading
tests/net/java/com/android/server/LegacyTypeTrackerTest.kt +22 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.net.ConnectivityManager.TYPE_ETHERNET import android.net.ConnectivityManager.TYPE_MOBILE import android.net.ConnectivityManager.TYPE_WIFI import android.net.ConnectivityManager.TYPE_WIMAX import android.net.NetworkInfo.DetailedState.CONNECTED import android.net.NetworkInfo.DetailedState.DISCONNECTED import androidx.test.filters.SmallTest import androidx.test.runner.AndroidJUnit4 import com.android.server.ConnectivityService.LegacyTypeTracker Loading @@ -32,8 +34,12 @@ import org.junit.Assert.fail import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.any import org.mockito.ArgumentMatchers.anyInt import org.mockito.Mockito.doReturn import org.mockito.Mockito.mock import org.mockito.Mockito.never import org.mockito.Mockito.reset import org.mockito.Mockito.verify const val UNSUPPORTED_TYPE = TYPE_WIMAX Loading Loading @@ -89,4 +95,20 @@ class LegacyTypeTrackerTest { mTracker.add(UNSUPPORTED_TYPE, mobileNai) assertNull(mTracker.getNetworkForType(UNSUPPORTED_TYPE)) } @Test fun testBroadcastOnDisconnect() { val mobileNai1 = mock(NetworkAgentInfo::class.java) val mobileNai2 = mock(NetworkAgentInfo::class.java) doReturn(false).`when`(mMockService).isDefaultNetwork(mobileNai1) mTracker.add(TYPE_MOBILE, mobileNai1) verify(mMockService).sendLegacyNetworkBroadcast(mobileNai1, CONNECTED, TYPE_MOBILE) reset(mMockService) doReturn(false).`when`(mMockService).isDefaultNetwork(mobileNai2) mTracker.add(TYPE_MOBILE, mobileNai2) verify(mMockService, never()).sendLegacyNetworkBroadcast(any(), any(), anyInt()) mTracker.remove(TYPE_MOBILE, mobileNai1, false /* wasDefault */) verify(mMockService).sendLegacyNetworkBroadcast(mobileNai1, DISCONNECTED, TYPE_MOBILE) verify(mMockService).sendLegacyNetworkBroadcast(mobileNai2, CONNECTED, TYPE_MOBILE) } }