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

Commit 4b24efed authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "OMS: rename methods to include package downgrades"

parents 3526539d 15a0ac0d
Loading
Loading
Loading
Loading
+14 −13
Original line number Diff line number Diff line
@@ -46,7 +46,8 @@ public final class OverlayInfo implements Parcelable {
            STATE_ENABLED,
            STATE_ENABLED_STATIC,
            // @Deprecated STATE_TARGET_UPGRADING,
            STATE_OVERLAY_UPGRADING,
            STATE_TARGET_IS_BEING_REPLACED,
            STATE_OVERLAY_IS_BEING_REPLACED,
    })
    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
@@ -94,8 +95,8 @@ public final class OverlayInfo implements Parcelable {
    public static final int STATE_ENABLED = 3;

    /**
     * The target package is currently being upgraded; the state will change
     * once the package installation has finished.
     * The target package is currently being upgraded or downgraded; the state
     * will change once the package installation has finished.
     * @hide
     *
     * @deprecated No longer used. Caused invalid transitions from enabled -> upgrading -> enabled,
@@ -105,14 +106,14 @@ public final class OverlayInfo implements Parcelable {
     * irrelevant.
     */
    @Deprecated
    public static final int STATE_TARGET_UPGRADING = 4;
    public static final int STATE_TARGET_IS_BEING_REPLACED = 4;

    /**
     * The overlay package is currently being upgraded; the state will change
     * once the package installation has finished.
     * The overlay package is currently being upgraded or downgraded; the state
     * will change once the package installation has finished.
     * @hide
     */
    public static final int STATE_OVERLAY_UPGRADING = 5;
    public static final int STATE_OVERLAY_IS_BEING_REPLACED = 5;

    /**
     * The overlay package is currently enabled because it is marked as
@@ -306,8 +307,8 @@ public final class OverlayInfo implements Parcelable {
            case STATE_DISABLED:
            case STATE_ENABLED:
            case STATE_ENABLED_STATIC:
            case STATE_TARGET_UPGRADING:
            case STATE_OVERLAY_UPGRADING:
            case STATE_TARGET_IS_BEING_REPLACED:
            case STATE_OVERLAY_IS_BEING_REPLACED:
                break;
            default:
                throw new IllegalArgumentException("State " + state + " is not a valid state");
@@ -386,10 +387,10 @@ public final class OverlayInfo implements Parcelable {
                return "STATE_ENABLED";
            case STATE_ENABLED_STATIC:
                return "STATE_ENABLED_STATIC";
            case STATE_TARGET_UPGRADING:
                return "STATE_TARGET_UPGRADING";
            case STATE_OVERLAY_UPGRADING:
                return "STATE_OVERLAY_UPGRADING";
            case STATE_TARGET_IS_BEING_REPLACED:
                return "STATE_TARGET_IS_BEING_REPLACED";
            case STATE_OVERLAY_IS_BEING_REPLACED:
                return "STATE_OVERLAY_IS_BEING_REPLACED";
            default:
                return "<unknown state>";
        }
+9 −9
Original line number Diff line number Diff line
@@ -345,7 +345,7 @@ public final class OverlayManagerService extends SystemService {
            switch (action) {
                case ACTION_PACKAGE_ADDED:
                    if (replacing) {
                        onPackageUpgraded(packageName, userIds);
                        onPackageReplaced(packageName, userIds);
                    } else {
                        onPackageAdded(packageName, userIds);
                    }
@@ -355,7 +355,7 @@ public final class OverlayManagerService extends SystemService {
                    break;
                case ACTION_PACKAGE_REMOVED:
                    if (replacing) {
                        onPackageUpgrading(packageName, userIds);
                        onPackageReplacing(packageName, userIds);
                    } else {
                        onPackageRemoved(packageName, userIds);
                    }
@@ -412,16 +412,16 @@ public final class OverlayManagerService extends SystemService {
            }
        }

        private void onPackageUpgrading(@NonNull final String packageName,
        private void onPackageReplacing(@NonNull final String packageName,
                @NonNull final int[] userIds) {
            try {
                traceBegin(TRACE_TAG_RRO, "OMS#onPackageUpgrading " + packageName);
                traceBegin(TRACE_TAG_RRO, "OMS#onPackageReplacing " + packageName);
                for (int userId : userIds) {
                    synchronized (mLock) {
                        mPackageManager.forgetPackageInfo(packageName, userId);
                        final OverlayInfo oi = mImpl.getOverlayInfo(packageName, userId);
                        if (oi != null) {
                            mImpl.onOverlayPackageUpgrading(packageName, userId);
                            mImpl.onOverlayPackageReplacing(packageName, userId);
                        }
                    }
                }
@@ -430,10 +430,10 @@ public final class OverlayManagerService extends SystemService {
            }
        }

        private void onPackageUpgraded(@NonNull final String packageName,
        private void onPackageReplaced(@NonNull final String packageName,
                @NonNull final int[] userIds) {
            try {
                traceBegin(TRACE_TAG_RRO, "OMS#onPackageUpgraded " + packageName);
                traceBegin(TRACE_TAG_RRO, "OMS#onPackageReplaced " + packageName);
                for (int userId : userIds) {
                    synchronized (mLock) {
                        final PackageInfo pi = mPackageManager.getPackageInfo(packageName, userId,
@@ -441,9 +441,9 @@ public final class OverlayManagerService extends SystemService {
                        if (pi != null) {
                            mPackageManager.cachePackageInfo(packageName, userId, pi);
                            if (pi.isOverlayPackage()) {
                                mImpl.onOverlayPackageUpgraded(packageName, userId);
                                mImpl.onOverlayPackageReplaced(packageName, userId);
                            } else {
                                mImpl.onTargetPackageUpgraded(packageName, userId);
                                mImpl.onTargetPackageReplaced(packageName, userId);
                            }
                        }
                    }
+28 −14
Original line number Diff line number Diff line
@@ -21,7 +21,8 @@ import static android.content.om.OverlayInfo.STATE_ENABLED;
import static android.content.om.OverlayInfo.STATE_ENABLED_STATIC;
import static android.content.om.OverlayInfo.STATE_MISSING_TARGET;
import static android.content.om.OverlayInfo.STATE_NO_IDMAP;
import static android.content.om.OverlayInfo.STATE_OVERLAY_UPGRADING;
import static android.content.om.OverlayInfo.STATE_OVERLAY_IS_BEING_REPLACED;
import static android.content.om.OverlayInfo.STATE_TARGET_IS_BEING_REPLACED;

import static com.android.server.om.OverlayManagerService.DEBUG;
import static com.android.server.om.OverlayManagerService.TAG;
@@ -56,15 +57,14 @@ import java.util.Set;
 * @see OverlayManagerService
 */
final class OverlayManagerServiceImpl {

    /**
     * @deprecated Not used. See {@link android.content.om.OverlayInfo#STATE_TARGET_UPGRADING}.
     */
    @Deprecated
    private static final int FLAG_TARGET_IS_UPGRADING = 1 << 0;
    private static final int FLAG_TARGET_IS_BEING_REPLACED = 1 << 0;

    // Flags to use in conjunction with updateState.
    private static final int FLAG_OVERLAY_IS_UPGRADING = 1 << 1;
    private static final int FLAG_OVERLAY_IS_BEING_REPLACED = 1 << 1;

    private final PackageManagerHelper mPackageManager;
    private final IdmapManager mIdmapManager;
@@ -266,9 +266,18 @@ final class OverlayManagerServiceImpl {
        updateAndRefreshOverlaysForTarget(packageName, userId, 0);
    }

    void onTargetPackageUpgraded(@NonNull final String packageName, final int userId) {
    void onTargetPackageReplacing(@NonNull final String packageName, final int userId) {
        if (DEBUG) {
            Slog.d(TAG, "onTargetPackageReplacing packageName=" + packageName + " userId="
                    + userId);
        }

        updateAndRefreshOverlaysForTarget(packageName, userId, 0);
    }

    void onTargetPackageReplaced(@NonNull final String packageName, final int userId) {
        if (DEBUG) {
            Slog.d(TAG, "onTargetPackageUpgraded packageName=" + packageName + " userId=" + userId);
            Slog.d(TAG, "onTargetPackageReplaced packageName=" + packageName + " userId=" + userId);
        }

        updateAndRefreshOverlaysForTarget(packageName, userId, 0);
@@ -388,15 +397,16 @@ final class OverlayManagerServiceImpl {
        }
    }

    void onOverlayPackageUpgrading(@NonNull final String packageName, final int userId) {
    void onOverlayPackageReplacing(@NonNull final String packageName, final int userId) {
        if (DEBUG) {
            Slog.d(TAG, "onOverlayPackageUpgrading packageName=" + packageName + " userId="
            Slog.d(TAG, "onOverlayPackageReplacing packageName=" + packageName + " userId="
                    + userId);
        }

        try {
            final OverlayInfo oi = mSettings.getOverlayInfo(packageName, userId);
            if (updateState(oi.targetPackageName, packageName, userId, FLAG_OVERLAY_IS_UPGRADING)) {
            if (updateState(oi.targetPackageName, packageName, userId,
                        FLAG_OVERLAY_IS_BEING_REPLACED)) {
                removeIdmapIfPossible(oi);
                mListener.onOverlaysChanged(oi.targetPackageName, userId);
            }
@@ -405,15 +415,15 @@ final class OverlayManagerServiceImpl {
        }
    }

    void onOverlayPackageUpgraded(@NonNull final String packageName, final int userId) {
    void onOverlayPackageReplaced(@NonNull final String packageName, final int userId) {
        if (DEBUG) {
            Slog.d(TAG, "onOverlayPackageUpgraded packageName=" + packageName + " userId="
            Slog.d(TAG, "onOverlayPackageReplaced packageName=" + packageName + " userId="
                    + userId);
        }

        final PackageInfo pkg = mPackageManager.getPackageInfo(packageName, userId);
        if (pkg == null) {
            Slog.w(TAG, "overlay package " + packageName + " was upgraded, but couldn't be found");
            Slog.w(TAG, "overlay package " + packageName + " was replaced, but couldn't be found");
            onOverlayPackageRemoved(packageName, userId);
            return;
        }
@@ -694,8 +704,12 @@ final class OverlayManagerServiceImpl {
            @Nullable final PackageInfo overlayPackage, final int userId, final int flags)
            throws OverlayManagerSettings.BadKeyException {

        if ((flags & FLAG_OVERLAY_IS_UPGRADING) != 0) {
            return STATE_OVERLAY_UPGRADING;
        if ((flags & FLAG_TARGET_IS_BEING_REPLACED) != 0) {
            return STATE_TARGET_IS_BEING_REPLACED;
        }

        if ((flags & FLAG_OVERLAY_IS_BEING_REPLACED) != 0) {
            return STATE_OVERLAY_IS_BEING_REPLACED;
        }

        // assert expectation on overlay package: can only be null if the flags are used