Merge "Prevent NPEs when registering/unregistering ConnDiags CBs." am: 5805d3cfd2 am: 5c5ff18089

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1761210

Change-Id: Ie5209e824f510d7866e74ce61e4b04e4dd8cd84e
This commit is contained in:
Benedict Wong
2021-08-12 21:01:17 +00:00
committed by Automerger Merge Worker
2 changed files with 56 additions and 0 deletions

View File

@@ -9524,6 +9524,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
@NonNull IConnectivityDiagnosticsCallback callback,
@NonNull NetworkRequest request,
@NonNull String callingPackageName) {
Objects.requireNonNull(callback, "callback must not be null");
Objects.requireNonNull(request, "request must not be null");
Objects.requireNonNull(callingPackageName, "callingPackageName must not be null");
if (request.legacyType != TYPE_NONE) {
throw new IllegalArgumentException("ConnectivityManager.TYPE_* are deprecated."
+ " Please use NetworkCapabilities instead.");
@@ -9572,6 +9576,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
@Override
public void simulateDataStall(int detectionMethod, long timestampMillis,
@NonNull Network network, @NonNull PersistableBundle extras) {
Objects.requireNonNull(network, "network must not be null");
Objects.requireNonNull(extras, "extras must not be null");
enforceAnyPermissionOf(android.Manifest.permission.MANAGE_TEST_NETWORKS,
android.Manifest.permission.NETWORK_STACK);
final NetworkCapabilities nc = getNetworkCapabilitiesInternal(network);

View File

@@ -204,6 +204,7 @@ import android.content.res.Resources;
import android.location.LocationManager;
import android.net.CaptivePortalData;
import android.net.ConnectionInfo;
import android.net.ConnectivityDiagnosticsManager.DataStallReport;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback;
import android.net.ConnectivityManager.PacketKeepalive;
@@ -285,6 +286,7 @@ import android.os.Messenger;
import android.os.Parcel;
import android.os.ParcelFileDescriptor;
import android.os.Parcelable;
import android.os.PersistableBundle;
import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceSpecificException;
@@ -10257,6 +10259,35 @@ public class ConnectivityServiceTest {
assertTrue(mService.mConnectivityDiagnosticsCallbacks.containsKey(mIBinder));
}
@Test(expected = NullPointerException.class)
public void testRegisterConnectivityDiagnosticsCallbackNullCallback() {
mService.registerConnectivityDiagnosticsCallback(
null /* callback */,
new NetworkRequest.Builder().build(),
mContext.getPackageName());
}
@Test(expected = NullPointerException.class)
public void testRegisterConnectivityDiagnosticsCallbackNullNetworkRequest() {
mService.registerConnectivityDiagnosticsCallback(
mConnectivityDiagnosticsCallback,
null /* request */,
mContext.getPackageName());
}
@Test(expected = NullPointerException.class)
public void testRegisterConnectivityDiagnosticsCallbackNullPackageName() {
mService.registerConnectivityDiagnosticsCallback(
mConnectivityDiagnosticsCallback,
new NetworkRequest.Builder().build(),
null /* callingPackageName */);
}
@Test(expected = NullPointerException.class)
public void testUnregisterConnectivityDiagnosticsCallbackNullPackageName() {
mService.unregisterConnectivityDiagnosticsCallback(null /* callback */);
}
public NetworkAgentInfo fakeMobileNai(NetworkCapabilities nc) {
final NetworkCapabilities cellNc = new NetworkCapabilities.Builder(nc)
.addTransportType(TRANSPORT_CELLULAR).build();
@@ -10567,6 +10598,24 @@ public class ConnectivityServiceTest {
areConnDiagCapsRedacted(report.getNetworkCapabilities())));
}
@Test(expected = NullPointerException.class)
public void testSimulateDataStallNullNetwork() {
mService.simulateDataStall(
DataStallReport.DETECTION_METHOD_DNS_EVENTS,
0L /* timestampMillis */,
null /* network */,
new PersistableBundle());
}
@Test(expected = NullPointerException.class)
public void testSimulateDataStallNullPersistableBundle() {
mService.simulateDataStall(
DataStallReport.DETECTION_METHOD_DNS_EVENTS,
0L /* timestampMillis */,
mock(Network.class),
null /* extras */);
}
@Test
public void testRouteAddDeleteUpdate() throws Exception {
final NetworkRequest request = new NetworkRequest.Builder().build();