summaryrefslogtreecommitdiffstats
path: root/service/java/com/android
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2019-05-06 14:58:14 -0700
committerRoshan Pius <rpius@google.com>2019-05-07 14:14:13 +0000
commitcf347721b74cbb08777e80ab719cf06b415a700e (patch)
treedfd83261f0bdb3d82dcce90982781238408c001a /service/java/com/android
parent5e8961db0f7866b354c2c1a213267ee1d32185ea (diff)
downloadandroid_frameworks_opt_net_wifi-cf347721b74cbb08777e80ab719cf06b415a700e.tar.gz
android_frameworks_opt_net_wifi-cf347721b74cbb08777e80ab719cf06b415a700e.tar.bz2
android_frameworks_opt_net_wifi-cf347721b74cbb08777e80ab719cf06b415a700e.zip
WifiServiceImpl: Change exception mechanism for legacy APIs
Bug: 132090110 Test: atest com.android.server.wifi Change-Id: I24cb141b60168c5a357068b7988888da4639bedd
Diffstat (limited to 'service/java/com/android')
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java15
-rw-r--r--service/java/com/android/server/wifi/util/WifiPermissionsUtil.java14
2 files changed, 15 insertions, 14 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index 66bf8855c..b18ec003c 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -54,7 +54,6 @@ import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ParceledListSlice;
-import android.content.pm.ResolveInfo;
import android.database.ContentObserver;
import android.net.DhcpInfo;
import android.net.DhcpResults;
@@ -139,7 +138,6 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
/**
@@ -774,17 +772,6 @@ public class WifiServiceImpl extends BaseWifiService {
|| dpmi.isActiveAdminWithPolicy(uid, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
}
- // Helper method to check if the entity initiating the binder call is the default car dock app.
- private boolean isDefaultCarDock(String packageName) {
- final Intent intent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_CAR_DOCK);
- final ResolveInfo ri = mContext.getPackageManager().resolveActivity(
- intent, PackageManager.GET_META_DATA | PackageManager.MATCH_DEFAULT_ONLY);
- if (ri == null || ri.activityInfo == null) {
- return false;
- }
- return Objects.equals(packageName, ri.activityInfo.packageName);
- }
-
private void enforceNetworkSettingsPermission() {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.NETWORK_SETTINGS,
"WifiService");
@@ -865,7 +852,7 @@ public class WifiServiceImpl extends BaseWifiService {
|| isDeviceOrProfileOwner(uid)
// TODO: Remove this system app bypass once Q is released.
|| isSystem(packageName)
- || isDefaultCarDock(packageName);
+ || mWifiPermissionsUtil.checkSystemAlertWindowPermission(uid, packageName);
}
/**
diff --git a/service/java/com/android/server/wifi/util/WifiPermissionsUtil.java b/service/java/com/android/server/wifi/util/WifiPermissionsUtil.java
index 7f743e8d8..bfb509305 100644
--- a/service/java/com/android/server/wifi/util/WifiPermissionsUtil.java
+++ b/service/java/com/android/server/wifi/util/WifiPermissionsUtil.java
@@ -500,4 +500,18 @@ public class WifiPermissionsUtil {
android.Manifest.permission.NETWORK_CARRIER_PROVISIONING, uid)
== PackageManager.PERMISSION_GRANTED;
}
+
+ /**
+ * Returns true if the |callingUid|/\callingPackage| holds SYSTEM_ALERT_WINDOW permission.
+ */
+ public boolean checkSystemAlertWindowPermission(int callingUid, String callingPackage) {
+ final int mode = mAppOps.noteOp(
+ AppOpsManager.OP_SYSTEM_ALERT_WINDOW, callingUid, callingPackage);
+ if (mode == AppOpsManager.MODE_DEFAULT) {
+ return mWifiPermissionsWrapper.getUidPermission(
+ Manifest.permission.SYSTEM_ALERT_WINDOW, callingUid)
+ == PackageManager.PERMISSION_GRANTED;
+ }
+ return mode == AppOpsManager.MODE_ALLOWED;
+ }
}