Merge "Restriction changes of #simulateDataStall"
This commit is contained in:
@@ -10734,6 +10734,18 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
callback));
|
||||
}
|
||||
|
||||
private boolean hasUnderlyingTestNetworks(NetworkCapabilities nc) {
|
||||
final List<Network> underlyingNetworks = nc.getUnderlyingNetworks();
|
||||
if (underlyingNetworks == null) return false;
|
||||
|
||||
for (Network network : underlyingNetworks) {
|
||||
if (getNetworkCapabilitiesInternal(network).hasTransport(TRANSPORT_TEST)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void simulateDataStall(int detectionMethod, long timestampMillis,
|
||||
@NonNull Network network, @NonNull PersistableBundle extras) {
|
||||
@@ -10744,14 +10756,18 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
android.Manifest.permission.MANAGE_TEST_NETWORKS,
|
||||
android.Manifest.permission.NETWORK_STACK);
|
||||
final NetworkCapabilities nc = getNetworkCapabilitiesInternal(network);
|
||||
if (!nc.hasTransport(TRANSPORT_TEST)) {
|
||||
throw new SecurityException("Data Stall simulation is only possible for test networks");
|
||||
if (!nc.hasTransport(TRANSPORT_TEST) && !hasUnderlyingTestNetworks(nc)) {
|
||||
throw new SecurityException(
|
||||
"Data Stall simulation is only possible for test networks or networks built on"
|
||||
+ " top of test networks");
|
||||
}
|
||||
|
||||
final NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(network);
|
||||
if (nai == null || nai.creatorUid != mDeps.getCallingUid()) {
|
||||
throw new SecurityException("Data Stall simulation is only possible for network "
|
||||
+ "creators");
|
||||
if (nai == null
|
||||
|| (nai.creatorUid != mDeps.getCallingUid()
|
||||
&& nai.creatorUid != Process.SYSTEM_UID)) {
|
||||
throw new SecurityException(
|
||||
"Data Stall simulation is only possible for network " + "creators");
|
||||
}
|
||||
|
||||
// Instead of passing the data stall directly to the ConnectivityDiagnostics handler, treat
|
||||
|
||||
Reference in New Issue
Block a user