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:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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())
|
||||||
|
|||||||
Reference in New Issue
Block a user