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

Commit 4c8a758f authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Clear UIDs when sharing NetworkCapabilties for...

Merge "Clear UIDs when sharing NetworkCapabilties for ConnectivityDiagnostics." into rvc-dev am: a2065382 am: bfb42aca am: 7fafc231

Change-Id: I8f563a96259d4e9cbe51f6bcb237a048d67d7a84
parents a1ed705c 7fafc231
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -7803,12 +7803,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);
@@ -7824,13 +7827,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);
@@ -7856,6 +7862,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;
@@ -6870,8 +6869,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
@@ -6886,7 +6890,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