Fire ConnectivityDiagnostics callbacks on Connectivity reported.
When ConnectivityService#reportNetworkTested is called, the platform needs to fire ConnectivityDiagnostics callbacks for registered callbacks that are permissioned for the network being reported on. This adds a new event to ConnectivityDiagnosticsHandler for invoking these callbacks. Bug: 143187964 Test: compiles Test: atest CtsNetTestCases ConnectivityServiceTest Change-Id: Icc6bcf7a2411133d8ecd7477bc351dad9333f24f Merged-In: Icc6bcf7a2411133d8ecd7477bc351dad9333f24f
This commit is contained in:
@@ -6609,8 +6609,7 @@ public class ConnectivityServiceTest {
|
||||
mServiceContext.setPermission(perm, PERMISSION_GRANTED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConnectivityDiagnosticsCallbackOnConnectivityReport() throws Exception {
|
||||
private void setUpConnectivityDiagnosticsCallback() throws Exception {
|
||||
final NetworkRequest request = new NetworkRequest.Builder().build();
|
||||
when(mConnectivityDiagnosticsCallback.asBinder()).thenReturn(mIBinder);
|
||||
|
||||
@@ -6630,6 +6629,11 @@ public class ConnectivityServiceTest {
|
||||
mCellNetworkAgent.connect(true);
|
||||
callback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
|
||||
callback.assertNoCallback();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConnectivityDiagnosticsCallbackOnConnectivityReport() throws Exception {
|
||||
setUpConnectivityDiagnosticsCallback();
|
||||
|
||||
// Wait for onConnectivityReport to fire
|
||||
verify(mConnectivityDiagnosticsCallback, timeout(TIMEOUT_MS))
|
||||
@@ -6638,25 +6642,7 @@ public class ConnectivityServiceTest {
|
||||
|
||||
@Test
|
||||
public void testConnectivityDiagnosticsCallbackOnDataStallSuspected() throws Exception {
|
||||
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);
|
||||
|
||||
// Connect the cell agent verify that it notifies TestNetworkCallback that it is available
|
||||
final TestNetworkCallback callback = new TestNetworkCallback();
|
||||
mCm.registerDefaultNetworkCallback(callback);
|
||||
mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR);
|
||||
mCellNetworkAgent.connect(true);
|
||||
callback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
|
||||
callback.assertNoCallback();
|
||||
setUpConnectivityDiagnosticsCallback();
|
||||
|
||||
// Trigger notifyDataStallSuspected() on the INetworkMonitorCallbacks instance in the
|
||||
// cellular network agent
|
||||
@@ -6666,4 +6652,24 @@ public class ConnectivityServiceTest {
|
||||
verify(mConnectivityDiagnosticsCallback, timeout(TIMEOUT_MS))
|
||||
.onDataStallSuspected(any(DataStallReport.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConnectivityDiagnosticsCallbackOnConnectivityReported() throws Exception {
|
||||
setUpConnectivityDiagnosticsCallback();
|
||||
|
||||
final Network n = mCellNetworkAgent.getNetwork();
|
||||
final boolean hasConnectivity = true;
|
||||
mService.reportNetworkConnectivity(n, hasConnectivity);
|
||||
|
||||
// Wait for onNetworkConnectivityReported to fire
|
||||
verify(mConnectivityDiagnosticsCallback, timeout(TIMEOUT_MS))
|
||||
.onNetworkConnectivityReported(eq(n), eq(hasConnectivity));
|
||||
|
||||
final boolean noConnectivity = false;
|
||||
mService.reportNetworkConnectivity(n, noConnectivity);
|
||||
|
||||
// Wait for onNetworkConnectivityReported to fire
|
||||
verify(mConnectivityDiagnosticsCallback, timeout(TIMEOUT_MS))
|
||||
.onNetworkConnectivityReported(eq(n), eq(noConnectivity));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user