Loading core/java/android/content/res/flags.aconfig +8 −0 Original line number Diff line number Diff line Loading @@ -114,3 +114,11 @@ flag { bug: "373535266" is_fixed_read_only: true } flag { name: "self_targeting_android_resource_frro" is_exported: true namespace: "customization_picker" description: "Fixes bug in Launcher preview by enabling overlays targeting 'android'" bug: "377545987" } No newline at end of file core/java/android/content/res/loader/ResourcesProvider.java +5 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.content.om.OverlayManager; import android.content.pm.ApplicationInfo; import android.content.res.ApkAssets; import android.content.res.AssetFileDescriptor; import android.content.res.Flags; import android.os.ParcelFileDescriptor; import android.util.Log; Loading Loading @@ -90,6 +91,10 @@ public class ResourcesProvider implements AutoCloseable, Closeable { throws IOException { Objects.requireNonNull(overlayInfo); Preconditions.checkArgument(overlayInfo.isFabricated(), "Not accepted overlay"); if (!Flags.selfTargetingAndroidResourceFrro()) { Preconditions.checkStringNotEmpty( overlayInfo.getTargetOverlayableName(), "Without overlayable name"); } final String overlayName = OverlayManagerImpl.checkOverlayNameValid(overlayInfo.getOverlayName()); final String path = Loading core/java/android/widget/RemoteViews.java +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.appwidget.flags.Flags.FLAG_DRAW_DATA_PARCEL; import static android.appwidget.flags.Flags.FLAG_REMOTE_VIEWS_PROTO; import static android.appwidget.flags.Flags.drawDataParcel; import static android.appwidget.flags.Flags.remoteAdapterConversion; import static android.content.res.Flags.FLAG_SELF_TARGETING_ANDROID_RESOURCE_FRRO; import static android.util.TypedValue.TYPE_INT_COLOR_ARGB8; import static android.util.proto.ProtoInputStream.NO_MORE_FIELDS; import static android.view.inputmethod.Flags.FLAG_HOME_SCREEN_HANDWRITING_DELEGATOR; Loading Loading @@ -8698,6 +8699,7 @@ public class RemoteViews implements Parcelable, Filter { * * @hide */ @FlaggedApi(FLAG_SELF_TARGETING_ANDROID_RESOURCE_FRRO) @Nullable public static ColorResources createWithOverlay(Context context, SparseIntArray colorMapping) { Loading core/java/com/android/internal/content/om/OverlayManagerImpl.java +11 −3 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.parsing.FrameworkParsingPackageUtils; import android.content.res.AssetManager; import android.content.res.Flags; import android.os.FabricatedOverlayInfo; import android.os.FabricatedOverlayInternal; import android.os.FabricatedOverlayInternalEntry; Loading Loading @@ -235,17 +236,24 @@ public class OverlayManagerImpl { Preconditions.checkArgument(!entryList.isEmpty(), "overlay entries shouldn't be empty"); final String overlayName = checkOverlayNameValid(overlayInternal.overlayName); checkPackageName(overlayInternal.packageName); if (Flags.selfTargetingAndroidResourceFrro()) { Preconditions.checkStringNotEmpty(overlayInternal.targetPackageName); } else { checkPackageName(overlayInternal.targetPackageName); Preconditions.checkStringNotEmpty( overlayInternal.targetOverlayable, "Target overlayable should be neither null nor empty string."); } final ApplicationInfo applicationInfo = mContext.getApplicationInfo(); String targetPackage = null; if (TextUtils.equals(overlayInternal.targetPackageName, "android")) { if (Flags.selfTargetingAndroidResourceFrro() && TextUtils.equals( overlayInternal.targetPackageName, "android")) { targetPackage = AssetManager.FRAMEWORK_APK_PATH; } else { targetPackage = Preconditions.checkStringNotEmpty( applicationInfo.getBaseCodePath()); } final Path frroPath = mBasePath.resolve(overlayName + FRRO_EXTENSION); final Path idmapPath = mBasePath.resolve(overlayName + IDMAP_EXTENSION); Loading core/tests/overlaytests/device_self_targeting/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ android_test { "androidx.test.ext.junit", "mockito-target-minus-junit4", "truth", "flag-junit", ], optimize: { Loading Loading
core/java/android/content/res/flags.aconfig +8 −0 Original line number Diff line number Diff line Loading @@ -114,3 +114,11 @@ flag { bug: "373535266" is_fixed_read_only: true } flag { name: "self_targeting_android_resource_frro" is_exported: true namespace: "customization_picker" description: "Fixes bug in Launcher preview by enabling overlays targeting 'android'" bug: "377545987" } No newline at end of file
core/java/android/content/res/loader/ResourcesProvider.java +5 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.content.om.OverlayManager; import android.content.pm.ApplicationInfo; import android.content.res.ApkAssets; import android.content.res.AssetFileDescriptor; import android.content.res.Flags; import android.os.ParcelFileDescriptor; import android.util.Log; Loading Loading @@ -90,6 +91,10 @@ public class ResourcesProvider implements AutoCloseable, Closeable { throws IOException { Objects.requireNonNull(overlayInfo); Preconditions.checkArgument(overlayInfo.isFabricated(), "Not accepted overlay"); if (!Flags.selfTargetingAndroidResourceFrro()) { Preconditions.checkStringNotEmpty( overlayInfo.getTargetOverlayableName(), "Without overlayable name"); } final String overlayName = OverlayManagerImpl.checkOverlayNameValid(overlayInfo.getOverlayName()); final String path = Loading
core/java/android/widget/RemoteViews.java +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.appwidget.flags.Flags.FLAG_DRAW_DATA_PARCEL; import static android.appwidget.flags.Flags.FLAG_REMOTE_VIEWS_PROTO; import static android.appwidget.flags.Flags.drawDataParcel; import static android.appwidget.flags.Flags.remoteAdapterConversion; import static android.content.res.Flags.FLAG_SELF_TARGETING_ANDROID_RESOURCE_FRRO; import static android.util.TypedValue.TYPE_INT_COLOR_ARGB8; import static android.util.proto.ProtoInputStream.NO_MORE_FIELDS; import static android.view.inputmethod.Flags.FLAG_HOME_SCREEN_HANDWRITING_DELEGATOR; Loading Loading @@ -8698,6 +8699,7 @@ public class RemoteViews implements Parcelable, Filter { * * @hide */ @FlaggedApi(FLAG_SELF_TARGETING_ANDROID_RESOURCE_FRRO) @Nullable public static ColorResources createWithOverlay(Context context, SparseIntArray colorMapping) { Loading
core/java/com/android/internal/content/om/OverlayManagerImpl.java +11 −3 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.parsing.FrameworkParsingPackageUtils; import android.content.res.AssetManager; import android.content.res.Flags; import android.os.FabricatedOverlayInfo; import android.os.FabricatedOverlayInternal; import android.os.FabricatedOverlayInternalEntry; Loading Loading @@ -235,17 +236,24 @@ public class OverlayManagerImpl { Preconditions.checkArgument(!entryList.isEmpty(), "overlay entries shouldn't be empty"); final String overlayName = checkOverlayNameValid(overlayInternal.overlayName); checkPackageName(overlayInternal.packageName); if (Flags.selfTargetingAndroidResourceFrro()) { Preconditions.checkStringNotEmpty(overlayInternal.targetPackageName); } else { checkPackageName(overlayInternal.targetPackageName); Preconditions.checkStringNotEmpty( overlayInternal.targetOverlayable, "Target overlayable should be neither null nor empty string."); } final ApplicationInfo applicationInfo = mContext.getApplicationInfo(); String targetPackage = null; if (TextUtils.equals(overlayInternal.targetPackageName, "android")) { if (Flags.selfTargetingAndroidResourceFrro() && TextUtils.equals( overlayInternal.targetPackageName, "android")) { targetPackage = AssetManager.FRAMEWORK_APK_PATH; } else { targetPackage = Preconditions.checkStringNotEmpty( applicationInfo.getBaseCodePath()); } final Path frroPath = mBasePath.resolve(overlayName + FRRO_EXTENSION); final Path idmapPath = mBasePath.resolve(overlayName + IDMAP_EXTENSION); Loading
core/tests/overlaytests/device_self_targeting/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ android_test { "androidx.test.ext.junit", "mockito-target-minus-junit4", "truth", "flag-junit", ], optimize: { Loading