Merge "Do not query CS in NetworkProvider constructor" am: bfc3c02f34

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1512873

Change-Id: I227076074a2d58a4b9e5e8aaa972c6338887f568
This commit is contained in:
Remi NGUYEN VAN
2020-12-03 02:17:16 +00:00
committed by Automerger Merge Worker
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())