From 27de63e4947e9000b6baba538b6ec7ef25aec1cf Mon Sep 17 00:00:00 2001 From: Remi NGUYEN VAN Date: Sun, 20 Jan 2019 20:35:06 +0900 Subject: [PATCH] Add getAvoidBadWifi system API This helps remove the dependency on MultinetworkPolicyTracker from IpClient. Test: atest FrameworksNetTests NetworkStackTests Bug: 112869080 Change-Id: If56791dbed564772f25a859f301b8b52d84e38a3 --- core/java/android/net/ConnectivityManager.java | 13 +++++++++++++ core/java/android/net/IConnectivityManager.aidl | 1 + .../com/android/server/ConnectivityService.java | 9 +++++++++ 3 files changed, 23 insertions(+) diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index cee3a409fc..c809ccad59 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -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 diff --git a/core/java/android/net/IConnectivityManager.aidl b/core/java/android/net/IConnectivityManager.aidl index 3d34574440..131925ec28 100644 --- a/core/java/android/net/IConnectivityManager.aidl +++ b/core/java/android/net/IConnectivityManager.aidl @@ -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(); diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 919a5ab4ee..fae7a8d7bf 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -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()) {