diff options
author | Shirish Kalele <kalele@google.com> | 2015-07-29 17:31:34 -0700 |
---|---|---|
committer | Shirish Kalele <kalele@google.com> | 2015-07-30 14:27:41 -0700 |
commit | 8be2ac8cec40a2000715849b627642bdc87c10b3 (patch) | |
tree | 1f5e16fa4870cd850bb6f53cd59ac8a1c976a677 | |
parent | c6b1ed46dd5fe44da9fca8959f062e7bf6a7a800 (diff) | |
download | wifi-8be2ac8cec40a2000715849b627642bdc87c10b3.tar.gz |
Allow active network scorer access to scan results.
BTW, AS corrected the import order of a lot of imports. Let me
know if you want it restored.
Bug: 22777873
Change-Id: Ia6ad069b83ecf9c0f07a620dbc98c85161a8e396
-rw-r--r-- | service/java/com/android/server/wifi/WifiServiceImpl.java | 52 |
1 files changed, 31 insertions, 21 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java index 1b52a45fe..0bfda17a0 100644 --- a/service/java/com/android/server/wifi/WifiServiceImpl.java +++ b/service/java/com/android/server/wifi/WifiServiceImpl.java @@ -30,14 +30,23 @@ import android.database.ContentObserver; import android.net.ConnectivityManager; import android.net.DhcpInfo; import android.net.DhcpResults; -import android.net.IpConfiguration.ProxySettings; -import android.net.LinkAddress; import android.net.Network; +import android.net.NetworkScorerAppManager; import android.net.NetworkUtils; -import android.net.RouteInfo; import android.net.Uri; -import android.net.wifi.*; +import android.net.wifi.BatchedScanResult; +import android.net.wifi.BatchedScanSettings; import android.net.wifi.IWifiManager; +import android.net.wifi.ScanResult; +import android.net.wifi.ScanSettings; +import android.net.wifi.WifiActivityEnergyInfo; +import android.net.wifi.WifiChannel; +import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiConnectionStatistics; +import android.net.wifi.WifiEnterpriseConfig; +import android.net.wifi.WifiInfo; +import android.net.wifi.WifiLinkLayerStats; +import android.net.wifi.WifiManager; import android.os.AsyncTask; import android.os.Binder; import android.os.Build; @@ -58,16 +67,23 @@ import android.text.TextUtils; import android.util.Log; import android.util.Slog; -import java.io.FileNotFoundException; +import com.android.internal.R; +import com.android.internal.app.IBatteryStats; +import com.android.internal.telephony.TelephonyIntents; +import com.android.internal.util.AsyncChannel; +import com.android.server.am.BatteryStatsService; +import com.android.server.wifi.configparse.ConfigBuilder; + +import org.xml.sax.SAXException; + import java.io.BufferedReader; import java.io.FileDescriptor; +import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; -import java.lang.Override; -import java.net.InetAddress; import java.net.Inet4Address; -import java.net.URISyntaxException; +import java.net.InetAddress; import java.security.GeneralSecurityException; import java.security.KeyStore; import java.security.cert.CertPath; @@ -80,15 +96,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import com.android.internal.R; -import com.android.internal.app.IBatteryStats; -import com.android.internal.telephony.TelephonyIntents; -import com.android.internal.util.AsyncChannel; -import com.android.server.am.BatteryStatsService; -import com.android.server.wifi.configparse.ConfigBuilder; - -import org.xml.sax.SAXException; - import static com.android.server.wifi.WifiController.CMD_AIRPLANE_TOGGLED; import static com.android.server.wifi.WifiController.CMD_BATTERY_CHANGED; import static com.android.server.wifi.WifiController.CMD_EMERGENCY_MODE_CHANGED; @@ -813,7 +820,7 @@ public final class WifiServiceImpl extends IWifiManager.Stub { public int addOrUpdateNetwork(WifiConfiguration config) { enforceChangePermission(); if (isValid(config) && isValidPasspoint(config)) { - + WifiEnterpriseConfig enterpriseConfig = config.enterpriseConfig; if (config.isPasspoint() && @@ -948,13 +955,16 @@ public final class WifiServiceImpl extends IWifiManager.Stub { int userId = UserHandle.getCallingUserId(); int uid = Binder.getCallingUid(); boolean canReadPeerMacAddresses = checkPeersMacAddress(); + boolean isActiveNetworkScorer = + NetworkScorerAppManager.isCallerActiveScorer(mContext, uid); boolean hasInteractUsersFull = checkInteractAcrossUsersFull(); long ident = Binder.clearCallingIdentity(); try { - if (!canReadPeerMacAddresses && !isLocationEnabled()) { + if (!canReadPeerMacAddresses && !isActiveNetworkScorer + && !isLocationEnabled()) { return new ArrayList<ScanResult>(); } - if (!canReadPeerMacAddresses + if (!canReadPeerMacAddresses && !isActiveNetworkScorer && !checkCallerHasLocationPermission(callingPackage, uid)) { return new ArrayList<ScanResult>(); } @@ -1940,7 +1950,7 @@ public final class WifiServiceImpl extends IWifiManager.Stub { } } } - + /* private methods */ static boolean logAndReturnFalse(String s) { Log.d(TAG, s); |