Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8977dd0b authored by Cody Kesting's avatar Cody Kesting Committed by Gerrit Code Review
Browse files

Merge "Clear UIDs when sharing NetworkCapabilties for ConnectivityDiagnostics."

parents ea11eb2a 3de24326
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -7828,12 +7828,15 @@ public class ConnectivityService extends IConnectivityManager.Stub
    private void handleNetworkTestedWithExtras(
            @NonNull ConnectivityReportEvent reportEvent, @NonNull PersistableBundle extras) {
        final NetworkAgentInfo nai = reportEvent.mNai;
        final NetworkCapabilities networkCapabilities =
                new NetworkCapabilities(nai.networkCapabilities);
        clearNetworkCapabilitiesUids(networkCapabilities);
        final ConnectivityReport report =
                new ConnectivityReport(
                        reportEvent.mNai.network,
                        reportEvent.mTimestampMillis,
                        nai.linkProperties,
                        nai.networkCapabilities,
                        networkCapabilities,
                        extras);
        final List<IConnectivityDiagnosticsCallback> results =
                getMatchingPermissionedCallbacks(nai);
@@ -7849,13 +7852,16 @@ public class ConnectivityService extends IConnectivityManager.Stub
    private void handleDataStallSuspected(
            @NonNull NetworkAgentInfo nai, long timestampMillis, int detectionMethod,
            @NonNull PersistableBundle extras) {
        final NetworkCapabilities networkCapabilities =
                new NetworkCapabilities(nai.networkCapabilities);
        clearNetworkCapabilitiesUids(networkCapabilities);
        final DataStallReport report =
                new DataStallReport(
                        nai.network,
                        timestampMillis,
                        detectionMethod,
                        nai.linkProperties,
                        nai.networkCapabilities,
                        networkCapabilities,
                        extras);
        final List<IConnectivityDiagnosticsCallback> results =
                getMatchingPermissionedCallbacks(nai);
@@ -7881,6 +7887,12 @@ public class ConnectivityService extends IConnectivityManager.Stub
        }
    }

    private void clearNetworkCapabilitiesUids(@NonNull NetworkCapabilities nc) {
        nc.setUids(null);
        nc.setAdministratorUids(Collections.EMPTY_LIST);
        nc.setOwnerUid(Process.INVALID_UID);
    }

    private List<IConnectivityDiagnosticsCallback> getMatchingPermissionedCallbacks(
            @NonNull NetworkAgentInfo nai) {
        final List<IConnectivityDiagnosticsCallback> results = new ArrayList<>();
+15 −5
Original line number Diff line number Diff line
@@ -23,8 +23,6 @@ import static android.content.pm.PackageManager.GET_PERMISSIONS;
import static android.content.pm.PackageManager.MATCH_ANY_USER;
import static android.content.pm.PackageManager.PERMISSION_DENIED;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.net.ConnectivityDiagnosticsManager.ConnectivityReport;
import static android.net.ConnectivityDiagnosticsManager.DataStallReport;
import static android.net.ConnectivityManager.ACTION_CAPTIVE_PORTAL_SIGN_IN;
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION_SUPL;
@@ -100,6 +98,7 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.startsWith;
import static org.mockito.Matchers.anyInt;
@@ -6875,8 +6874,13 @@ public class ConnectivityServiceTest {
        HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);

        // Verify onConnectivityReport fired
        verify(mConnectivityDiagnosticsCallback)
                .onConnectivityReport(any(ConnectivityReport.class));
        verify(mConnectivityDiagnosticsCallback).onConnectivityReport(
                argThat(report -> {
                    final NetworkCapabilities nc = report.getNetworkCapabilities();
                    return nc.getUids() == null
                            && nc.getAdministratorUids().isEmpty()
                            && nc.getOwnerUid() == Process.INVALID_UID;
                }));
    }

    @Test
@@ -6891,7 +6895,13 @@ public class ConnectivityServiceTest {
        HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);

        // Verify onDataStallSuspected fired
        verify(mConnectivityDiagnosticsCallback).onDataStallSuspected(any(DataStallReport.class));
        verify(mConnectivityDiagnosticsCallback).onDataStallSuspected(
                argThat(report -> {
                    final NetworkCapabilities nc = report.getNetworkCapabilities();
                    return nc.getUids() == null
                            && nc.getAdministratorUids().isEmpty()
                            && nc.getOwnerUid() == Process.INVALID_UID;
                }));
    }

    @Test