Use registerSystemDefaultNetworkCallback to listen underlying network

This commit replaces requestNetwork with
registerSystemDefaultNetworkCallback to listen the underlying
network.

Previously, Vpn needs to create a request for default network.
Now, ConnectivityManager provides a new API which can listen the
underlying network. So use the new API -
registerSystemDefaultNetworkCallback instead.

Bug: 236409954
Test: atest FrameworksNetTests
Change-Id: Ic4e558009cbc6ef3d72fff00e8c30559070f6de8
This commit is contained in:
lucaslin
2022-08-16 05:21:56 +08:00
committed by Lucas Lin
parent e648d3cb91
commit 9613236148

View File

@@ -99,6 +99,7 @@ import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.FileUtils;
import android.os.Handler;
import android.os.IBinder;
import android.os.INetworkManagementService;
import android.os.Looper;
@@ -2775,26 +2776,18 @@ public class Vpn {
// When restricted to test networks, select any network with TRANSPORT_TEST. Since the
// creator of the profile and the test network creator both have MANAGE_TEST_NETWORKS,
// this is considered safe.
final NetworkRequest req;
if (mProfile.isRestrictedToTestNetworks()) {
req = new NetworkRequest.Builder()
final NetworkRequest req = new NetworkRequest.Builder()
.clearCapabilities()
.addTransportType(NetworkCapabilities.TRANSPORT_TEST)
.addCapability(NET_CAPABILITY_NOT_VPN)
.build();
mConnectivityManager.requestNetwork(req, mNetworkCallback);
} else {
// Basically, the request here is referring to the default request which is defined
// in ConnectivityService. Ideally, ConnectivityManager should provide an new API
// which can provide the status of physical network even though there is a virtual
// network. b/147280869 is used for tracking the new API.
// TODO: Use the new API to register default physical network.
req = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
mConnectivityManager.registerSystemDefaultNetworkCallback(mNetworkCallback,
new Handler(mLooper));
}
mConnectivityManager.requestNetwork(req, mNetworkCallback);
}
private boolean isActiveNetwork(@Nullable Network network) {