Loading core/java/android/content/om/OverlayInfo.java +14 −13 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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, Loading @@ -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 Loading Loading @@ -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"); Loading Loading @@ -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>"; } Loading services/core/java/com/android/server/om/OverlayManagerService.java +9 −9 Original line number Diff line number Diff line Loading @@ -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); } Loading @@ -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); } Loading Loading @@ -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); } } } Loading @@ -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, Loading @@ -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); } } } Loading services/core/java/com/android/server/om/OverlayManagerServiceImpl.java +28 −14 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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); } Loading @@ -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; } Loading Loading @@ -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 Loading Loading
core/java/android/content/om/OverlayInfo.java +14 −13 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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, Loading @@ -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 Loading Loading @@ -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"); Loading Loading @@ -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>"; } Loading
services/core/java/com/android/server/om/OverlayManagerService.java +9 −9 Original line number Diff line number Diff line Loading @@ -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); } Loading @@ -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); } Loading Loading @@ -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); } } } Loading @@ -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, Loading @@ -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); } } } Loading
services/core/java/com/android/server/om/OverlayManagerServiceImpl.java +28 −14 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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); } Loading @@ -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; } Loading Loading @@ -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 Loading