diff options
author | Roshan Pius <rpius@google.com> | 2019-05-06 14:58:14 -0700 |
---|---|---|
committer | Roshan Pius <rpius@google.com> | 2019-05-07 14:14:13 +0000 |
commit | cf347721b74cbb08777e80ab719cf06b415a700e (patch) | |
tree | dfd83261f0bdb3d82dcce90982781238408c001a /service/java/com/android | |
parent | 5e8961db0f7866b354c2c1a213267ee1d32185ea (diff) | |
download | android_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.java | 15 | ||||
-rw-r--r-- | service/java/com/android/server/wifi/util/WifiPermissionsUtil.java | 14 |
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; + } } |