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

Commit d57fb1fb authored by Ryan Mitchell's avatar Ryan Mitchell
Browse files

Add targetOverlayableName to OverlayInfo

This change add information about the target overlayable to the
OverlayInfo class.

Bug: 128830059
Test: atest OverlayInfoTest
Test: cmd overlay dump
Test: overlays.xml generated correctly

Change-Id: Ice9b4dee20d7d5ea4dcbc2b1a1179ab4fa5b1f7a
parent 519acc37
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1473,6 +1473,7 @@ package android.content.om {
    field @NonNull public static final android.os.Parcelable.Creator<android.content.om.OverlayInfo> CREATOR;
    field public final String category;
    field public final String packageName;
    field public final String targetOverlayableName;
    field public final String targetPackageName;
    field public final int userId;
  }
+28 −6
Original line number Diff line number Diff line
@@ -18,12 +18,14 @@ package android.content.om;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Objects;

/**
 * Immutable overlay information about a package. All PackageInfos that
@@ -137,6 +139,14 @@ public final class OverlayInfo implements Parcelable {
    @SystemApi
    public final String targetPackageName;

    /**
     * Name of the target overlayable declaration.
     *
     * @hide
     */
    @SystemApi
    public final String targetOverlayableName;

    /**
     * Category of the overlay package
     *
@@ -190,16 +200,19 @@ public final class OverlayInfo implements Parcelable {
     * @hide
     */
    public OverlayInfo(@NonNull OverlayInfo source, @State int state) {
        this(source.packageName, source.targetPackageName, source.category, source.baseCodePath,
                state, source.userId, source.priority, source.isStatic);
        this(source.packageName, source.targetPackageName, source.targetOverlayableName,
                source.category, source.baseCodePath, state, source.userId, source.priority,
                source.isStatic);
    }

    /** @hide */
    public OverlayInfo(@NonNull String packageName, @NonNull String targetPackageName,
            @NonNull String category, @NonNull String baseCodePath, int state, int userId,
            @Nullable String targetOverlayableName, @Nullable String category,
            @NonNull String baseCodePath, int state, int userId,
            int priority, boolean isStatic) {
        this.packageName = packageName;
        this.targetPackageName = targetPackageName;
        this.targetOverlayableName = targetOverlayableName;
        this.category = category;
        this.baseCodePath = baseCodePath;
        this.state = state;
@@ -213,6 +226,7 @@ public final class OverlayInfo implements Parcelable {
    public OverlayInfo(Parcel source) {
        packageName = source.readString();
        targetPackageName = source.readString();
        targetOverlayableName = source.readString();
        category = source.readString();
        baseCodePath = source.readString();
        state = source.readInt();
@@ -256,6 +270,7 @@ public final class OverlayInfo implements Parcelable {
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(packageName);
        dest.writeString(targetPackageName);
        dest.writeString(targetOverlayableName);
        dest.writeString(category);
        dest.writeString(baseCodePath);
        dest.writeInt(state);
@@ -335,6 +350,8 @@ public final class OverlayInfo implements Parcelable {
        result = prime * result + state;
        result = prime * result + ((packageName == null) ? 0 : packageName.hashCode());
        result = prime * result + ((targetPackageName == null) ? 0 : targetPackageName.hashCode());
        result = prime * result + ((targetOverlayableName == null) ? 0
                : targetOverlayableName.hashCode());
        result = prime * result + ((category == null) ? 0 : category.hashCode());
        result = prime * result + ((baseCodePath == null) ? 0 : baseCodePath.hashCode());
        return result;
@@ -364,7 +381,10 @@ public final class OverlayInfo implements Parcelable {
        if (!targetPackageName.equals(other.targetPackageName)) {
            return false;
        }
        if (!category.equals(other.category)) {
        if (!Objects.equals(targetOverlayableName, other.targetOverlayableName)) {
            return false;
        }
        if (!Objects.equals(category, other.category)) {
            return false;
        }
        if (!baseCodePath.equals(other.baseCodePath)) {
@@ -375,7 +395,9 @@ public final class OverlayInfo implements Parcelable {

    @Override
    public String toString() {
        return "OverlayInfo { overlay=" + packageName + ", target=" + targetPackageName + ", state="
                + state + " (" + stateToString(state) + "), userId=" + userId + " }";
        return "OverlayInfo { overlay=" + packageName + ", targetPackage=" + targetPackageName
                + ((targetOverlayableName == null) ? ""
                : ", targetOverlyabale=" + targetOverlayableName)
                + ", state=" + state + " (" + stateToString(state) + "), userId=" + userId + " }";
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -354,12 +354,12 @@ public class PackageInfo implements Parcelable {
    public String overlayTarget;

    /**
     * What overlayable set of elements package, if any, this package will overlay.
     * The name of the overlayable set of elements package, if any, this package will overlay.
     *
     * Overlayable name defined within the target package, or null.
     * @hide
     */
    public String overlayTargetName;
    public String targetOverlayableName;

    /**
     * The overlay category, if any, of this package
+1 −1
Original line number Diff line number Diff line
@@ -689,7 +689,7 @@ public class PackageParser {
        pi.restrictedAccountType = p.mRestrictedAccountType;
        pi.requiredAccountType = p.mRequiredAccountType;
        pi.overlayTarget = p.mOverlayTarget;
        pi.overlayTargetName = p.mOverlayTargetName;
        pi.targetOverlayableName = p.mOverlayTargetName;
        pi.overlayCategory = p.mOverlayCategory;
        pi.overlayPriority = p.mOverlayPriority;
        pi.mOverlayIsStatic = p.mOverlayIsStatic;
+6 −1
Original line number Diff line number Diff line
@@ -83,6 +83,9 @@ final class OverlayManagerServiceImpl {
        if (!Objects.equals(theTruth.overlayTarget, oldSettings.targetPackageName)) {
            return true;
        }
        if (!Objects.equals(theTruth.targetOverlayableName, oldSettings.targetOverlayableName)) {
            return true;
        }
        if (theTruth.isStaticOverlayPackage() != oldSettings.isStatic) {
            return true;
        }
@@ -149,6 +152,7 @@ final class OverlayManagerServiceImpl {

                mSettings.init(overlayPackage.packageName, newUserId,
                        overlayPackage.overlayTarget,
                        overlayPackage.targetOverlayableName,
                        overlayPackage.applicationInfo.getBaseCodePath(),
                        overlayPackage.isStaticOverlayPackage(),
                        overlayPackage.overlayPriority,
@@ -331,6 +335,7 @@ final class OverlayManagerServiceImpl {
        }

        mSettings.init(packageName, userId, overlayPackage.overlayTarget,
                overlayPackage.targetOverlayableName,
                overlayPackage.applicationInfo.getBaseCodePath(),
                overlayPackage.isStaticOverlayPackage(), overlayPackage.overlayPriority,
                overlayPackage.overlayCategory);
@@ -395,7 +400,7 @@ final class OverlayManagerServiceImpl {
                if (oldOi != null && !oldOi.targetPackageName.equals(pkg.overlayTarget)) {
                    mListener.onOverlaysChanged(pkg.overlayTarget, userId);
                }
                mSettings.init(packageName, userId, pkg.overlayTarget,
                mSettings.init(packageName, userId, pkg.overlayTarget, pkg.targetOverlayableName,
                        pkg.applicationInfo.getBaseCodePath(), pkg.isStaticOverlayPackage(),
                        pkg.overlayPriority, pkg.overlayCategory);
            }
Loading