Merge "Do not query CS in NetworkProvider constructor"

This commit is contained in:
Remi NGUYEN VAN
2020-12-03 01:48:01 +00:00
committed by Gerrit Code Review
2 changed files with 14 additions and 7 deletions

View File

@@ -63,7 +63,7 @@ public class NetworkProvider {
private final Messenger mMessenger; private final Messenger mMessenger;
private final String mName; private final String mName;
private final ConnectivityManager mCm; private final Context mContext;
private int mProviderId = ID_NONE; private int mProviderId = ID_NONE;
@@ -78,8 +78,6 @@ public class NetworkProvider {
*/ */
@SystemApi @SystemApi
public NetworkProvider(@NonNull Context context, @NonNull Looper looper, @NonNull String name) { public NetworkProvider(@NonNull Context context, @NonNull Looper looper, @NonNull String name) {
mCm = ConnectivityManager.from(context);
Handler handler = new Handler(looper) { Handler handler = new Handler(looper) {
@Override @Override
public void handleMessage(Message m) { public void handleMessage(Message m) {
@@ -95,6 +93,7 @@ public class NetworkProvider {
} }
} }
}; };
mContext = context;
mMessenger = new Messenger(handler); mMessenger = new Messenger(handler);
mName = name; mName = name;
} }
@@ -158,6 +157,6 @@ public class NetworkProvider {
@SystemApi @SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_FACTORY) @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY)
public void declareNetworkRequestUnfulfillable(@NonNull NetworkRequest request) { public void declareNetworkRequestUnfulfillable(@NonNull NetworkRequest request) {
mCm.declareNetworkRequestUnfulfillable(request); ConnectivityManager.from(mContext).declareNetworkRequestUnfulfillable(request);
} }
} }

View File

@@ -33,6 +33,9 @@ import org.junit.After
import org.junit.Before 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.Mockito.doReturn
import org.mockito.Mockito.mock
import org.mockito.Mockito.verifyNoMoreInteractions
import java.util.UUID import java.util.UUID
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlin.test.assertNotEquals import kotlin.test.assertNotEquals
@@ -87,8 +90,8 @@ class NetworkProviderTest {
) = seenEvents.poll(DEFAULT_TIMEOUT_MS) { it is T && predicate(it) } ) = seenEvents.poll(DEFAULT_TIMEOUT_MS) { it is T && predicate(it) }
} }
private fun createNetworkProvider(): TestNetworkProvider { private fun createNetworkProvider(ctx: Context = context): TestNetworkProvider {
return TestNetworkProvider(context, mHandlerThread.looper) return TestNetworkProvider(ctx, mHandlerThread.looper)
} }
@Test @Test
@@ -169,7 +172,12 @@ class NetworkProviderTest {
@Test @Test
fun testDeclareNetworkRequestUnfulfillable() { fun testDeclareNetworkRequestUnfulfillable() {
val provider = createNetworkProvider() val mockContext = mock(Context::class.java)
val provider = createNetworkProvider(mockContext)
// ConnectivityManager not required at creation time
verifyNoMoreInteractions(mockContext)
doReturn(mCm).`when`(mockContext).getSystemService(Context.CONNECTIVITY_SERVICE)
mCm.registerNetworkProvider(provider) mCm.registerNetworkProvider(provider)
val specifier = StringNetworkSpecifier(UUID.randomUUID().toString()) val specifier = StringNetworkSpecifier(UUID.randomUUID().toString())