Fix an argument to the legacy broadcast

Test: new test for this
Fixes: 62650382
Change-Id: I918b8271d3c3c058553ca888cb54cd36a6efba66
Merged-In: I0fc408d546ae9d72b7dd9415e502252b484d4329
Merged-In: I9282930106d1eee3274d9e5c4e89de60e929a0e6
This commit is contained in:
Chalard Jean
2019-04-11 14:09:07 +09:00
parent a55eb53346
commit e6a296dca5
2 changed files with 27 additions and 6 deletions

View File

@@ -735,19 +735,18 @@ public class ConnectivityService extends IConnectivityManager.Stub
} }
} }
final DetailedState state = DetailedState.DISCONNECTED;
if (wasFirstNetwork || wasDefault) { if (wasFirstNetwork || wasDefault) {
maybeLogBroadcast(nai, state, type, wasDefault); maybeLogBroadcast(nai, DetailedState.DISCONNECTED, type, wasDefault);
mService.sendLegacyNetworkBroadcast(nai, state, type); mService.sendLegacyNetworkBroadcast(nai, DetailedState.DISCONNECTED, type);
} }
if (!list.isEmpty() && wasFirstNetwork) { if (!list.isEmpty() && wasFirstNetwork) {
if (DBG) log("Other network available for type " + type + if (DBG) log("Other network available for type " + type +
", sending connected broadcast"); ", sending connected broadcast");
final NetworkAgentInfo replacement = list.get(0); final NetworkAgentInfo replacement = list.get(0);
maybeLogBroadcast(replacement, state, type, mService.isDefaultNetwork(replacement)); maybeLogBroadcast(replacement, DetailedState.CONNECTED, type,
mService.sendLegacyNetworkBroadcast(replacement, state, type); mService.isDefaultNetwork(replacement));
mService.sendLegacyNetworkBroadcast(replacement, DetailedState.CONNECTED, type);
} }
} }

View File

@@ -20,6 +20,8 @@ import android.net.ConnectivityManager.TYPE_ETHERNET
import android.net.ConnectivityManager.TYPE_MOBILE import android.net.ConnectivityManager.TYPE_MOBILE
import android.net.ConnectivityManager.TYPE_WIFI import android.net.ConnectivityManager.TYPE_WIFI
import android.net.ConnectivityManager.TYPE_WIMAX 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.filters.SmallTest
import androidx.test.runner.AndroidJUnit4 import androidx.test.runner.AndroidJUnit4
import com.android.server.ConnectivityService.LegacyTypeTracker import com.android.server.ConnectivityService.LegacyTypeTracker
@@ -32,8 +34,12 @@ import org.junit.Assert.fail
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.any import org.mockito.ArgumentMatchers.any
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mockito.doReturn import org.mockito.Mockito.doReturn
import org.mockito.Mockito.mock 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 const val UNSUPPORTED_TYPE = TYPE_WIMAX
@@ -89,4 +95,20 @@ class LegacyTypeTrackerTest {
mTracker.add(UNSUPPORTED_TYPE, mobileNai) mTracker.add(UNSUPPORTED_TYPE, mobileNai)
assertNull(mTracker.getNetworkForType(UNSUPPORTED_TYPE)) 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)
}
} }