diff options
| author | 2024-10-30 16:06:43 -0700 | |
|---|---|---|
| committer | 2024-10-30 16:11:52 -0700 | |
| commit | 78f5213f2ecece9605ffbc8432abcd256530e848 (patch) | |
| tree | df08bb79834e882aa398698c500ee8af675c3da4 | |
| parent | 8a61fdd070789bd652ac0c01345af096e31dbff4 (diff) | |
[res] Allow changing RRO state that target android
'android' resources don't have overlayable definition, so
there's no way to enable or disable them for the apps that
aren't root or system. This isn't intentional, and the CL
enables it for the apps with the proper permission.
Bug: 364035303
Flag: android.content.res.rro_control_for_android_no_overlayable
Test: atest CtsHandleConfigChangeHostTests
Change-Id: I6894f1d073f9e50eaaa70675ab9372dca1de5fdf
| -rw-r--r-- | services/core/java/com/android/server/om/OverlayActorEnforcer.java | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/om/OverlayActorEnforcer.java b/services/core/java/com/android/server/om/OverlayActorEnforcer.java index 015b7fd74211..38f39393a025 100644 --- a/services/core/java/com/android/server/om/OverlayActorEnforcer.java +++ b/services/core/java/com/android/server/om/OverlayActorEnforcer.java @@ -19,6 +19,7 @@ package com.android.server.om; import android.annotation.NonNull; import android.content.om.OverlayInfo; import android.content.om.OverlayableInfo; +import android.content.res.Flags; import android.net.Uri; import android.os.Process; import android.text.TextUtils; @@ -162,11 +163,15 @@ public class OverlayActorEnforcer { return ActorState.UNABLE_TO_GET_TARGET_OVERLAYABLE; } - if (targetOverlayable == null) { + // Framework doesn't have <overlayable> declaration by design, and we still want to be able + // to enable its overlays from the packages with the permission. + if (targetOverlayable == null + && !(Flags.rroControlForAndroidNoOverlayable() && targetPackageName.equals( + "android"))) { return ActorState.MISSING_OVERLAYABLE; } - String actor = targetOverlayable.actor; + final String actor = targetOverlayable == null ? null : targetOverlayable.actor; if (TextUtils.isEmpty(actor)) { // If there's no actor defined, fallback to the legacy permission check try { |