Merge cherrypicks of [19423651, 19634561] into tm-release.

Change-Id: I395fc4d63ef9a03042fd257fb46d285c1f2b3c5a
This commit is contained in:
Android Build Coastguard Worker
2022-08-19 18:46:47 +00:00
5 changed files with 33 additions and 3 deletions

View File

@@ -617,4 +617,10 @@
<!-- Whether to put the apps with system UID into system component bucket or not --> <!-- Whether to put the apps with system UID into system component bucket or not -->
<bool name="config_battery_combine_system_components">false</bool> <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> </resources>

View File

@@ -86,8 +86,12 @@ public class BluetoothPairingDialogFragment extends InstrumentedDialogFragment i
@Override @Override
public void onDestroy() { public void onDestroy() {
super.onDestroy(); super.onDestroy();
if (!mPositiveClicked) { if (mPairingController.getDialogType()
mPairingController.onCancel(); != BluetoothPairingController.DISPLAY_PASSKEY_DIALOG) {
/* Cancel pairing unless explicitly accepted by user */
if (!mPositiveClicked) {
mPairingController.onCancel();
}
} }
} }

View File

@@ -98,7 +98,7 @@ public class WifiSlice implements CustomSliceable {
public Slice getSlice() { public Slice getSlice() {
// If external calling package doesn't have Wi-Fi permission. // If external calling package doesn't have Wi-Fi permission.
final boolean isPermissionGranted = final boolean isPermissionGranted =
Utils.isSettingsIntelligence(mContext) || isPermissionGranted(mContext); isCallerExemptUid(mContext) || isPermissionGranted(mContext);
final boolean isWifiEnabled = isWifiEnabled(); final boolean isWifiEnabled = isWifiEnabled();
ListBuilder listBuilder = getListBuilder(isWifiEnabled, null /* wifiSliceItem */, ListBuilder listBuilder = getListBuilder(isWifiEnabled, null /* wifiSliceItem */,
isPermissionGranted); isPermissionGranted);
@@ -139,6 +139,21 @@ public class WifiSlice implements CustomSliceable {
return listBuilder.build(); 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) { private static boolean isPermissionGranted(Context settingsContext) {
final int callingUid = Binder.getCallingUid(); final int callingUid = Binder.getCallingUid();
final String callingPackage = settingsContext.getPackageManager() final String callingPackage = settingsContext.getPackageManager()

View File

@@ -103,6 +103,7 @@ public class ContextualWifiSliceTest {
mContext.getString(R.string.config_settingsintelligence_package_name); mContext.getString(R.string.config_settingsintelligence_package_name);
ShadowBinder.setCallingUid(1); ShadowBinder.setCallingUid(1);
when(mPackageManager.getPackagesForUid(1)).thenReturn(new String[]{siPackageName}); when(mPackageManager.getPackagesForUid(1)).thenReturn(new String[]{siPackageName});
when(mPackageManager.getNameForUid(1)).thenReturn(siPackageName);
ShadowWifiSlice.setWifiPermissible(true); ShadowWifiSlice.setWifiPermissible(true);
mWifiSlice = new ContextualWifiSlice(mContext); mWifiSlice = new ContextualWifiSlice(mContext);
} }

View File

@@ -109,6 +109,7 @@ public class WifiSliceTest {
mSIPackageName = mContext.getString(R.string.config_settingsintelligence_package_name); mSIPackageName = mContext.getString(R.string.config_settingsintelligence_package_name);
ShadowBinder.setCallingUid(USER_ID); ShadowBinder.setCallingUid(USER_ID);
when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{mSIPackageName}); when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{mSIPackageName});
when(mPackageManager.getNameForUid(USER_ID)).thenReturn(mSIPackageName);
ShadowWifiSlice.setWifiPermissible(true); ShadowWifiSlice.setWifiPermissible(true);
mWifiSlice = new WifiSlice(mContext, mWifiRestriction); mWifiSlice = new WifiSlice(mContext, mWifiRestriction);
} }
@@ -116,6 +117,7 @@ public class WifiSliceTest {
@Test @Test
public void getWifiSlice_fromSIPackage_shouldHaveTitleAndToggle() { public void getWifiSlice_fromSIPackage_shouldHaveTitleAndToggle() {
when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{mSIPackageName}); when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{mSIPackageName});
when(mPackageManager.getNameForUid(USER_ID)).thenReturn(mSIPackageName);
ShadowWifiSlice.setWifiPermissible(false); ShadowWifiSlice.setWifiPermissible(false);
final Slice wifiSlice = mWifiSlice.getSlice(); final Slice wifiSlice = mWifiSlice.getSlice();
@@ -131,6 +133,7 @@ public class WifiSliceTest {
@Test @Test
public void getWifiSlice_notFromSIPackageAndWithWifiPermission_shouldHaveTitleAndToggle() { public void getWifiSlice_notFromSIPackageAndWithWifiPermission_shouldHaveTitleAndToggle() {
when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{"com.test"}); when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{"com.test"});
when(mPackageManager.getNameForUid(USER_ID)).thenReturn("com.test");
ShadowWifiSlice.setWifiPermissible(true); ShadowWifiSlice.setWifiPermissible(true);
final Slice wifiSlice = mWifiSlice.getSlice(); final Slice wifiSlice = mWifiSlice.getSlice();
@@ -145,6 +148,7 @@ public class WifiSliceTest {
@Test @Test
public void getWifiSlice_notFromSIPackageAndWithoutWifiPermission_shouldReturnNoToggle() { public void getWifiSlice_notFromSIPackageAndWithoutWifiPermission_shouldReturnNoToggle() {
when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{"com.test"}); when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{"com.test"});
when(mPackageManager.getNameForUid(USER_ID)).thenReturn("com.test");
ShadowWifiSlice.setWifiPermissible(false); ShadowWifiSlice.setWifiPermissible(false);
final Slice wifiSlice = mWifiSlice.getSlice(); final Slice wifiSlice = mWifiSlice.getSlice();