Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a912390a authored by Hai Zhang's avatar Hai Zhang Committed by Automerger Merge Worker
Browse files

Merge "Simulate installer denying USE_FULL_SCREEN_INTENT unless allowlisted."...

Merge "Simulate installer denying USE_FULL_SCREEN_INTENT unless allowlisted." into udc-dev am: acda2efe

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22520268



Change-Id: Ia34d98a4d729ba67227f5669b0ea72e2542e256e
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 5c984ae7 acda2efe
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1373,6 +1373,9 @@
    <!-- Number of notifications to keep in the notification service historical archive -->
    <integer name="config_notificationServiceArchiveSize">100</integer>

    <!-- List of packages that will be able to use full screen intent in notifications by default -->
    <string-array name="config_useFullScreenIntentPackages" translatable="false" />

    <!-- Allow the menu hard key to be disabled in LockScreen on some devices -->
    <bool name="config_disableMenuKeyInLockScreen">false</bool>

+1 −0
Original line number Diff line number Diff line
@@ -2017,6 +2017,7 @@
  <java-symbol type="integer" name="config_notificationsBatteryMediumARGB" />
  <java-symbol type="integer" name="config_notificationsBatteryNearlyFullLevel" />
  <java-symbol type="integer" name="config_notificationServiceArchiveSize" />
  <java-symbol type="array" name="config_useFullScreenIntentPackages" />
  <java-symbol type="integer" name="config_previousVibrationsDumpLimit" />
  <java-symbol type="integer" name="config_defaultVibrationAmplitude" />
  <java-symbol type="dimen" name="config_hapticChannelMaxVibrationAmplitude" />
+21 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
import static android.app.AppOpsManager.MODE_ALLOWED;
import static android.app.AppOpsManager.MODE_ERRORED;
import static android.content.pm.PackageInstaller.SessionParams.PERMISSION_STATE_DEFAULT;
import static android.content.pm.PackageInstaller.SessionParams.PERMISSION_STATE_DENIED;
import static android.content.pm.PackageInstaller.SessionParams.PERMISSION_STATE_GRANTED;
import static android.content.pm.PackageManager.FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT;
import static android.content.pm.PackageManager.FLAG_PERMISSION_APPLY_RESTRICTION;
@@ -3655,6 +3656,26 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt

        for (String permission : pkg.getRequestedPermissions()) {
            Integer permissionState = permissionStates.get(permission);

            if (Objects.equals(permission, Manifest.permission.USE_FULL_SCREEN_INTENT)
                    && permissionState == null) {
                final PackageStateInternal ps;
                final long token = Binder.clearCallingIdentity();
                try {
                    ps = mPackageManagerInt.getPackageStateInternal(pkg.getPackageName());
                } finally {
                    Binder.restoreCallingIdentity(token);
                }
                final String[] useFullScreenIntentPackageNames =
                        mContext.getResources().getStringArray(
                                com.android.internal.R.array.config_useFullScreenIntentPackages);
                final boolean canUseFullScreenIntent = (ps != null && ps.isSystem())
                        || ArrayUtils.contains(useFullScreenIntentPackageNames,
                                pkg.getPackageName());
                permissionState = canUseFullScreenIntent ? PERMISSION_STATE_GRANTED
                        : PERMISSION_STATE_DENIED;
            }

            if (permissionState == null || permissionState == PERMISSION_STATE_DEFAULT) {
                continue;
            }