Merge "Clear UIDs when sharing NetworkCapabilties for ConnectivityDiagnostics." into rvc-dev
This commit is contained in:
@@ -7803,12 +7803,15 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
private void handleNetworkTestedWithExtras(
|
private void handleNetworkTestedWithExtras(
|
||||||
@NonNull ConnectivityReportEvent reportEvent, @NonNull PersistableBundle extras) {
|
@NonNull ConnectivityReportEvent reportEvent, @NonNull PersistableBundle extras) {
|
||||||
final NetworkAgentInfo nai = reportEvent.mNai;
|
final NetworkAgentInfo nai = reportEvent.mNai;
|
||||||
|
final NetworkCapabilities networkCapabilities =
|
||||||
|
new NetworkCapabilities(nai.networkCapabilities);
|
||||||
|
clearNetworkCapabilitiesUids(networkCapabilities);
|
||||||
final ConnectivityReport report =
|
final ConnectivityReport report =
|
||||||
new ConnectivityReport(
|
new ConnectivityReport(
|
||||||
reportEvent.mNai.network,
|
reportEvent.mNai.network,
|
||||||
reportEvent.mTimestampMillis,
|
reportEvent.mTimestampMillis,
|
||||||
nai.linkProperties,
|
nai.linkProperties,
|
||||||
nai.networkCapabilities,
|
networkCapabilities,
|
||||||
extras);
|
extras);
|
||||||
final List<IConnectivityDiagnosticsCallback> results =
|
final List<IConnectivityDiagnosticsCallback> results =
|
||||||
getMatchingPermissionedCallbacks(nai);
|
getMatchingPermissionedCallbacks(nai);
|
||||||
@@ -7824,13 +7827,16 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
private void handleDataStallSuspected(
|
private void handleDataStallSuspected(
|
||||||
@NonNull NetworkAgentInfo nai, long timestampMillis, int detectionMethod,
|
@NonNull NetworkAgentInfo nai, long timestampMillis, int detectionMethod,
|
||||||
@NonNull PersistableBundle extras) {
|
@NonNull PersistableBundle extras) {
|
||||||
|
final NetworkCapabilities networkCapabilities =
|
||||||
|
new NetworkCapabilities(nai.networkCapabilities);
|
||||||
|
clearNetworkCapabilitiesUids(networkCapabilities);
|
||||||
final DataStallReport report =
|
final DataStallReport report =
|
||||||
new DataStallReport(
|
new DataStallReport(
|
||||||
nai.network,
|
nai.network,
|
||||||
timestampMillis,
|
timestampMillis,
|
||||||
detectionMethod,
|
detectionMethod,
|
||||||
nai.linkProperties,
|
nai.linkProperties,
|
||||||
nai.networkCapabilities,
|
networkCapabilities,
|
||||||
extras);
|
extras);
|
||||||
final List<IConnectivityDiagnosticsCallback> results =
|
final List<IConnectivityDiagnosticsCallback> results =
|
||||||
getMatchingPermissionedCallbacks(nai);
|
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(
|
private List<IConnectivityDiagnosticsCallback> getMatchingPermissionedCallbacks(
|
||||||
@NonNull NetworkAgentInfo nai) {
|
@NonNull NetworkAgentInfo nai) {
|
||||||
final List<IConnectivityDiagnosticsCallback> results = new ArrayList<>();
|
final List<IConnectivityDiagnosticsCallback> results = new ArrayList<>();
|
||||||
|
|||||||
@@ -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.MATCH_ANY_USER;
|
||||||
import static android.content.pm.PackageManager.PERMISSION_DENIED;
|
import static android.content.pm.PackageManager.PERMISSION_DENIED;
|
||||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
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.ACTION_CAPTIVE_PORTAL_SIGN_IN;
|
||||||
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
|
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
|
||||||
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION_SUPL;
|
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.junit.Assert.fail;
|
||||||
import static org.mockito.ArgumentMatchers.anyLong;
|
import static org.mockito.ArgumentMatchers.anyLong;
|
||||||
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.ArgumentMatchers.argThat;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.ArgumentMatchers.startsWith;
|
import static org.mockito.ArgumentMatchers.startsWith;
|
||||||
import static org.mockito.Matchers.anyInt;
|
import static org.mockito.Matchers.anyInt;
|
||||||
@@ -6870,8 +6869,13 @@ public class ConnectivityServiceTest {
|
|||||||
HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
|
HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
|
||||||
|
|
||||||
// Verify onConnectivityReport fired
|
// Verify onConnectivityReport fired
|
||||||
verify(mConnectivityDiagnosticsCallback)
|
verify(mConnectivityDiagnosticsCallback).onConnectivityReport(
|
||||||
.onConnectivityReport(any(ConnectivityReport.class));
|
argThat(report -> {
|
||||||
|
final NetworkCapabilities nc = report.getNetworkCapabilities();
|
||||||
|
return nc.getUids() == null
|
||||||
|
&& nc.getAdministratorUids().isEmpty()
|
||||||
|
&& nc.getOwnerUid() == Process.INVALID_UID;
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -6886,7 +6890,13 @@ public class ConnectivityServiceTest {
|
|||||||
HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
|
HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
|
||||||
|
|
||||||
// Verify onDataStallSuspected fired
|
// 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
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user