Invoke onConnectivityReport on registering ConnectivityDiagnostics.
This change updates the behavior for registering ConnectivityDiagnosticsCallbacks. Now, after a successful register() call, callbacks will receive cached ConnectivityReports for all matching, permissioned networks. This allows registrants to be updated with the network state for their networks without having to wait for the next network validation. Bug: 147849853 Test: atest FrameworksNetTests Change-Id: I924ba8fdcc847f453557021591bde38602fe089c Merged-In: I924ba8fdcc847f453557021591bde38602fe089c (cherry picked from commit 95ec0b206b759e1d26bc1dbb2255a515bb24358a)
This commit is contained in:
@@ -317,6 +317,8 @@ public class ConnectivityServiceTest {
|
||||
private static final String TEST_PACKAGE_NAME = "com.android.test.package";
|
||||
private static final String[] EMPTY_STRING_ARRAY = new String[0];
|
||||
|
||||
private static final String INTERFACE_NAME = "interface";
|
||||
|
||||
private MockContext mServiceContext;
|
||||
private HandlerThread mCsHandlerThread;
|
||||
private ConnectivityService mService;
|
||||
@@ -6915,6 +6917,38 @@ public class ConnectivityServiceTest {
|
||||
mContext.getOpPackageName()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRegisterConnectivityDiagnosticsCallbackCallsOnConnectivityReport()
|
||||
throws Exception {
|
||||
// Set up the Network, which leads to a ConnectivityReport being cached for the network.
|
||||
final TestNetworkCallback callback = new TestNetworkCallback();
|
||||
mCm.registerDefaultNetworkCallback(callback);
|
||||
final LinkProperties linkProperties = new LinkProperties();
|
||||
linkProperties.setInterfaceName(INTERFACE_NAME);
|
||||
mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR, linkProperties);
|
||||
mCellNetworkAgent.connect(true);
|
||||
callback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
|
||||
callback.assertNoCallback();
|
||||
|
||||
final NetworkRequest request = new NetworkRequest.Builder().build();
|
||||
when(mConnectivityDiagnosticsCallback.asBinder()).thenReturn(mIBinder);
|
||||
|
||||
mServiceContext.setPermission(
|
||||
android.Manifest.permission.NETWORK_STACK, PERMISSION_GRANTED);
|
||||
|
||||
mService.registerConnectivityDiagnosticsCallback(
|
||||
mConnectivityDiagnosticsCallback, request, mContext.getPackageName());
|
||||
|
||||
// Block until all other events are done processing.
|
||||
HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
|
||||
|
||||
verify(mConnectivityDiagnosticsCallback)
|
||||
.onConnectivityReportAvailable(argThat(report -> {
|
||||
return INTERFACE_NAME.equals(report.getLinkProperties().getInterfaceName())
|
||||
&& report.getNetworkCapabilities().hasTransport(TRANSPORT_CELLULAR);
|
||||
}));
|
||||
}
|
||||
|
||||
private void setUpConnectivityDiagnosticsCallback() throws Exception {
|
||||
final NetworkRequest request = new NetworkRequest.Builder().build();
|
||||
when(mConnectivityDiagnosticsCallback.asBinder()).thenReturn(mIBinder);
|
||||
|
||||
Reference in New Issue
Block a user