summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-08-22 01:54:01 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-08-22 01:54:01 +0000
commitdc747355614f67f4227de85f4b615e91275f118e (patch)
tree17d1bf1798f9324f7effe364b1f922ad2c932685
parentc3efc6c644362159957ad526b8fa65d004f5067c (diff)
parentd29a1042780b78642f055b278dd9adcbc271b45f (diff)
downloadSettings-dc747355614f67f4227de85f4b615e91275f118e.tar.gz
Merge cherrypicks of [19590400] into tm-d1-release.
Change-Id: I0a7627970fd5621e3841e91e5287e6d5495f7dd4
-rwxr-xr-xres/values/config.xml6
-rw-r--r--src/com/android/settings/wifi/slice/WifiSlice.java17
-rw-r--r--tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java1
-rw-r--r--tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java4
4 files changed, 27 insertions, 1 deletions
diff --git a/res/values/config.xml b/res/values/config.xml
index 078c7591771..2f7031560a3 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -621,4 +621,10 @@
<!-- Whether to put the apps with system UID into system component bucket or not -->
<bool name="config_battery_combine_system_components">false</bool>
+
+ <!-- An array of uid name for which packages exempt from Wi-Fi permission check. -->
+ <string-array name="config_exempt_wifi_permission_uid_name" translatable="false">
+ <item>@string/config_settingsintelligence_package_name</item>
+ <item>android.uid.system:1000</item>
+ </string-array>
</resources>
diff --git a/src/com/android/settings/wifi/slice/WifiSlice.java b/src/com/android/settings/wifi/slice/WifiSlice.java
index 76dfab8491b..8417d8b63a5 100644
--- a/src/com/android/settings/wifi/slice/WifiSlice.java
+++ b/src/com/android/settings/wifi/slice/WifiSlice.java
@@ -98,7 +98,7 @@ public class WifiSlice implements CustomSliceable {
public Slice getSlice() {
// If external calling package doesn't have Wi-Fi permission.
final boolean isPermissionGranted =
- Utils.isSettingsIntelligence(mContext) || isPermissionGranted(mContext);
+ isCallerExemptUid(mContext) || isPermissionGranted(mContext);
final boolean isWifiEnabled = isWifiEnabled();
ListBuilder listBuilder = getListBuilder(isWifiEnabled, null /* wifiSliceItem */,
isPermissionGranted);
@@ -139,6 +139,21 @@ public class WifiSlice implements CustomSliceable {
return listBuilder.build();
}
+ private boolean isCallerExemptUid(Context context) {
+ final String[] allowedUidNames = context.getResources().getStringArray(
+ R.array.config_exempt_wifi_permission_uid_name);
+ final String uidName =
+ context.getPackageManager().getNameForUid(Binder.getCallingUid());
+ Log.d(TAG, "calling uid name : " + uidName);
+
+ for (String allowedUidName : allowedUidNames) {
+ if (TextUtils.equals(uidName, allowedUidName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private static boolean isPermissionGranted(Context settingsContext) {
final int callingUid = Binder.getCallingUid();
final String callingPackage = settingsContext.getPackageManager()
diff --git a/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java b/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java
index 52dcb5282da..d9c726ab058 100644
--- a/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java
@@ -103,6 +103,7 @@ public class ContextualWifiSliceTest {
mContext.getString(R.string.config_settingsintelligence_package_name);
ShadowBinder.setCallingUid(1);
when(mPackageManager.getPackagesForUid(1)).thenReturn(new String[]{siPackageName});
+ when(mPackageManager.getNameForUid(1)).thenReturn(siPackageName);
ShadowWifiSlice.setWifiPermissible(true);
mWifiSlice = new ContextualWifiSlice(mContext);
}
diff --git a/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java b/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java
index 8e42fcd225a..67ab7b49825 100644
--- a/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java
@@ -109,6 +109,7 @@ public class WifiSliceTest {
mSIPackageName = mContext.getString(R.string.config_settingsintelligence_package_name);
ShadowBinder.setCallingUid(USER_ID);
when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{mSIPackageName});
+ when(mPackageManager.getNameForUid(USER_ID)).thenReturn(mSIPackageName);
ShadowWifiSlice.setWifiPermissible(true);
mWifiSlice = new WifiSlice(mContext, mWifiRestriction);
}
@@ -116,6 +117,7 @@ public class WifiSliceTest {
@Test
public void getWifiSlice_fromSIPackage_shouldHaveTitleAndToggle() {
when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{mSIPackageName});
+ when(mPackageManager.getNameForUid(USER_ID)).thenReturn(mSIPackageName);
ShadowWifiSlice.setWifiPermissible(false);
final Slice wifiSlice = mWifiSlice.getSlice();
@@ -131,6 +133,7 @@ public class WifiSliceTest {
@Test
public void getWifiSlice_notFromSIPackageAndWithWifiPermission_shouldHaveTitleAndToggle() {
when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{"com.test"});
+ when(mPackageManager.getNameForUid(USER_ID)).thenReturn("com.test");
ShadowWifiSlice.setWifiPermissible(true);
final Slice wifiSlice = mWifiSlice.getSlice();
@@ -145,6 +148,7 @@ public class WifiSliceTest {
@Test
public void getWifiSlice_notFromSIPackageAndWithoutWifiPermission_shouldReturnNoToggle() {
when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{"com.test"});
+ when(mPackageManager.getNameForUid(USER_ID)).thenReturn("com.test");
ShadowWifiSlice.setWifiPermissible(false);
final Slice wifiSlice = mWifiSlice.getSlice();