summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShirish Kalele <kalele@google.com>2015-07-29 17:31:34 -0700
committerShirish Kalele <kalele@google.com>2015-07-30 14:27:41 -0700
commit8be2ac8cec40a2000715849b627642bdc87c10b3 (patch)
tree1f5e16fa4870cd850bb6f53cd59ac8a1c976a677
parentc6b1ed46dd5fe44da9fca8959f062e7bf6a7a800 (diff)
downloadwifi-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.java52
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);