Add getAvoidBadWifi system API

This helps remove the dependency on MultinetworkPolicyTracker from
IpClient.

Test: atest FrameworksNetTests NetworkStackTests
Bug: 112869080
Change-Id: If56791dbed564772f25a859f301b8b52d84e38a3
This commit is contained in:
Remi NGUYEN VAN
2019-01-20 20:35:06 +09:00
parent 5e135e2bdc
commit 27de63e494
3 changed files with 23 additions and 0 deletions

View File

@@ -3698,6 +3698,19 @@ public class ConnectivityManager {
}
}
/**
* Determine whether the device is configured to avoid bad wifi.
* @hide
*/
@SystemApi
public boolean getAvoidBadWifi() {
try {
return mService.getAvoidBadWifi();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
/**
* It is acceptable to briefly use multipath data to provide seamless connectivity for
* time-sensitive user-facing operations when the system default network is temporarily

View File

@@ -165,6 +165,7 @@ interface IConnectivityManager
void setAvoidUnvalidated(in Network network);
void startCaptivePortalApp(in Network network);
boolean getAvoidBadWifi();
int getMultipathPreference(in Network Network);
NetworkRequest getDefaultRequest();

View File

@@ -3183,6 +3183,15 @@ public class ConnectivityService extends IConnectivityManager.Stub
return mMultinetworkPolicyTracker.getAvoidBadWifi();
}
@Override
public boolean getAvoidBadWifi() {
if (!checkNetworkStackPermission()) {
throw new SecurityException("avoidBadWifi requires NETWORK_STACK permission");
}
return avoidBadWifi();
}
private void rematchForAvoidBadWifiUpdate() {
rematchAllNetworksAndRequests(null, 0);
for (NetworkAgentInfo nai: mNetworkAgentInfos.values()) {