diff options
5 files changed, 157 insertions, 890 deletions
diff --git a/services/core/java/com/android/server/pm/PackageSetting.java b/services/core/java/com/android/server/pm/PackageSetting.java index 6b8765e375ed..dee31ec460d7 100644 --- a/services/core/java/com/android/server/pm/PackageSetting.java +++ b/services/core/java/com/android/server/pm/PackageSetting.java @@ -20,6 +20,7 @@ import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED; +import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UserIdInt; @@ -80,9 +81,38 @@ import java.util.UUID; * @hide */ @DataClass(genGetters = true, genConstructor = false, genSetters = false, genBuilder = false) -@DataClass.Suppress({"getSnapshot", }) +@DataClass.Suppress({"getSnapshot", "getBooleans"}) public class PackageSetting extends SettingBase implements PackageStateInternal { + // Use a bitset to store boolean data to save memory + private static class Booleans { + @IntDef({ + INSTALL_PERMISSION_FIXED, + DEFAULT_TO_DEVICE_PROTECTED_STORAGE, + UPDATE_AVAILABLE, + FORCE_QUERYABLE_OVERRIDE + }) + public @interface Flags { + } + private static final int INSTALL_PERMISSION_FIXED = 1; + private static final int DEFAULT_TO_DEVICE_PROTECTED_STORAGE = 1 << 1; + private static final int UPDATE_AVAILABLE = 1 << 2; + private static final int FORCE_QUERYABLE_OVERRIDE = 1 << 3; + } + private int mBooleans; + + private void setBoolean(@Booleans.Flags int flag, boolean value) { + if (value) { + mBooleans |= flag; + } else { + mBooleans &= ~flag; + } + } + + private boolean getBoolean(@Booleans.Flags int flag) { + return (mBooleans & flag) != 0; + } + /** * The shared user ID lets us link this object to {@link SharedUserSetting}. */ @@ -160,8 +190,6 @@ public class PackageSetting extends SettingBase implements PackageStateInternal @NonNull private PackageSignatures signatures; - private boolean installPermissionsFixed; - @NonNull private PackageKeySetData keySetData = new PackageKeySetData(); @@ -176,17 +204,9 @@ public class PackageSetting extends SettingBase implements PackageStateInternal @Nullable private String volumeUuid; - /** @see PackageState#isDefaultToDeviceProtectedStorage() */ - private boolean defaultToDeviceProtectedStorage; - /** @see PackageState#getCategoryOverride() */ private int categoryOverride = ApplicationInfo.CATEGORY_UNDEFINED; - /** @see PackageState#isUpdateAvailable() */ - private boolean updateAvailable; - - private boolean forceQueryableOverride; - @NonNull private final PackageStateUnserialized pkgState = new PackageStateUnserialized(this); @@ -262,7 +282,8 @@ public class PackageSetting extends SettingBase implements PackageStateInternal this.mRealName = realPkgName; } - PackageSetting(@NonNull PackageSetting original, boolean sealedSnapshot) { + @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) + public PackageSetting(@NonNull PackageSetting original, boolean sealedSnapshot) { super(original); copyPackageSetting(original, sealedSnapshot); if (sealedSnapshot) { @@ -366,7 +387,7 @@ public class PackageSetting extends SettingBase implements PackageStateInternal } public PackageSetting setForceQueryableOverride(boolean forceQueryableOverride) { - this.forceQueryableOverride = forceQueryableOverride; + setBoolean(Booleans.FORCE_QUERYABLE_OVERRIDE, forceQueryableOverride); onChanged(); return this; } @@ -492,7 +513,7 @@ public class PackageSetting extends SettingBase implements PackageStateInternal public PackageSetting setDefaultToDeviceProtectedStorage( boolean defaultToDeviceProtectedStorage) { - this.defaultToDeviceProtectedStorage = defaultToDeviceProtectedStorage; + setBoolean(Booleans.DEFAULT_TO_DEVICE_PROTECTED_STORAGE, defaultToDeviceProtectedStorage); onChanged(); return this; } @@ -503,7 +524,7 @@ public class PackageSetting extends SettingBase implements PackageStateInternal } public PackageSetting setUpdateAvailable(boolean updateAvailable) { - this.updateAvailable = updateAvailable; + setBoolean(Booleans.UPDATE_AVAILABLE, updateAvailable); onChanged(); return this; } @@ -595,7 +616,7 @@ public class PackageSetting extends SettingBase implements PackageStateInternal } public PackageSetting setInstallPermissionsFixed(boolean installPermissionsFixed) { - this.installPermissionsFixed = installPermissionsFixed; + setBoolean(Booleans.INSTALL_PERMISSION_FIXED, installPermissionsFixed); return this; } @@ -645,6 +666,7 @@ public class PackageSetting extends SettingBase implements PackageStateInternal public void copyPackageSetting(PackageSetting other, boolean sealedSnapshot) { super.copySettingBase(other); + mBooleans = other.mBooleans; mSharedUserAppId = other.mSharedUserAppId; mLoadingProgress = other.mLoadingProgress; mLoadingCompletedTime = other.mLoadingCompletedTime; @@ -662,14 +684,10 @@ public class PackageSetting extends SettingBase implements PackageStateInternal lastUpdateTime = other.lastUpdateTime; versionCode = other.versionCode; signatures = other.signatures; - installPermissionsFixed = other.installPermissionsFixed; keySetData = new PackageKeySetData(other.keySetData); installSource = other.installSource; volumeUuid = other.volumeUuid; - defaultToDeviceProtectedStorage = other.defaultToDeviceProtectedStorage; categoryOverride = other.categoryOverride; - updateAvailable = other.updateAvailable; - forceQueryableOverride = other.forceQueryableOverride; mDomainSetId = other.mDomainSetId; mAppMetadataFilePath = other.mAppMetadataFilePath; @@ -1293,7 +1311,7 @@ public class PackageSetting extends SettingBase implements PackageStateInternal @NonNull @Override public List<SharedLibrary> getSharedLibraryDependencies() { - return (List<SharedLibrary>) (List<?>) pkgState.getUsesLibraryInfos(); + return Collections.unmodifiableList(pkgState.getUsesLibraryInfos()); } @NonNull @@ -1305,7 +1323,7 @@ public class PackageSetting extends SettingBase implements PackageStateInternal @NonNull @Override public List<String> getUsesLibraryFiles() { - return pkgState.getUsesLibraryFiles(); + return Collections.unmodifiableList(pkgState.getUsesLibraryFiles()); } @NonNull @@ -1485,6 +1503,32 @@ public class PackageSetting extends SettingBase implements PackageStateInternal return getAndroidPackage() != null && getAndroidPackage().isApex(); } + @Override + public boolean isForceQueryableOverride() { + return getBoolean(Booleans.FORCE_QUERYABLE_OVERRIDE); + } + + /** + * @see PackageState#isUpdateAvailable() + */ + @Override + public boolean isUpdateAvailable() { + return getBoolean(Booleans.UPDATE_AVAILABLE); + } + + @Override + public boolean isInstallPermissionsFixed() { + return getBoolean(Booleans.INSTALL_PERMISSION_FIXED); + } + + /** + * @see PackageState#isDefaultToDeviceProtectedStorage() + */ + @Override + public boolean isDefaultToDeviceProtectedStorage() { + return getBoolean(Booleans.DEFAULT_TO_DEVICE_PROTECTED_STORAGE); + } + // Code below generated by codegen v1.0.23. @@ -1587,11 +1631,6 @@ public class PackageSetting extends SettingBase implements PackageStateInternal } @DataClass.Generated.Member - public boolean isInstallPermissionsFixed() { - return installPermissionsFixed; - } - - @DataClass.Generated.Member public @NonNull PackageKeySetData getKeySetData() { return keySetData; } @@ -1610,14 +1649,6 @@ public class PackageSetting extends SettingBase implements PackageStateInternal } /** - * @see PackageState#isDefaultToDeviceProtectedStorage() - */ - @DataClass.Generated.Member - public boolean isDefaultToDeviceProtectedStorage() { - return defaultToDeviceProtectedStorage; - } - - /** * @see PackageState#getCategoryOverride() */ @DataClass.Generated.Member @@ -1625,19 +1656,6 @@ public class PackageSetting extends SettingBase implements PackageStateInternal return categoryOverride; } - /** - * @see PackageState#isUpdateAvailable() - */ - @DataClass.Generated.Member - public boolean isUpdateAvailable() { - return updateAvailable; - } - - @DataClass.Generated.Member - public boolean isForceQueryableOverride() { - return forceQueryableOverride; - } - @DataClass.Generated.Member public @NonNull PackageStateUnserialized getPkgState() { return pkgState; @@ -1654,10 +1672,10 @@ public class PackageSetting extends SettingBase implements PackageStateInternal } @DataClass.Generated( - time = 1691106047978L, + time = 1691185420362L, codegenVersion = "1.0.23", sourceFile = "frameworks/base/services/core/java/com/android/server/pm/PackageSetting.java", - inputSignatures = "private int mSharedUserAppId\nprivate @android.annotation.Nullable java.util.Map<java.lang.String,java.util.Set<java.lang.String>> mimeGroups\nprivate @java.lang.Deprecated @android.annotation.Nullable java.util.Set<java.lang.String> mOldCodePaths\nprivate @android.annotation.Nullable java.lang.String[] usesSdkLibraries\nprivate @android.annotation.Nullable long[] usesSdkLibrariesVersionsMajor\nprivate @android.annotation.Nullable java.lang.String[] usesStaticLibraries\nprivate @android.annotation.Nullable long[] usesStaticLibrariesVersions\nprivate @android.annotation.Nullable @java.lang.Deprecated java.lang.String legacyNativeLibraryPath\nprivate @android.annotation.NonNull java.lang.String mName\nprivate @android.annotation.Nullable java.lang.String mRealName\nprivate int mAppId\nprivate @android.annotation.Nullable com.android.server.pm.parsing.pkg.AndroidPackageInternal pkg\nprivate @android.annotation.NonNull java.io.File mPath\nprivate @android.annotation.NonNull java.lang.String mPathString\nprivate float mLoadingProgress\nprivate long mLoadingCompletedTime\nprivate @android.annotation.Nullable java.lang.String mPrimaryCpuAbi\nprivate @android.annotation.Nullable java.lang.String mSecondaryCpuAbi\nprivate @android.annotation.Nullable java.lang.String mCpuAbiOverride\nprivate long mLastModifiedTime\nprivate long lastUpdateTime\nprivate long versionCode\nprivate @android.annotation.NonNull com.android.server.pm.PackageSignatures signatures\nprivate boolean installPermissionsFixed\nprivate @android.annotation.NonNull com.android.server.pm.PackageKeySetData keySetData\nprivate final @android.annotation.NonNull android.util.SparseArray<com.android.server.pm.pkg.PackageUserStateImpl> mUserStates\nprivate @android.annotation.NonNull com.android.server.pm.InstallSource installSource\nprivate @android.annotation.Nullable java.lang.String volumeUuid\nprivate boolean defaultToDeviceProtectedStorage\nprivate int categoryOverride\nprivate boolean updateAvailable\nprivate boolean forceQueryableOverride\nprivate final @android.annotation.NonNull com.android.server.pm.pkg.PackageStateUnserialized pkgState\nprivate @android.annotation.NonNull java.util.UUID mDomainSetId\nprivate @android.annotation.Nullable java.lang.String mAppMetadataFilePath\nprivate final @android.annotation.NonNull com.android.server.utils.SnapshotCache<com.android.server.pm.PackageSetting> mSnapshot\nprivate com.android.server.utils.SnapshotCache<com.android.server.pm.PackageSetting> makeCache()\npublic com.android.server.pm.PackageSetting snapshot()\npublic void dumpDebug(android.util.proto.ProtoOutputStream,long,java.util.List<android.content.pm.UserInfo>,com.android.server.pm.permission.LegacyPermissionDataProvider)\npublic com.android.server.pm.PackageSetting setAppId(int)\npublic com.android.server.pm.PackageSetting setCpuAbiOverride(java.lang.String)\npublic com.android.server.pm.PackageSetting setFirstInstallTimeFromReplaced(com.android.server.pm.pkg.PackageStateInternal,int[])\npublic com.android.server.pm.PackageSetting setFirstInstallTime(long,int)\npublic com.android.server.pm.PackageSetting setForceQueryableOverride(boolean)\npublic com.android.server.pm.PackageSetting setInstallerPackage(java.lang.String,int)\npublic com.android.server.pm.PackageSetting setUpdateOwnerPackage(java.lang.String)\npublic com.android.server.pm.PackageSetting setInstallSource(com.android.server.pm.InstallSource)\n com.android.server.pm.PackageSetting removeInstallerPackage(java.lang.String)\npublic com.android.server.pm.PackageSetting setIsOrphaned(boolean)\npublic com.android.server.pm.PackageSetting setKeySetData(com.android.server.pm.PackageKeySetData)\npublic com.android.server.pm.PackageSetting setLastModifiedTime(long)\npublic com.android.server.pm.PackageSetting setLastUpdateTime(long)\npublic com.android.server.pm.PackageSetting setLongVersionCode(long)\npublic boolean setMimeGroup(java.lang.String,android.util.ArraySet<java.lang.String>)\npublic com.android.server.pm.PackageSetting setPkg(com.android.server.pm.pkg.AndroidPackage)\npublic com.android.server.pm.PackageSetting setPkgStateLibraryFiles(java.util.Collection<java.lang.String>)\npublic com.android.server.pm.PackageSetting setPrimaryCpuAbi(java.lang.String)\npublic com.android.server.pm.PackageSetting setSecondaryCpuAbi(java.lang.String)\npublic com.android.server.pm.PackageSetting setSignatures(com.android.server.pm.PackageSignatures)\npublic com.android.server.pm.PackageSetting setVolumeUuid(java.lang.String)\npublic com.android.server.pm.PackageSetting setDefaultToDeviceProtectedStorage(boolean)\npublic @java.lang.Override boolean isExternalStorage()\npublic com.android.server.pm.PackageSetting setUpdateAvailable(boolean)\npublic void setSharedUserAppId(int)\npublic @java.lang.Override int getSharedUserAppId()\npublic @java.lang.Override boolean hasSharedUser()\npublic @java.lang.Override java.lang.String toString()\nprotected void copyMimeGroups(java.util.Map<java.lang.String,java.util.Set<java.lang.String>>)\npublic void updateFrom(com.android.server.pm.PackageSetting)\n com.android.server.pm.PackageSetting updateMimeGroups(java.util.Set<java.lang.String>)\npublic @java.lang.Deprecated @java.lang.Override com.android.server.pm.permission.LegacyPermissionState getLegacyPermissionState()\npublic com.android.server.pm.PackageSetting setInstallPermissionsFixed(boolean)\npublic boolean isPrivileged()\npublic boolean isOem()\npublic boolean isVendor()\npublic boolean isProduct()\npublic @java.lang.Override boolean isRequiredForSystemUser()\npublic boolean isSystemExt()\npublic boolean isOdm()\npublic boolean isSystem()\npublic android.content.pm.SigningDetails getSigningDetails()\npublic com.android.server.pm.PackageSetting setSigningDetails(android.content.pm.SigningDetails)\npublic void copyPackageSetting(com.android.server.pm.PackageSetting,boolean)\n @com.android.internal.annotations.VisibleForTesting com.android.server.pm.pkg.PackageUserStateImpl modifyUserState(int)\npublic com.android.server.pm.pkg.PackageUserStateImpl getOrCreateUserState(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateInternal readUserState(int)\n void setEnabled(int,int,java.lang.String)\n int getEnabled(int)\n void setInstalled(boolean,int)\n boolean getInstalled(int)\n int getInstallReason(int)\n void setInstallReason(int,int)\n int getUninstallReason(int)\n void setUninstallReason(int,int)\n @android.annotation.NonNull android.content.pm.overlay.OverlayPaths getOverlayPaths(int)\n boolean setOverlayPathsForLibrary(java.lang.String,android.content.pm.overlay.OverlayPaths,int)\n boolean isAnyInstalled(int[])\n int[] queryInstalledUsers(int[],boolean)\n long getCeDataInode(int)\n void setCeDataInode(long,int)\n boolean getStopped(int)\n void setStopped(boolean,int)\n boolean getNotLaunched(int)\n void setNotLaunched(boolean,int)\n boolean getHidden(int)\n void setHidden(boolean,int)\n int getDistractionFlags(int)\n void setDistractionFlags(int,int)\npublic boolean getInstantApp(int)\n void setInstantApp(boolean,int)\n boolean getVirtualPreload(int)\n void setVirtualPreload(boolean,int)\n void setUserState(int,long,int,boolean,boolean,boolean,boolean,int,android.util.ArrayMap<java.lang.String,com.android.server.pm.pkg.SuspendParams>,boolean,boolean,java.lang.String,android.util.ArraySet<java.lang.String>,android.util.ArraySet<java.lang.String>,int,int,java.lang.String,java.lang.String,long,int,com.android.server.pm.pkg.ArchiveState)\n void setUserState(int,com.android.server.pm.pkg.PackageUserStateInternal)\n com.android.server.utils.WatchedArraySet<java.lang.String> getEnabledComponents(int)\n com.android.server.utils.WatchedArraySet<java.lang.String> getDisabledComponents(int)\n void setEnabledComponents(com.android.server.utils.WatchedArraySet<java.lang.String>,int)\n void setDisabledComponents(com.android.server.utils.WatchedArraySet<java.lang.String>,int)\n void setEnabledComponentsCopy(com.android.server.utils.WatchedArraySet<java.lang.String>,int)\n void setDisabledComponentsCopy(com.android.server.utils.WatchedArraySet<java.lang.String>,int)\n com.android.server.pm.pkg.PackageUserStateImpl modifyUserStateComponents(int,boolean,boolean)\n void addDisabledComponent(java.lang.String,int)\n void addEnabledComponent(java.lang.String,int)\n boolean enableComponentLPw(java.lang.String,int)\n boolean disableComponentLPw(java.lang.String,int)\n boolean restoreComponentLPw(java.lang.String,int)\n int getCurrentEnabledStateLPr(java.lang.String,int)\n void removeUser(int)\npublic int[] getNotInstalledUserIds()\n void writePackageUserPermissionsProto(android.util.proto.ProtoOutputStream,long,java.util.List<android.content.pm.UserInfo>,com.android.server.pm.permission.LegacyPermissionDataProvider)\nprotected void writeUsersInfoToProto(android.util.proto.ProtoOutputStream,long)\nprivate static void writeArchiveState(android.util.proto.ProtoOutputStream,com.android.server.pm.pkg.ArchiveState)\n com.android.server.pm.PackageSetting setPath(java.io.File)\npublic @com.android.internal.annotations.VisibleForTesting boolean overrideNonLocalizedLabelAndIcon(android.content.ComponentName,java.lang.String,java.lang.Integer,int)\npublic void resetOverrideComponentLabelIcon(int)\npublic @android.annotation.Nullable java.lang.String getSplashScreenTheme(int)\npublic boolean isIncremental()\npublic boolean isLoading()\npublic com.android.server.pm.PackageSetting setLoadingProgress(float)\npublic com.android.server.pm.PackageSetting setLoadingCompletedTime(long)\npublic com.android.server.pm.PackageSetting setAppMetadataFilePath(java.lang.String)\npublic @android.annotation.NonNull @java.lang.Override long getVersionCode()\npublic @android.annotation.Nullable @java.lang.Override java.util.Map<java.lang.String,java.util.Set<java.lang.String>> getMimeGroups()\npublic @android.annotation.NonNull @java.lang.Override java.lang.String getPackageName()\npublic @android.annotation.Nullable @java.lang.Override com.android.server.pm.pkg.AndroidPackage getAndroidPackage()\npublic @android.annotation.NonNull android.content.pm.SigningInfo getSigningInfo()\npublic @android.annotation.NonNull @java.lang.Override java.lang.String[] getUsesSdkLibraries()\npublic @android.annotation.NonNull @java.lang.Override long[] getUsesSdkLibrariesVersionsMajor()\npublic @android.annotation.NonNull @java.lang.Override java.lang.String[] getUsesStaticLibraries()\npublic @android.annotation.NonNull @java.lang.Override long[] getUsesStaticLibrariesVersions()\npublic @android.annotation.NonNull @java.lang.Override java.util.List<com.android.server.pm.pkg.SharedLibrary> getSharedLibraryDependencies()\npublic @android.annotation.NonNull com.android.server.pm.PackageSetting addUsesLibraryInfo(android.content.pm.SharedLibraryInfo)\npublic @android.annotation.NonNull @java.lang.Override java.util.List<java.lang.String> getUsesLibraryFiles()\npublic @android.annotation.NonNull com.android.server.pm.PackageSetting addUsesLibraryFile(java.lang.String)\npublic @java.lang.Override boolean isHiddenUntilInstalled()\npublic @android.annotation.NonNull @java.lang.Override long[] getLastPackageUsageTime()\npublic @java.lang.Override boolean isUpdatedSystemApp()\npublic @java.lang.Override boolean isApkInUpdatedApex()\npublic @android.annotation.Nullable @java.lang.Override java.lang.String getApexModuleName()\npublic com.android.server.pm.PackageSetting setDomainSetId(java.util.UUID)\npublic com.android.server.pm.PackageSetting setCategoryOverride(int)\npublic com.android.server.pm.PackageSetting setLegacyNativeLibraryPath(java.lang.String)\npublic com.android.server.pm.PackageSetting setMimeGroups(java.util.Map<java.lang.String,java.util.Set<java.lang.String>>)\npublic com.android.server.pm.PackageSetting setOldCodePaths(java.util.Set<java.lang.String>)\npublic com.android.server.pm.PackageSetting setUsesSdkLibraries(java.lang.String[])\npublic com.android.server.pm.PackageSetting setUsesSdkLibrariesVersionsMajor(long[])\npublic com.android.server.pm.PackageSetting setUsesStaticLibraries(java.lang.String[])\npublic com.android.server.pm.PackageSetting setUsesStaticLibrariesVersions(long[])\npublic com.android.server.pm.PackageSetting setApexModuleName(java.lang.String)\npublic @android.annotation.NonNull @java.lang.Override com.android.server.pm.pkg.PackageStateUnserialized getTransientState()\npublic @android.annotation.NonNull android.util.SparseArray<? extends PackageUserStateInternal> getUserStates()\npublic com.android.server.pm.PackageSetting addMimeTypes(java.lang.String,java.util.Set<java.lang.String>)\npublic @android.annotation.NonNull @java.lang.Override com.android.server.pm.pkg.PackageUserState getStateForUser(android.os.UserHandle)\npublic @android.annotation.Nullable java.lang.String getPrimaryCpuAbi()\npublic @android.annotation.Nullable java.lang.String getSecondaryCpuAbi()\npublic @android.annotation.Nullable @java.lang.Override java.lang.String getSeInfo()\npublic @android.annotation.Nullable java.lang.String getPrimaryCpuAbiLegacy()\npublic @android.annotation.Nullable java.lang.String getSecondaryCpuAbiLegacy()\npublic @android.content.pm.ApplicationInfo.HiddenApiEnforcementPolicy @java.lang.Override int getHiddenApiEnforcementPolicy()\npublic @java.lang.Override boolean isApex()\nclass PackageSetting extends com.android.server.pm.SettingBase implements [com.android.server.pm.pkg.PackageStateInternal]\n@com.android.internal.util.DataClass(genGetters=true, genConstructor=false, genSetters=false, genBuilder=false)") + inputSignatures = "private int mBooleans\nprivate int mSharedUserAppId\nprivate @android.annotation.Nullable java.util.Map<java.lang.String,java.util.Set<java.lang.String>> mimeGroups\nprivate @java.lang.Deprecated @android.annotation.Nullable java.util.Set<java.lang.String> mOldCodePaths\nprivate @android.annotation.Nullable java.lang.String[] usesSdkLibraries\nprivate @android.annotation.Nullable long[] usesSdkLibrariesVersionsMajor\nprivate @android.annotation.Nullable java.lang.String[] usesStaticLibraries\nprivate @android.annotation.Nullable long[] usesStaticLibrariesVersions\nprivate @android.annotation.Nullable @java.lang.Deprecated java.lang.String legacyNativeLibraryPath\nprivate @android.annotation.NonNull java.lang.String mName\nprivate @android.annotation.Nullable java.lang.String mRealName\nprivate int mAppId\nprivate @android.annotation.Nullable com.android.server.pm.parsing.pkg.AndroidPackageInternal pkg\nprivate @android.annotation.NonNull java.io.File mPath\nprivate @android.annotation.NonNull java.lang.String mPathString\nprivate float mLoadingProgress\nprivate long mLoadingCompletedTime\nprivate @android.annotation.Nullable java.lang.String mPrimaryCpuAbi\nprivate @android.annotation.Nullable java.lang.String mSecondaryCpuAbi\nprivate @android.annotation.Nullable java.lang.String mCpuAbiOverride\nprivate long mLastModifiedTime\nprivate long lastUpdateTime\nprivate long versionCode\nprivate @android.annotation.NonNull com.android.server.pm.PackageSignatures signatures\nprivate @android.annotation.NonNull com.android.server.pm.PackageKeySetData keySetData\nprivate final @android.annotation.NonNull android.util.SparseArray<com.android.server.pm.pkg.PackageUserStateImpl> mUserStates\nprivate @android.annotation.NonNull com.android.server.pm.InstallSource installSource\nprivate @android.annotation.Nullable java.lang.String volumeUuid\nprivate int categoryOverride\nprivate final @android.annotation.NonNull com.android.server.pm.pkg.PackageStateUnserialized pkgState\nprivate @android.annotation.NonNull java.util.UUID mDomainSetId\nprivate @android.annotation.Nullable java.lang.String mAppMetadataFilePath\nprivate final @android.annotation.NonNull com.android.server.utils.SnapshotCache<com.android.server.pm.PackageSetting> mSnapshot\nprivate void setBoolean(int,boolean)\nprivate boolean getBoolean(int)\nprivate com.android.server.utils.SnapshotCache<com.android.server.pm.PackageSetting> makeCache()\npublic com.android.server.pm.PackageSetting snapshot()\npublic void dumpDebug(android.util.proto.ProtoOutputStream,long,java.util.List<android.content.pm.UserInfo>,com.android.server.pm.permission.LegacyPermissionDataProvider)\npublic com.android.server.pm.PackageSetting setAppId(int)\npublic com.android.server.pm.PackageSetting setCpuAbiOverride(java.lang.String)\npublic com.android.server.pm.PackageSetting setFirstInstallTimeFromReplaced(com.android.server.pm.pkg.PackageStateInternal,int[])\npublic com.android.server.pm.PackageSetting setFirstInstallTime(long,int)\npublic com.android.server.pm.PackageSetting setForceQueryableOverride(boolean)\npublic com.android.server.pm.PackageSetting setInstallerPackage(java.lang.String,int)\npublic com.android.server.pm.PackageSetting setUpdateOwnerPackage(java.lang.String)\npublic com.android.server.pm.PackageSetting setInstallSource(com.android.server.pm.InstallSource)\n com.android.server.pm.PackageSetting removeInstallerPackage(java.lang.String)\npublic com.android.server.pm.PackageSetting setIsOrphaned(boolean)\npublic com.android.server.pm.PackageSetting setKeySetData(com.android.server.pm.PackageKeySetData)\npublic com.android.server.pm.PackageSetting setLastModifiedTime(long)\npublic com.android.server.pm.PackageSetting setLastUpdateTime(long)\npublic com.android.server.pm.PackageSetting setLongVersionCode(long)\npublic boolean setMimeGroup(java.lang.String,android.util.ArraySet<java.lang.String>)\npublic com.android.server.pm.PackageSetting setPkg(com.android.server.pm.pkg.AndroidPackage)\npublic com.android.server.pm.PackageSetting setPkgStateLibraryFiles(java.util.Collection<java.lang.String>)\npublic com.android.server.pm.PackageSetting setPrimaryCpuAbi(java.lang.String)\npublic com.android.server.pm.PackageSetting setSecondaryCpuAbi(java.lang.String)\npublic com.android.server.pm.PackageSetting setSignatures(com.android.server.pm.PackageSignatures)\npublic com.android.server.pm.PackageSetting setVolumeUuid(java.lang.String)\npublic com.android.server.pm.PackageSetting setDefaultToDeviceProtectedStorage(boolean)\npublic @java.lang.Override boolean isExternalStorage()\npublic com.android.server.pm.PackageSetting setUpdateAvailable(boolean)\npublic void setSharedUserAppId(int)\npublic @java.lang.Override int getSharedUserAppId()\npublic @java.lang.Override boolean hasSharedUser()\npublic @java.lang.Override java.lang.String toString()\nprotected void copyMimeGroups(java.util.Map<java.lang.String,java.util.Set<java.lang.String>>)\npublic void updateFrom(com.android.server.pm.PackageSetting)\n com.android.server.pm.PackageSetting updateMimeGroups(java.util.Set<java.lang.String>)\npublic @java.lang.Deprecated @java.lang.Override com.android.server.pm.permission.LegacyPermissionState getLegacyPermissionState()\npublic com.android.server.pm.PackageSetting setInstallPermissionsFixed(boolean)\npublic boolean isPrivileged()\npublic boolean isOem()\npublic boolean isVendor()\npublic boolean isProduct()\npublic @java.lang.Override boolean isRequiredForSystemUser()\npublic boolean isSystemExt()\npublic boolean isOdm()\npublic boolean isSystem()\npublic android.content.pm.SigningDetails getSigningDetails()\npublic com.android.server.pm.PackageSetting setSigningDetails(android.content.pm.SigningDetails)\npublic void copyPackageSetting(com.android.server.pm.PackageSetting,boolean)\n @com.android.internal.annotations.VisibleForTesting com.android.server.pm.pkg.PackageUserStateImpl modifyUserState(int)\npublic com.android.server.pm.pkg.PackageUserStateImpl getOrCreateUserState(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateInternal readUserState(int)\n void setEnabled(int,int,java.lang.String)\n int getEnabled(int)\n void setInstalled(boolean,int)\n boolean getInstalled(int)\n int getInstallReason(int)\n void setInstallReason(int,int)\n int getUninstallReason(int)\n void setUninstallReason(int,int)\n @android.annotation.NonNull android.content.pm.overlay.OverlayPaths getOverlayPaths(int)\n boolean setOverlayPathsForLibrary(java.lang.String,android.content.pm.overlay.OverlayPaths,int)\n boolean isAnyInstalled(int[])\n int[] queryInstalledUsers(int[],boolean)\n long getCeDataInode(int)\n void setCeDataInode(long,int)\n boolean getStopped(int)\n void setStopped(boolean,int)\n boolean getNotLaunched(int)\n void setNotLaunched(boolean,int)\n boolean getHidden(int)\n void setHidden(boolean,int)\n int getDistractionFlags(int)\n void setDistractionFlags(int,int)\npublic boolean getInstantApp(int)\n void setInstantApp(boolean,int)\n boolean getVirtualPreload(int)\n void setVirtualPreload(boolean,int)\n void setUserState(int,long,int,boolean,boolean,boolean,boolean,int,android.util.ArrayMap<java.lang.String,com.android.server.pm.pkg.SuspendParams>,boolean,boolean,java.lang.String,android.util.ArraySet<java.lang.String>,android.util.ArraySet<java.lang.String>,int,int,java.lang.String,java.lang.String,long,int,com.android.server.pm.pkg.ArchiveState)\n void setUserState(int,com.android.server.pm.pkg.PackageUserStateInternal)\n com.android.server.utils.WatchedArraySet<java.lang.String> getEnabledComponents(int)\n com.android.server.utils.WatchedArraySet<java.lang.String> getDisabledComponents(int)\n void setEnabledComponents(com.android.server.utils.WatchedArraySet<java.lang.String>,int)\n void setDisabledComponents(com.android.server.utils.WatchedArraySet<java.lang.String>,int)\n void setEnabledComponentsCopy(com.android.server.utils.WatchedArraySet<java.lang.String>,int)\n void setDisabledComponentsCopy(com.android.server.utils.WatchedArraySet<java.lang.String>,int)\n com.android.server.pm.pkg.PackageUserStateImpl modifyUserStateComponents(int,boolean,boolean)\n void addDisabledComponent(java.lang.String,int)\n void addEnabledComponent(java.lang.String,int)\n boolean enableComponentLPw(java.lang.String,int)\n boolean disableComponentLPw(java.lang.String,int)\n boolean restoreComponentLPw(java.lang.String,int)\n int getCurrentEnabledStateLPr(java.lang.String,int)\n void removeUser(int)\npublic int[] getNotInstalledUserIds()\n void writePackageUserPermissionsProto(android.util.proto.ProtoOutputStream,long,java.util.List<android.content.pm.UserInfo>,com.android.server.pm.permission.LegacyPermissionDataProvider)\nprotected void writeUsersInfoToProto(android.util.proto.ProtoOutputStream,long)\nprivate static void writeArchiveState(android.util.proto.ProtoOutputStream,com.android.server.pm.pkg.ArchiveState)\n com.android.server.pm.PackageSetting setPath(java.io.File)\npublic @com.android.internal.annotations.VisibleForTesting boolean overrideNonLocalizedLabelAndIcon(android.content.ComponentName,java.lang.String,java.lang.Integer,int)\npublic void resetOverrideComponentLabelIcon(int)\npublic @android.annotation.Nullable java.lang.String getSplashScreenTheme(int)\npublic boolean isIncremental()\npublic boolean isLoading()\npublic com.android.server.pm.PackageSetting setLoadingProgress(float)\npublic com.android.server.pm.PackageSetting setLoadingCompletedTime(long)\npublic com.android.server.pm.PackageSetting setAppMetadataFilePath(java.lang.String)\npublic @android.annotation.NonNull @java.lang.Override long getVersionCode()\npublic @android.annotation.Nullable @java.lang.Override java.util.Map<java.lang.String,java.util.Set<java.lang.String>> getMimeGroups()\npublic @android.annotation.NonNull @java.lang.Override java.lang.String getPackageName()\npublic @android.annotation.Nullable @java.lang.Override com.android.server.pm.pkg.AndroidPackage getAndroidPackage()\npublic @android.annotation.NonNull android.content.pm.SigningInfo getSigningInfo()\npublic @android.annotation.NonNull @java.lang.Override java.lang.String[] getUsesSdkLibraries()\npublic @android.annotation.NonNull @java.lang.Override long[] getUsesSdkLibrariesVersionsMajor()\npublic @android.annotation.NonNull @java.lang.Override java.lang.String[] getUsesStaticLibraries()\npublic @android.annotation.NonNull @java.lang.Override long[] getUsesStaticLibrariesVersions()\npublic @android.annotation.NonNull @java.lang.Override java.util.List<com.android.server.pm.pkg.SharedLibrary> getSharedLibraryDependencies()\npublic @android.annotation.NonNull com.android.server.pm.PackageSetting addUsesLibraryInfo(android.content.pm.SharedLibraryInfo)\npublic @android.annotation.NonNull @java.lang.Override java.util.List<java.lang.String> getUsesLibraryFiles()\npublic @android.annotation.NonNull com.android.server.pm.PackageSetting addUsesLibraryFile(java.lang.String)\npublic @java.lang.Override boolean isHiddenUntilInstalled()\npublic @android.annotation.NonNull @java.lang.Override long[] getLastPackageUsageTime()\npublic @java.lang.Override boolean isUpdatedSystemApp()\npublic @java.lang.Override boolean isApkInUpdatedApex()\npublic @android.annotation.Nullable @java.lang.Override java.lang.String getApexModuleName()\npublic com.android.server.pm.PackageSetting setDomainSetId(java.util.UUID)\npublic com.android.server.pm.PackageSetting setCategoryOverride(int)\npublic com.android.server.pm.PackageSetting setLegacyNativeLibraryPath(java.lang.String)\npublic com.android.server.pm.PackageSetting setMimeGroups(java.util.Map<java.lang.String,java.util.Set<java.lang.String>>)\npublic com.android.server.pm.PackageSetting setOldCodePaths(java.util.Set<java.lang.String>)\npublic com.android.server.pm.PackageSetting setUsesSdkLibraries(java.lang.String[])\npublic com.android.server.pm.PackageSetting setUsesSdkLibrariesVersionsMajor(long[])\npublic com.android.server.pm.PackageSetting setUsesStaticLibraries(java.lang.String[])\npublic com.android.server.pm.PackageSetting setUsesStaticLibrariesVersions(long[])\npublic com.android.server.pm.PackageSetting setApexModuleName(java.lang.String)\npublic @android.annotation.NonNull @java.lang.Override com.android.server.pm.pkg.PackageStateUnserialized getTransientState()\npublic @android.annotation.NonNull android.util.SparseArray<? extends PackageUserStateInternal> getUserStates()\npublic com.android.server.pm.PackageSetting addMimeTypes(java.lang.String,java.util.Set<java.lang.String>)\npublic @android.annotation.NonNull @java.lang.Override com.android.server.pm.pkg.PackageUserState getStateForUser(android.os.UserHandle)\npublic @android.annotation.Nullable java.lang.String getPrimaryCpuAbi()\npublic @android.annotation.Nullable java.lang.String getSecondaryCpuAbi()\npublic @android.annotation.Nullable @java.lang.Override java.lang.String getSeInfo()\npublic @android.annotation.Nullable java.lang.String getPrimaryCpuAbiLegacy()\npublic @android.annotation.Nullable java.lang.String getSecondaryCpuAbiLegacy()\npublic @android.content.pm.ApplicationInfo.HiddenApiEnforcementPolicy @java.lang.Override int getHiddenApiEnforcementPolicy()\npublic @java.lang.Override boolean isApex()\npublic @java.lang.Override boolean isForceQueryableOverride()\npublic @java.lang.Override boolean isUpdateAvailable()\npublic @java.lang.Override boolean isInstallPermissionsFixed()\npublic @java.lang.Override boolean isDefaultToDeviceProtectedStorage()\nclass PackageSetting extends com.android.server.pm.SettingBase implements [com.android.server.pm.pkg.PackageStateInternal]\nprivate static final int INSTALL_PERMISSION_FIXED\nprivate static final int DEFAULT_TO_DEVICE_PROTECTED_STORAGE\nprivate static final int UPDATE_AVAILABLE\nprivate static final int FORCE_QUERYABLE_OVERRIDE\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genGetters=true, genConstructor=false, genSetters=false, genBuilder=false)") @Deprecated private void __metadata() {} diff --git a/services/core/java/com/android/server/pm/pkg/PackageState.java b/services/core/java/com/android/server/pm/pkg/PackageState.java index 492e0ce0c9e6..3f347e465f81 100644 --- a/services/core/java/com/android/server/pm/pkg/PackageState.java +++ b/services/core/java/com/android/server/pm/pkg/PackageState.java @@ -59,11 +59,6 @@ import java.util.Set; public interface PackageState { /* - * Until immutability or read-only caching is enabled, {@link PackageSetting} cannot be - * returned directly, so {@link PackageStateImpl} is used to temporarily copy the data. - * This is a relatively expensive operation since it has to create an object for every package, - * but it's much lighter than the alternative of generating {@link PackageInfo} objects. - * <p> * TODO: Documentation * TODO: Currently missing, should be exposed as API? * - keySetData diff --git a/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java b/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java deleted file mode 100644 index 40602712030f..000000000000 --- a/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java +++ /dev/null @@ -1,770 +0,0 @@ -/* - * Copyright (C) 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server.pm.pkg; - -import android.annotation.IntDef; -import android.annotation.LongDef; -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.content.pm.PackageManagerInternal; -import android.content.pm.SigningInfo; -import android.content.pm.overlay.OverlayPaths; -import android.os.UserHandle; -import android.util.ArraySet; -import android.util.SparseArray; - -import com.android.internal.util.DataClass; -import com.android.server.pm.PackageManagerService; -import com.android.server.pm.PackageSetting; -import com.android.server.pm.Settings; - -import java.io.File; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.function.Consumer; - -/** - * Because a {@link PackageSetting} cannot be returned from {@link Settings} without holding the - * {@link PackageManagerService#mLock}, this class serves as a memory snapshot of the state of a - * single package, for use with {@link PackageManagerInternal#getPackageState(String)} and {@link - * PackageManagerInternal#forEachPackageState(boolean, Consumer)}. - * - * @hide - */ -@DataClass(genConstructor = false) -@DataClass.Suppress({"mUserStates"}) -public class PackageStateImpl implements PackageState { - - public static PackageState copy(@NonNull PackageStateInternal pkgSetting) { - return new PackageStateImpl(pkgSetting, pkgSetting.getPkg()); - } - - private static class Booleans { - @LongDef({ - SYSTEM, - EXTERNAL_STORAGE, - PRIVILEGED, - OEM, - VENDOR, - PRODUCT, - SYSTEM_EXT, - REQUIRED_FOR_SYSTEM_USER, - ODM, - FORCE_QUERYABLE_OVERRIDE, - HIDDEN_UNTIL_INSTALLED, - INSTALL_PERMISSIONS_FIXED, - UPDATE_AVAILABLE, - UPDATED_SYSTEM_APP, - APK_IN_UPDATED_APEX, - DEFAULT_TO_DEVICE_PROTECTED_STORAGE, - }) - public @interface Flags { - } - - private static final long SYSTEM = 1; - private static final long EXTERNAL_STORAGE = 1 << 1; - private static final long PRIVILEGED = 1 << 2; - private static final long OEM = 1 << 3; - private static final long VENDOR = 1 << 4; - private static final long PRODUCT = 1 << 5; - private static final long SYSTEM_EXT = 1 << 6; - private static final long REQUIRED_FOR_SYSTEM_USER = 1 << 7; - private static final long ODM = 1 << 8; - private static final long FORCE_QUERYABLE_OVERRIDE = 1 << 9; - private static final long HIDDEN_UNTIL_INSTALLED = 1 << 10; - private static final long INSTALL_PERMISSIONS_FIXED = 1 << 11; - private static final long UPDATE_AVAILABLE = 1 << 12; - private static final long UPDATED_SYSTEM_APP = 1 << 13; - private static final long APK_IN_UPDATED_APEX = 1 << 14; - private static final long DEFAULT_TO_DEVICE_PROTECTED_STORAGE = 1L << 15; - } - - private long mBooleans; - - private void setBoolean(@Booleans.Flags long flag, boolean value) { - if (value) { - mBooleans |= flag; - } else { - mBooleans &= ~flag; - } - } - - private boolean getBoolean(@Booleans.Flags long flag) { - return (mBooleans & flag) != 0; - } - - @Nullable - private final AndroidPackage mAndroidPackage; - - @NonNull - private final String mPackageName; - @Nullable - private final String mVolumeUuid; - private final int mAppId; - private final int mCategoryOverride; - @Nullable - private final String mCpuAbiOverride; - @ApplicationInfo.HiddenApiEnforcementPolicy - private final int mHiddenApiEnforcementPolicy; - private final long mLastModifiedTime; - private final long mLastUpdateTime; - private final long mLongVersionCode; - @NonNull - private final Map<String, Set<String>> mMimeGroups; - @NonNull - private final File mPath; - @Nullable - private final String mPrimaryCpuAbi; - @Nullable - private final String mSecondaryCpuAbi; - @Nullable - private final String mSeInfo; - private final boolean mHasSharedUser; - private final int mSharedUserAppId; - @NonNull - private final String[] mUsesSdkLibraries; - @NonNull - private final long[] mUsesSdkLibrariesVersionsMajor; - @NonNull - private final String[] mUsesStaticLibraries; - @NonNull - private final long[] mUsesStaticLibrariesVersions; - @NonNull - private final List<SharedLibrary> mSharedLibraryDependencies; - @NonNull - private final List<String> mUsesLibraryFiles; - @NonNull - private final long[] mLastPackageUsageTime; - @NonNull - private final SigningInfo mSigningInfo; - @NonNull - private final SparseArray<PackageUserState> mUserStates; - @Nullable - private final String mApexModuleName; - - private PackageStateImpl(@NonNull PackageState pkgState, @Nullable AndroidPackage pkg) { - mAndroidPackage = pkg; - - setBoolean(Booleans.SYSTEM, pkgState.isSystem()); - setBoolean(Booleans.EXTERNAL_STORAGE, pkgState.isExternalStorage()); - setBoolean(Booleans.PRIVILEGED, pkgState.isPrivileged()); - setBoolean(Booleans.OEM, pkgState.isOem()); - setBoolean(Booleans.VENDOR, pkgState.isVendor()); - setBoolean(Booleans.PRODUCT, pkgState.isProduct()); - setBoolean(Booleans.SYSTEM_EXT, pkgState.isSystemExt()); - setBoolean(Booleans.REQUIRED_FOR_SYSTEM_USER, pkgState.isRequiredForSystemUser()); - setBoolean(Booleans.ODM, pkgState.isOdm()); - - mPackageName = pkgState.getPackageName(); - mVolumeUuid = pkgState.getVolumeUuid(); - setBoolean(Booleans.DEFAULT_TO_DEVICE_PROTECTED_STORAGE, - pkgState.isDefaultToDeviceProtectedStorage()); - mAppId = pkgState.getAppId(); - mCategoryOverride = pkgState.getCategoryOverride(); - mCpuAbiOverride = pkgState.getCpuAbiOverride(); - mHiddenApiEnforcementPolicy = pkgState.getHiddenApiEnforcementPolicy(); - mLastModifiedTime = pkgState.getLastModifiedTime(); - mLastUpdateTime = pkgState.getLastUpdateTime(); - mLongVersionCode = pkgState.getVersionCode(); - mMimeGroups = Collections.unmodifiableMap(pkgState.getMimeGroups()); - mPath = pkgState.getPath(); - mPrimaryCpuAbi = pkgState.getPrimaryCpuAbi(); - mSecondaryCpuAbi = pkgState.getSecondaryCpuAbi(); - mSeInfo = pkgState.getSeInfo(); - mHasSharedUser = pkgState.hasSharedUser(); - mSharedUserAppId = pkgState.getSharedUserAppId(); - mUsesSdkLibraries = pkgState.getUsesSdkLibraries(); - mUsesSdkLibrariesVersionsMajor = pkgState.getUsesSdkLibrariesVersionsMajor(); - mUsesStaticLibraries = pkgState.getUsesStaticLibraries(); - mUsesStaticLibrariesVersions = pkgState.getUsesStaticLibrariesVersions(); - mSharedLibraryDependencies = - Collections.unmodifiableList(pkgState.getSharedLibraryDependencies()); - mUsesLibraryFiles = Collections.unmodifiableList(pkgState.getUsesLibraryFiles()); - setBoolean(Booleans.FORCE_QUERYABLE_OVERRIDE, pkgState.isForceQueryableOverride()); - setBoolean(Booleans.HIDDEN_UNTIL_INSTALLED, pkgState.isHiddenUntilInstalled()); - setBoolean(Booleans.INSTALL_PERMISSIONS_FIXED, pkgState.isInstallPermissionsFixed()); - setBoolean(Booleans.UPDATE_AVAILABLE, pkgState.isUpdateAvailable()); - mLastPackageUsageTime = pkgState.getLastPackageUsageTime(); - setBoolean(Booleans.UPDATED_SYSTEM_APP, pkgState.isUpdatedSystemApp()); - setBoolean(Booleans.APK_IN_UPDATED_APEX, pkgState.isApkInUpdatedApex()); - mSigningInfo = pkgState.getSigningInfo(); - - SparseArray<? extends PackageUserState> userStates = pkgState.getUserStates(); - int userStatesSize = userStates.size(); - mUserStates = new SparseArray<>(userStatesSize); - for (int index = 0; index < userStatesSize; index++) { - mUserStates.put(userStates.keyAt(index), - UserStateImpl.copy(userStates.valueAt(index))); - } - - mApexModuleName = pkgState.getApexModuleName(); - } - - @NonNull - @Override - public PackageUserState getStateForUser(@NonNull UserHandle user) { - PackageUserState userState = getUserStates().get(user.getIdentifier()); - return userState == null ? PackageUserState.DEFAULT : userState; - } - - @Override - public boolean isExternalStorage() { - return getBoolean(Booleans.EXTERNAL_STORAGE); - } - - @Override - public boolean isForceQueryableOverride() { - return getBoolean(Booleans.FORCE_QUERYABLE_OVERRIDE); - } - - @Override - public boolean isHiddenUntilInstalled() { - return getBoolean(Booleans.HIDDEN_UNTIL_INSTALLED); - } - - @Override - public boolean isInstallPermissionsFixed() { - return getBoolean(Booleans.INSTALL_PERMISSIONS_FIXED); - } - - @Override - public boolean isOdm() { - return getBoolean(Booleans.ODM); - } - - @Override - public boolean isOem() { - return getBoolean(Booleans.OEM); - } - - @Override - public boolean isPrivileged() { - return getBoolean(Booleans.PRIVILEGED); - } - - @Override - public boolean isProduct() { - return getBoolean(Booleans.PRODUCT); - } - - @Override - public boolean isRequiredForSystemUser() { - return getBoolean(Booleans.REQUIRED_FOR_SYSTEM_USER); - } - - @Override - public boolean isSystem() { - return getBoolean(Booleans.SYSTEM); - } - - @Override - public boolean isSystemExt() { - return getBoolean(Booleans.SYSTEM_EXT); - } - - @Override - public boolean isUpdateAvailable() { - return getBoolean(Booleans.UPDATE_AVAILABLE); - } - - @Override - public boolean isUpdatedSystemApp() { - return getBoolean(Booleans.UPDATED_SYSTEM_APP); - } - - @Override - public boolean isApkInUpdatedApex() { - return getBoolean(Booleans.APK_IN_UPDATED_APEX); - } - - @Override - public boolean isVendor() { - return getBoolean(Booleans.VENDOR); - } - - @Override - public long getVersionCode() { - return mLongVersionCode; - } - - @Override - public boolean hasSharedUser() { - return mHasSharedUser; - } - - @Override - public boolean isApex() { - return getAndroidPackage() != null && getAndroidPackage().isApex(); - } - - @Override - public boolean isDefaultToDeviceProtectedStorage() { - return getBoolean(Booleans.DEFAULT_TO_DEVICE_PROTECTED_STORAGE); - } - - /** - * @hide - */ - @DataClass(genConstructor = false) - public static class UserStateImpl implements PackageUserState { - - public static PackageUserState copy(@NonNull PackageUserState state) { - return new UserStateImpl(state); - } - - private static class Booleans { - @IntDef({ - HIDDEN, - INSTALLED, - INSTANT_APP, - NOT_LAUNCHED, - STOPPED, - SUSPENDED, - VIRTUAL_PRELOAD, - }) - public @interface Flags { - } - - private static final int HIDDEN = 1; - private static final int INSTALLED = 1 << 1; - private static final int INSTANT_APP = 1 << 2; - private static final int NOT_LAUNCHED = 1 << 3; - private static final int STOPPED = 1 << 4; - private static final int SUSPENDED = 1 << 5; - private static final int VIRTUAL_PRELOAD = 1 << 6; - } - - private int mBooleans; - - private void setBoolean(@Booleans.Flags int flag, boolean value) { - if (value) { - mBooleans |= flag; - } else { - mBooleans &= ~flag; - } - } - - private boolean getBoolean(@Booleans.Flags int flag) { - return (mBooleans & flag) != 0; - } - - private final long mCeDataInode; - @NonNull - private final ArraySet<String> mDisabledComponents; - @PackageManager.DistractionRestriction - private final int mDistractionFlags; - @NonNull - private final ArraySet<String> mEnabledComponents; - private final int mEnabledState; - @Nullable - private final String mHarmfulAppWarning; - @PackageManager.InstallReason - private final int mInstallReason; - @Nullable - private final String mLastDisableAppCaller; - @NonNull - private final OverlayPaths mOverlayPaths; - @NonNull - private final Map<String, OverlayPaths> mSharedLibraryOverlayPaths; - @PackageManager.UninstallReason - private final int mUninstallReason; - @Nullable - private final String mSplashScreenTheme; - @PackageManager.UserMinAspectRatio - private final int mMinAspectRatio; - private final long mFirstInstallTimeMillis; - @Nullable - private final ArchiveState mArchiveState; - - private UserStateImpl(@NonNull PackageUserState userState) { - mCeDataInode = userState.getCeDataInode(); - mDisabledComponents = userState.getDisabledComponents(); - mDistractionFlags = userState.getDistractionFlags(); - mEnabledComponents = userState.getEnabledComponents(); - mEnabledState = userState.getEnabledState(); - mHarmfulAppWarning = userState.getHarmfulAppWarning(); - mInstallReason = userState.getInstallReason(); - mLastDisableAppCaller = userState.getLastDisableAppCaller(); - mOverlayPaths = userState.getOverlayPaths(); - mSharedLibraryOverlayPaths = userState.getSharedLibraryOverlayPaths(); - mUninstallReason = userState.getUninstallReason(); - mSplashScreenTheme = userState.getSplashScreenTheme(); - mMinAspectRatio = userState.getMinAspectRatio(); - setBoolean(Booleans.HIDDEN, userState.isHidden()); - setBoolean(Booleans.INSTALLED, userState.isInstalled()); - setBoolean(Booleans.INSTANT_APP, userState.isInstantApp()); - setBoolean(Booleans.NOT_LAUNCHED, userState.isNotLaunched()); - setBoolean(Booleans.STOPPED, userState.isStopped()); - setBoolean(Booleans.SUSPENDED, userState.isSuspended()); - setBoolean(Booleans.VIRTUAL_PRELOAD, userState.isVirtualPreload()); - mFirstInstallTimeMillis = userState.getFirstInstallTimeMillis(); - mArchiveState = userState.getArchiveState(); - } - - @Override - public boolean isHidden() { - return getBoolean(Booleans.HIDDEN); - } - - @Override - public boolean isInstalled() { - return getBoolean(Booleans.INSTALLED); - } - - @Override - public boolean isInstantApp() { - return getBoolean(Booleans.INSTANT_APP); - } - - @Override - public boolean isNotLaunched() { - return getBoolean(Booleans.NOT_LAUNCHED); - } - - @Override - public boolean isStopped() { - return getBoolean(Booleans.STOPPED); - } - - @Override - public boolean isSuspended() { - return getBoolean(Booleans.SUSPENDED); - } - - @Override - public boolean isVirtualPreload() { - return getBoolean(Booleans.VIRTUAL_PRELOAD); - } - - @Override - public boolean isComponentEnabled(String componentName) { - return mEnabledComponents.contains(componentName); - } - - @Override - public boolean isComponentDisabled(String componentName) { - return mDisabledComponents.contains(componentName); - } - - @Override - public OverlayPaths getAllOverlayPaths() { - if (mOverlayPaths == null && mSharedLibraryOverlayPaths == null) { - return null; - } - final OverlayPaths.Builder newPaths = new OverlayPaths.Builder(); - newPaths.addAll(mOverlayPaths); - if (mSharedLibraryOverlayPaths != null) { - for (final OverlayPaths libOverlayPaths : mSharedLibraryOverlayPaths.values()) { - newPaths.addAll(libOverlayPaths); - } - } - return newPaths.build(); - } - - - - // Code below generated by codegen v1.0.23. - // - // DO NOT MODIFY! - // CHECKSTYLE:OFF Generated code - // - // To regenerate run: - // $ codegen $ANDROID_BUILD_TOP/frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java - // - // To exclude the generated code from IntelliJ auto-formatting enable (one-time): - // Settings > Editor > Code Style > Formatter Control - //@formatter:off - - - @DataClass.Generated.Member - public int getBooleans() { - return mBooleans; - } - - @DataClass.Generated.Member - public long getCeDataInode() { - return mCeDataInode; - } - - @DataClass.Generated.Member - public @NonNull ArraySet<String> getDisabledComponents() { - return mDisabledComponents; - } - - @DataClass.Generated.Member - public @PackageManager.DistractionRestriction int getDistractionFlags() { - return mDistractionFlags; - } - - @DataClass.Generated.Member - public @NonNull ArraySet<String> getEnabledComponents() { - return mEnabledComponents; - } - - @DataClass.Generated.Member - public int getEnabledState() { - return mEnabledState; - } - - @DataClass.Generated.Member - public @Nullable String getHarmfulAppWarning() { - return mHarmfulAppWarning; - } - - @DataClass.Generated.Member - public @PackageManager.InstallReason int getInstallReason() { - return mInstallReason; - } - - @DataClass.Generated.Member - public @Nullable String getLastDisableAppCaller() { - return mLastDisableAppCaller; - } - - @DataClass.Generated.Member - public @NonNull OverlayPaths getOverlayPaths() { - return mOverlayPaths; - } - - @DataClass.Generated.Member - public @NonNull Map<String,OverlayPaths> getSharedLibraryOverlayPaths() { - return mSharedLibraryOverlayPaths; - } - - @DataClass.Generated.Member - public @PackageManager.UninstallReason int getUninstallReason() { - return mUninstallReason; - } - - @DataClass.Generated.Member - public @Nullable String getSplashScreenTheme() { - return mSplashScreenTheme; - } - - @DataClass.Generated.Member - public @PackageManager.UserMinAspectRatio int getMinAspectRatio() { - return mMinAspectRatio; - } - - @DataClass.Generated.Member - public long getFirstInstallTimeMillis() { - return mFirstInstallTimeMillis; - } - - @DataClass.Generated.Member - public @Nullable ArchiveState getArchiveState() { - return mArchiveState; - } - - @DataClass.Generated.Member - public @NonNull UserStateImpl setBooleans( int value) { - mBooleans = value; - return this; - } - - @DataClass.Generated( - time = 1691182986740L, - codegenVersion = "1.0.23", - sourceFile = "frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java", - inputSignatures = "private int mBooleans\nprivate final long mCeDataInode\nprivate final @android.annotation.NonNull android.util.ArraySet<java.lang.String> mDisabledComponents\nprivate final @android.content.pm.PackageManager.DistractionRestriction int mDistractionFlags\nprivate final @android.annotation.NonNull android.util.ArraySet<java.lang.String> mEnabledComponents\nprivate final int mEnabledState\nprivate final @android.annotation.Nullable java.lang.String mHarmfulAppWarning\nprivate final @android.content.pm.PackageManager.InstallReason int mInstallReason\nprivate final @android.annotation.Nullable java.lang.String mLastDisableAppCaller\nprivate final @android.annotation.NonNull android.content.pm.overlay.OverlayPaths mOverlayPaths\nprivate final @android.annotation.NonNull java.util.Map<java.lang.String,android.content.pm.overlay.OverlayPaths> mSharedLibraryOverlayPaths\nprivate final @android.content.pm.PackageManager.UninstallReason int mUninstallReason\nprivate final @android.annotation.Nullable java.lang.String mSplashScreenTheme\nprivate final @android.content.pm.PackageManager.UserMinAspectRatio int mMinAspectRatio\nprivate final long mFirstInstallTimeMillis\nprivate final @android.annotation.Nullable com.android.server.pm.pkg.ArchiveState mArchiveState\npublic static com.android.server.pm.pkg.PackageUserState copy(com.android.server.pm.pkg.PackageUserState)\nprivate void setBoolean(int,boolean)\nprivate boolean getBoolean(int)\npublic @java.lang.Override boolean isHidden()\npublic @java.lang.Override boolean isInstalled()\npublic @java.lang.Override boolean isInstantApp()\npublic @java.lang.Override boolean isNotLaunched()\npublic @java.lang.Override boolean isStopped()\npublic @java.lang.Override boolean isSuspended()\npublic @java.lang.Override boolean isVirtualPreload()\npublic @java.lang.Override boolean isComponentEnabled(java.lang.String)\npublic @java.lang.Override boolean isComponentDisabled(java.lang.String)\npublic @java.lang.Override android.content.pm.overlay.OverlayPaths getAllOverlayPaths()\nclass UserStateImpl extends java.lang.Object implements [com.android.server.pm.pkg.PackageUserState]\nprivate static final int HIDDEN\nprivate static final int INSTALLED\nprivate static final int INSTANT_APP\nprivate static final int NOT_LAUNCHED\nprivate static final int STOPPED\nprivate static final int SUSPENDED\nprivate static final int VIRTUAL_PRELOAD\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false)") - @Deprecated - private void __metadata() {} - - - //@formatter:on - // End of generated code - - } - - - - // Code below generated by codegen v1.0.23. - // - // DO NOT MODIFY! - // CHECKSTYLE:OFF Generated code - // - // To regenerate run: - // $ codegen $ANDROID_BUILD_TOP/frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java - // - // To exclude the generated code from IntelliJ auto-formatting enable (one-time): - // Settings > Editor > Code Style > Formatter Control - //@formatter:off - - - @DataClass.Generated.Member - public long getBooleans() { - return mBooleans; - } - - @DataClass.Generated.Member - public @Nullable AndroidPackage getAndroidPackage() { - return mAndroidPackage; - } - - @DataClass.Generated.Member - public @NonNull String getPackageName() { - return mPackageName; - } - - @DataClass.Generated.Member - public @Nullable String getVolumeUuid() { - return mVolumeUuid; - } - - @DataClass.Generated.Member - public int getAppId() { - return mAppId; - } - - @DataClass.Generated.Member - public int getCategoryOverride() { - return mCategoryOverride; - } - - @DataClass.Generated.Member - public @Nullable String getCpuAbiOverride() { - return mCpuAbiOverride; - } - - @DataClass.Generated.Member - public @ApplicationInfo.HiddenApiEnforcementPolicy int getHiddenApiEnforcementPolicy() { - return mHiddenApiEnforcementPolicy; - } - - @DataClass.Generated.Member - public long getLastModifiedTime() { - return mLastModifiedTime; - } - - @DataClass.Generated.Member - public long getLastUpdateTime() { - return mLastUpdateTime; - } - - @DataClass.Generated.Member - public long getLongVersionCode() { - return mLongVersionCode; - } - - @DataClass.Generated.Member - public @NonNull Map<String,Set<String>> getMimeGroups() { - return mMimeGroups; - } - - @DataClass.Generated.Member - public @NonNull File getPath() { - return mPath; - } - - @DataClass.Generated.Member - public @Nullable String getPrimaryCpuAbi() { - return mPrimaryCpuAbi; - } - - @DataClass.Generated.Member - public @Nullable String getSecondaryCpuAbi() { - return mSecondaryCpuAbi; - } - - @DataClass.Generated.Member - public @Nullable String getSeInfo() { - return mSeInfo; - } - - @DataClass.Generated.Member - public boolean isHasSharedUser() { - return mHasSharedUser; - } - - @DataClass.Generated.Member - public int getSharedUserAppId() { - return mSharedUserAppId; - } - - @DataClass.Generated.Member - public @NonNull String[] getUsesSdkLibraries() { - return mUsesSdkLibraries; - } - - @DataClass.Generated.Member - public @NonNull long[] getUsesSdkLibrariesVersionsMajor() { - return mUsesSdkLibrariesVersionsMajor; - } - - @DataClass.Generated.Member - public @NonNull String[] getUsesStaticLibraries() { - return mUsesStaticLibraries; - } - - @DataClass.Generated.Member - public @NonNull long[] getUsesStaticLibrariesVersions() { - return mUsesStaticLibrariesVersions; - } - - @DataClass.Generated.Member - public @NonNull List<SharedLibrary> getSharedLibraryDependencies() { - return mSharedLibraryDependencies; - } - - @DataClass.Generated.Member - public @NonNull List<String> getUsesLibraryFiles() { - return mUsesLibraryFiles; - } - - @DataClass.Generated.Member - public @NonNull long[] getLastPackageUsageTime() { - return mLastPackageUsageTime; - } - - @DataClass.Generated.Member - public @NonNull SigningInfo getSigningInfo() { - return mSigningInfo; - } - - @DataClass.Generated.Member - public @NonNull SparseArray<PackageUserState> getUserStates() { - return mUserStates; - } - - @DataClass.Generated.Member - public @Nullable String getApexModuleName() { - return mApexModuleName; - } - - @DataClass.Generated.Member - public @NonNull PackageStateImpl setBooleans( long value) { - mBooleans = value; - return this; - } - - @DataClass.Generated( - time = 1691182986772L, - codegenVersion = "1.0.23", - sourceFile = "frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java", - inputSignatures = "private long mBooleans\nprivate final @android.annotation.Nullable com.android.server.pm.pkg.AndroidPackage mAndroidPackage\nprivate final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.annotation.Nullable java.lang.String mVolumeUuid\nprivate final int mAppId\nprivate final int mCategoryOverride\nprivate final @android.annotation.Nullable java.lang.String mCpuAbiOverride\nprivate final @android.content.pm.ApplicationInfo.HiddenApiEnforcementPolicy int mHiddenApiEnforcementPolicy\nprivate final long mLastModifiedTime\nprivate final long mLastUpdateTime\nprivate final long mLongVersionCode\nprivate final @android.annotation.NonNull java.util.Map<java.lang.String,java.util.Set<java.lang.String>> mMimeGroups\nprivate final @android.annotation.NonNull java.io.File mPath\nprivate final @android.annotation.Nullable java.lang.String mPrimaryCpuAbi\nprivate final @android.annotation.Nullable java.lang.String mSecondaryCpuAbi\nprivate final @android.annotation.Nullable java.lang.String mSeInfo\nprivate final boolean mHasSharedUser\nprivate final int mSharedUserAppId\nprivate final @android.annotation.NonNull java.lang.String[] mUsesSdkLibraries\nprivate final @android.annotation.NonNull long[] mUsesSdkLibrariesVersionsMajor\nprivate final @android.annotation.NonNull java.lang.String[] mUsesStaticLibraries\nprivate final @android.annotation.NonNull long[] mUsesStaticLibrariesVersions\nprivate final @android.annotation.NonNull java.util.List<com.android.server.pm.pkg.SharedLibrary> mSharedLibraryDependencies\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mUsesLibraryFiles\nprivate final @android.annotation.NonNull long[] mLastPackageUsageTime\nprivate final @android.annotation.NonNull android.content.pm.SigningInfo mSigningInfo\nprivate final @android.annotation.NonNull android.util.SparseArray<com.android.server.pm.pkg.PackageUserState> mUserStates\nprivate final @android.annotation.Nullable java.lang.String mApexModuleName\npublic static com.android.server.pm.pkg.PackageState copy(com.android.server.pm.pkg.PackageStateInternal)\nprivate void setBoolean(long,boolean)\nprivate boolean getBoolean(long)\npublic @android.annotation.NonNull @java.lang.Override com.android.server.pm.pkg.PackageUserState getStateForUser(android.os.UserHandle)\npublic @java.lang.Override boolean isExternalStorage()\npublic @java.lang.Override boolean isForceQueryableOverride()\npublic @java.lang.Override boolean isHiddenUntilInstalled()\npublic @java.lang.Override boolean isInstallPermissionsFixed()\npublic @java.lang.Override boolean isOdm()\npublic @java.lang.Override boolean isOem()\npublic @java.lang.Override boolean isPrivileged()\npublic @java.lang.Override boolean isProduct()\npublic @java.lang.Override boolean isRequiredForSystemUser()\npublic @java.lang.Override boolean isSystem()\npublic @java.lang.Override boolean isSystemExt()\npublic @java.lang.Override boolean isUpdateAvailable()\npublic @java.lang.Override boolean isUpdatedSystemApp()\npublic @java.lang.Override boolean isApkInUpdatedApex()\npublic @java.lang.Override boolean isVendor()\npublic @java.lang.Override long getVersionCode()\npublic @java.lang.Override boolean hasSharedUser()\npublic @java.lang.Override boolean isApex()\npublic @java.lang.Override boolean isDefaultToDeviceProtectedStorage()\nclass PackageStateImpl extends java.lang.Object implements [com.android.server.pm.pkg.PackageState]\nprivate static final long SYSTEM\nprivate static final long EXTERNAL_STORAGE\nprivate static final long PRIVILEGED\nprivate static final long OEM\nprivate static final long VENDOR\nprivate static final long PRODUCT\nprivate static final long SYSTEM_EXT\nprivate static final long REQUIRED_FOR_SYSTEM_USER\nprivate static final long ODM\nprivate static final long FORCE_QUERYABLE_OVERRIDE\nprivate static final long HIDDEN_UNTIL_INSTALLED\nprivate static final long INSTALL_PERMISSIONS_FIXED\nprivate static final long UPDATE_AVAILABLE\nprivate static final long UPDATED_SYSTEM_APP\nprivate static final long APK_IN_UPDATED_APEX\nprivate static final long DEFAULT_TO_DEVICE_PROTECTED_STORAGE\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false)") - @Deprecated - private void __metadata() {} - - - //@formatter:on - // End of generated code - -} diff --git a/services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java b/services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java index 6ac7c34d844b..d8c8af6c8fd1 100644 --- a/services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java +++ b/services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java @@ -17,6 +17,7 @@ package com.android.server.pm.pkg; import android.annotation.CurrentTimeMillisLong; +import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.ComponentName; @@ -45,9 +46,44 @@ import java.util.Objects; /** @hide */ @DataClass(genConstructor = false, genBuilder = false, genEqualsHashCode = true) @DataClass.Suppress({"mOverlayPathsLock", "mOverlayPaths", "mSharedLibraryOverlayPathsLock", - "mSharedLibraryOverlayPaths", "setOverlayPaths", "setCachedOverlayPaths", "getWatchable"}) + "mSharedLibraryOverlayPaths", "setOverlayPaths", "setCachedOverlayPaths", "getWatchable", + "getBooleans" +}) public class PackageUserStateImpl extends WatchableImpl implements PackageUserStateInternal, Snappable { + // Use a bitset to store boolean data to save memory + private static class Booleans { + @IntDef({ + INSTALLED, + STOPPED, + NOT_LAUNCHED, + HIDDEN, + INSTANT_APP, + VIRTUAL_PRELOADED, + }) + public @interface Flags { + } + private static final int INSTALLED = 1; + private static final int STOPPED = 1 << 1; + private static final int NOT_LAUNCHED = 1 << 2; + // Is the app restricted by owner / admin + private static final int HIDDEN = 1 << 3; + private static final int INSTANT_APP = 1 << 4; + private static final int VIRTUAL_PRELOADED = 1 << 5; + } + private int mBooleans; + + private void setBoolean(@Booleans.Flags int flag, boolean value) { + if (value) { + mBooleans |= flag; + } else { + mBooleans &= ~flag; + } + } + + private boolean getBoolean(@Booleans.Flags int flag) { + return (mBooleans & flag) != 0; + } @Nullable protected WatchedArraySet<String> mDisabledComponentsWatched; @@ -55,13 +91,7 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt protected WatchedArraySet<String> mEnabledComponentsWatched; private long mCeDataInode; - private boolean mInstalled = true; - private boolean mStopped; - private boolean mNotLaunched; - private boolean mHidden; // Is the app restricted by owner / admin private int mDistractionFlags; - private boolean mInstantApp; - private boolean mVirtualPreload; @PackageManager.EnabledState private int mEnabledState = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; @PackageManager.InstallReason @@ -122,15 +152,18 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt super(); mWatchable = null; mSnapshot = makeCache(); + setBoolean(Booleans.INSTALLED, true); } public PackageUserStateImpl(@NonNull Watchable watchable) { mWatchable = watchable; mSnapshot = makeCache(); + setBoolean(Booleans.INSTALLED, true); } public PackageUserStateImpl(@NonNull Watchable watchable, PackageUserStateImpl other) { mWatchable = watchable; + mBooleans = other.mBooleans; mDisabledComponentsWatched = other.mDisabledComponentsWatched == null ? null : other.mDisabledComponentsWatched.snapshot(); mEnabledComponentsWatched = other.mEnabledComponentsWatched == null @@ -139,13 +172,7 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt mSharedLibraryOverlayPaths = other.mSharedLibraryOverlayPaths == null ? null : other.mSharedLibraryOverlayPaths.snapshot(); mCeDataInode = other.mCeDataInode; - mInstalled = other.mInstalled; - mStopped = other.mStopped; - mNotLaunched = other.mNotLaunched; - mHidden = other.mHidden; mDistractionFlags = other.mDistractionFlags; - mInstantApp = other.mInstantApp; - mVirtualPreload = other.mVirtualPreload; mEnabledState = other.mEnabledState; mInstallReason = other.mInstallReason; mUninstallReason = other.mUninstallReason; @@ -418,25 +445,25 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt } public @NonNull PackageUserStateImpl setInstalled(boolean value) { - mInstalled = value; + setBoolean(Booleans.INSTALLED, value); onChanged(); return this; } public @NonNull PackageUserStateImpl setStopped(boolean value) { - mStopped = value; + setBoolean(Booleans.STOPPED, value); onChanged(); return this; } public @NonNull PackageUserStateImpl setNotLaunched(boolean value) { - mNotLaunched = value; + setBoolean(Booleans.NOT_LAUNCHED, value); onChanged(); return this; } public @NonNull PackageUserStateImpl setHidden(boolean value) { - mHidden = value; + setBoolean(Booleans.HIDDEN, value); onChanged(); return this; } @@ -448,13 +475,13 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt } public @NonNull PackageUserStateImpl setInstantApp(boolean value) { - mInstantApp = value; + setBoolean(Booleans.INSTANT_APP, value); onChanged(); return this; } public @NonNull PackageUserStateImpl setVirtualPreload(boolean value) { - mVirtualPreload = value; + setBoolean(Booleans.VIRTUAL_PRELOADED, value); onChanged(); return this; } @@ -613,6 +640,38 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt } + @Override + public boolean isInstalled() { + return getBoolean(Booleans.INSTALLED); + } + + @Override + public boolean isStopped() { + return getBoolean(Booleans.STOPPED); + } + + @Override + public boolean isNotLaunched() { + return getBoolean(Booleans.NOT_LAUNCHED); + } + + @Override + public boolean isHidden() { + return getBoolean(Booleans.HIDDEN); + } + + @Override + public boolean isInstantApp() { + return getBoolean(Booleans.INSTANT_APP); + } + + @Override + public boolean isVirtualPreload() { + return getBoolean(Booleans.VIRTUAL_PRELOADED); + } + + + // Code below generated by codegen v1.0.23. // @@ -643,41 +702,11 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt } @DataClass.Generated.Member - public boolean isInstalled() { - return mInstalled; - } - - @DataClass.Generated.Member - public boolean isStopped() { - return mStopped; - } - - @DataClass.Generated.Member - public boolean isNotLaunched() { - return mNotLaunched; - } - - @DataClass.Generated.Member - public boolean isHidden() { - return mHidden; - } - - @DataClass.Generated.Member public int getDistractionFlags() { return mDistractionFlags; } @DataClass.Generated.Member - public boolean isInstantApp() { - return mInstantApp; - } - - @DataClass.Generated.Member - public boolean isVirtualPreload() { - return mVirtualPreload; - } - - @DataClass.Generated.Member public @PackageManager.EnabledState int getEnabledState() { return mEnabledState; } @@ -746,6 +775,12 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt } @DataClass.Generated.Member + public @NonNull PackageUserStateImpl setBooleans( int value) { + mBooleans = value; + return this; + } + + @DataClass.Generated.Member public @NonNull PackageUserStateImpl setDisabledComponentsWatched(@NonNull WatchedArraySet<String> value) { mDisabledComponentsWatched = value; return this; @@ -791,16 +826,11 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt PackageUserStateImpl that = (PackageUserStateImpl) o; //noinspection PointlessBooleanExpression return true + && mBooleans == that.mBooleans && Objects.equals(mDisabledComponentsWatched, that.mDisabledComponentsWatched) && Objects.equals(mEnabledComponentsWatched, that.mEnabledComponentsWatched) && mCeDataInode == that.mCeDataInode - && mInstalled == that.mInstalled - && mStopped == that.mStopped - && mNotLaunched == that.mNotLaunched - && mHidden == that.mHidden && mDistractionFlags == that.mDistractionFlags - && mInstantApp == that.mInstantApp - && mVirtualPreload == that.mVirtualPreload && mEnabledState == that.mEnabledState && mInstallReason == that.mInstallReason && mUninstallReason == that.mUninstallReason @@ -825,16 +855,11 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt // int fieldNameHashCode() { ... } int _hash = 1; + _hash = 31 * _hash + mBooleans; _hash = 31 * _hash + Objects.hashCode(mDisabledComponentsWatched); _hash = 31 * _hash + Objects.hashCode(mEnabledComponentsWatched); _hash = 31 * _hash + Long.hashCode(mCeDataInode); - _hash = 31 * _hash + Boolean.hashCode(mInstalled); - _hash = 31 * _hash + Boolean.hashCode(mStopped); - _hash = 31 * _hash + Boolean.hashCode(mNotLaunched); - _hash = 31 * _hash + Boolean.hashCode(mHidden); _hash = 31 * _hash + mDistractionFlags; - _hash = 31 * _hash + Boolean.hashCode(mInstantApp); - _hash = 31 * _hash + Boolean.hashCode(mVirtualPreload); _hash = 31 * _hash + mEnabledState; _hash = 31 * _hash + mInstallReason; _hash = 31 * _hash + mUninstallReason; @@ -854,10 +879,10 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt } @DataClass.Generated( - time = 1689171513404L, + time = 1691186062924L, codegenVersion = "1.0.23", sourceFile = "frameworks/base/services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java", - inputSignatures = "protected @android.annotation.Nullable com.android.server.utils.WatchedArraySet<java.lang.String> mDisabledComponentsWatched\nprotected @android.annotation.Nullable com.android.server.utils.WatchedArraySet<java.lang.String> mEnabledComponentsWatched\nprivate long mCeDataInode\nprivate boolean mInstalled\nprivate boolean mStopped\nprivate boolean mNotLaunched\nprivate boolean mHidden\nprivate int mDistractionFlags\nprivate boolean mInstantApp\nprivate boolean mVirtualPreload\nprivate @android.content.pm.PackageManager.EnabledState int mEnabledState\nprivate @android.content.pm.PackageManager.InstallReason int mInstallReason\nprivate @android.content.pm.PackageManager.UninstallReason int mUninstallReason\nprivate @android.annotation.Nullable java.lang.String mHarmfulAppWarning\nprivate @android.annotation.Nullable java.lang.String mLastDisableAppCaller\nprivate @android.annotation.Nullable android.content.pm.overlay.OverlayPaths mOverlayPaths\nprotected @android.annotation.Nullable com.android.server.utils.WatchedArrayMap<java.lang.String,android.content.pm.overlay.OverlayPaths> mSharedLibraryOverlayPaths\nprivate @android.annotation.Nullable java.lang.String mSplashScreenTheme\nprivate @android.content.pm.PackageManager.UserMinAspectRatio int mMinAspectRatio\nprivate @android.annotation.Nullable com.android.server.utils.WatchedArrayMap<java.lang.String,com.android.server.pm.pkg.SuspendParams> mSuspendParams\nprivate @android.annotation.Nullable com.android.server.utils.WatchedArrayMap<android.content.ComponentName,android.util.Pair<java.lang.String,java.lang.Integer>> mComponentLabelIconOverrideMap\nprivate @android.annotation.CurrentTimeMillisLong long mFirstInstallTimeMillis\nprivate @android.annotation.Nullable com.android.server.utils.Watchable mWatchable\nprivate @android.annotation.Nullable com.android.server.pm.pkg.ArchiveState mArchiveState\nfinal @android.annotation.NonNull com.android.server.utils.SnapshotCache<com.android.server.pm.pkg.PackageUserStateImpl> mSnapshot\nprivate com.android.server.utils.SnapshotCache<com.android.server.pm.pkg.PackageUserStateImpl> makeCache()\nprivate void onChanged()\npublic @android.annotation.NonNull @java.lang.Override com.android.server.pm.pkg.PackageUserStateImpl snapshot()\npublic @android.annotation.Nullable boolean setOverlayPaths(android.content.pm.overlay.OverlayPaths)\npublic boolean setSharedLibraryOverlayPaths(java.lang.String,android.content.pm.overlay.OverlayPaths)\npublic @android.annotation.Nullable @java.lang.Override com.android.server.utils.WatchedArraySet<java.lang.String> getDisabledComponentsNoCopy()\npublic @android.annotation.Nullable @java.lang.Override com.android.server.utils.WatchedArraySet<java.lang.String> getEnabledComponentsNoCopy()\npublic @android.annotation.NonNull @java.lang.Override android.util.ArraySet<java.lang.String> getDisabledComponents()\npublic @android.annotation.NonNull @java.lang.Override android.util.ArraySet<java.lang.String> getEnabledComponents()\npublic @java.lang.Override boolean isComponentEnabled(java.lang.String)\npublic @java.lang.Override boolean isComponentDisabled(java.lang.String)\npublic @java.lang.Override android.content.pm.overlay.OverlayPaths getAllOverlayPaths()\npublic @com.android.internal.annotations.VisibleForTesting boolean overrideLabelAndIcon(android.content.ComponentName,java.lang.String,java.lang.Integer)\npublic void resetOverrideComponentLabelIcon()\npublic @android.annotation.Nullable android.util.Pair<java.lang.String,java.lang.Integer> getOverrideLabelIconForComponent(android.content.ComponentName)\npublic @java.lang.Override boolean isSuspended()\npublic com.android.server.pm.pkg.PackageUserStateImpl putSuspendParams(java.lang.String,com.android.server.pm.pkg.SuspendParams)\npublic com.android.server.pm.pkg.PackageUserStateImpl removeSuspension(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setDisabledComponents(android.util.ArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setEnabledComponents(android.util.ArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setEnabledComponents(com.android.server.utils.WatchedArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setDisabledComponents(com.android.server.utils.WatchedArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setCeDataInode(long)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setInstalled(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setStopped(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setNotLaunched(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setHidden(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setDistractionFlags(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setInstantApp(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setVirtualPreload(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setEnabledState(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setInstallReason(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setUninstallReason(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setHarmfulAppWarning(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setLastDisableAppCaller(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setSharedLibraryOverlayPaths(android.util.ArrayMap<java.lang.String,android.content.pm.overlay.OverlayPaths>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setSplashScreenTheme(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setMinAspectRatio(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setSuspendParams(android.util.ArrayMap<java.lang.String,com.android.server.pm.pkg.SuspendParams>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setComponentLabelIconOverrideMap(android.util.ArrayMap<android.content.ComponentName,android.util.Pair<java.lang.String,java.lang.Integer>>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setFirstInstallTimeMillis(long)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setArchiveState(com.android.server.pm.pkg.ArchiveState)\npublic @android.annotation.NonNull @java.lang.Override java.util.Map<java.lang.String,android.content.pm.overlay.OverlayPaths> getSharedLibraryOverlayPaths()\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setWatchable(com.android.server.utils.Watchable)\nprivate boolean watchableEquals(com.android.server.utils.Watchable)\nprivate int watchableHashCode()\nprivate boolean snapshotEquals(com.android.server.utils.SnapshotCache<com.android.server.pm.pkg.PackageUserStateImpl>)\nprivate int snapshotHashCode()\nclass PackageUserStateImpl extends com.android.server.utils.WatchableImpl implements [com.android.server.pm.pkg.PackageUserStateInternal, com.android.server.utils.Snappable]\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=false, genEqualsHashCode=true)") + inputSignatures = "private int mBooleans\nprotected @android.annotation.Nullable com.android.server.utils.WatchedArraySet<java.lang.String> mDisabledComponentsWatched\nprotected @android.annotation.Nullable com.android.server.utils.WatchedArraySet<java.lang.String> mEnabledComponentsWatched\nprivate long mCeDataInode\nprivate int mDistractionFlags\nprivate @android.content.pm.PackageManager.EnabledState int mEnabledState\nprivate @android.content.pm.PackageManager.InstallReason int mInstallReason\nprivate @android.content.pm.PackageManager.UninstallReason int mUninstallReason\nprivate @android.annotation.Nullable java.lang.String mHarmfulAppWarning\nprivate @android.annotation.Nullable java.lang.String mLastDisableAppCaller\nprivate @android.annotation.Nullable android.content.pm.overlay.OverlayPaths mOverlayPaths\nprotected @android.annotation.Nullable com.android.server.utils.WatchedArrayMap<java.lang.String,android.content.pm.overlay.OverlayPaths> mSharedLibraryOverlayPaths\nprivate @android.annotation.Nullable java.lang.String mSplashScreenTheme\nprivate @android.content.pm.PackageManager.UserMinAspectRatio int mMinAspectRatio\nprivate @android.annotation.Nullable com.android.server.utils.WatchedArrayMap<java.lang.String,com.android.server.pm.pkg.SuspendParams> mSuspendParams\nprivate @android.annotation.Nullable com.android.server.utils.WatchedArrayMap<android.content.ComponentName,android.util.Pair<java.lang.String,java.lang.Integer>> mComponentLabelIconOverrideMap\nprivate @android.annotation.CurrentTimeMillisLong long mFirstInstallTimeMillis\nprivate @android.annotation.Nullable com.android.server.utils.Watchable mWatchable\nprivate @android.annotation.Nullable com.android.server.pm.pkg.ArchiveState mArchiveState\nfinal @android.annotation.NonNull com.android.server.utils.SnapshotCache<com.android.server.pm.pkg.PackageUserStateImpl> mSnapshot\nprivate void setBoolean(int,boolean)\nprivate boolean getBoolean(int)\nprivate com.android.server.utils.SnapshotCache<com.android.server.pm.pkg.PackageUserStateImpl> makeCache()\nprivate void onChanged()\npublic @android.annotation.NonNull @java.lang.Override com.android.server.pm.pkg.PackageUserStateImpl snapshot()\npublic @android.annotation.Nullable boolean setOverlayPaths(android.content.pm.overlay.OverlayPaths)\npublic boolean setSharedLibraryOverlayPaths(java.lang.String,android.content.pm.overlay.OverlayPaths)\npublic @android.annotation.Nullable @java.lang.Override com.android.server.utils.WatchedArraySet<java.lang.String> getDisabledComponentsNoCopy()\npublic @android.annotation.Nullable @java.lang.Override com.android.server.utils.WatchedArraySet<java.lang.String> getEnabledComponentsNoCopy()\npublic @android.annotation.NonNull @java.lang.Override android.util.ArraySet<java.lang.String> getDisabledComponents()\npublic @android.annotation.NonNull @java.lang.Override android.util.ArraySet<java.lang.String> getEnabledComponents()\npublic @java.lang.Override boolean isComponentEnabled(java.lang.String)\npublic @java.lang.Override boolean isComponentDisabled(java.lang.String)\npublic @java.lang.Override android.content.pm.overlay.OverlayPaths getAllOverlayPaths()\npublic @com.android.internal.annotations.VisibleForTesting boolean overrideLabelAndIcon(android.content.ComponentName,java.lang.String,java.lang.Integer)\npublic void resetOverrideComponentLabelIcon()\npublic @android.annotation.Nullable android.util.Pair<java.lang.String,java.lang.Integer> getOverrideLabelIconForComponent(android.content.ComponentName)\npublic @java.lang.Override boolean isSuspended()\npublic com.android.server.pm.pkg.PackageUserStateImpl putSuspendParams(java.lang.String,com.android.server.pm.pkg.SuspendParams)\npublic com.android.server.pm.pkg.PackageUserStateImpl removeSuspension(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setDisabledComponents(android.util.ArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setEnabledComponents(android.util.ArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setEnabledComponents(com.android.server.utils.WatchedArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setDisabledComponents(com.android.server.utils.WatchedArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setCeDataInode(long)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setInstalled(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setStopped(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setNotLaunched(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setHidden(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setDistractionFlags(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setInstantApp(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setVirtualPreload(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setEnabledState(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setInstallReason(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setUninstallReason(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setHarmfulAppWarning(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setLastDisableAppCaller(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setSharedLibraryOverlayPaths(android.util.ArrayMap<java.lang.String,android.content.pm.overlay.OverlayPaths>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setSplashScreenTheme(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setMinAspectRatio(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setSuspendParams(android.util.ArrayMap<java.lang.String,com.android.server.pm.pkg.SuspendParams>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setComponentLabelIconOverrideMap(android.util.ArrayMap<android.content.ComponentName,android.util.Pair<java.lang.String,java.lang.Integer>>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setFirstInstallTimeMillis(long)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setArchiveState(com.android.server.pm.pkg.ArchiveState)\npublic @android.annotation.NonNull @java.lang.Override java.util.Map<java.lang.String,android.content.pm.overlay.OverlayPaths> getSharedLibraryOverlayPaths()\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setWatchable(com.android.server.utils.Watchable)\nprivate boolean watchableEquals(com.android.server.utils.Watchable)\nprivate int watchableHashCode()\nprivate boolean snapshotEquals(com.android.server.utils.SnapshotCache<com.android.server.pm.pkg.PackageUserStateImpl>)\nprivate int snapshotHashCode()\npublic @java.lang.Override boolean isInstalled()\npublic @java.lang.Override boolean isStopped()\npublic @java.lang.Override boolean isNotLaunched()\npublic @java.lang.Override boolean isHidden()\npublic @java.lang.Override boolean isInstantApp()\npublic @java.lang.Override boolean isVirtualPreload()\nclass PackageUserStateImpl extends com.android.server.utils.WatchableImpl implements [com.android.server.pm.pkg.PackageUserStateInternal, com.android.server.utils.Snappable]\nprivate static final int INSTALLED\nprivate static final int STOPPED\nprivate static final int NOT_LAUNCHED\nprivate static final int HIDDEN\nprivate static final int INSTANT_APP\nprivate static final int VIRTUAL_PRELOADED\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=false, genEqualsHashCode=true)") @Deprecated private void __metadata() {} diff --git a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/pkg/PackageStateTest.kt b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/pkg/PackageStateTest.kt index 5a733c7ea117..d217d63c5b44 100644 --- a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/pkg/PackageStateTest.kt +++ b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/pkg/PackageStateTest.kt @@ -29,7 +29,6 @@ import com.android.server.pm.PackageSettingBuilder import com.android.server.pm.parsing.pkg.PackageImpl import com.android.server.pm.pkg.AndroidPackage import com.android.server.pm.pkg.PackageState -import com.android.server.pm.pkg.PackageStateImpl import com.android.server.pm.pkg.PackageUserState import com.android.server.pm.pkg.PackageUserStateImpl import com.android.server.pm.pkg.component.ParsedActivity @@ -125,7 +124,7 @@ class PackageStateTest { fillMissingData(packageState, pkg as PackageImpl) - visitType(seenTypes, emptyList(), PackageStateImpl.copy(packageState), + visitType(seenTypes, emptyList(), PackageSetting(packageState, true), PackageState::class.starProjectedType) visitType(seenTypes, emptyList(), pkg, AndroidPackage::class.starProjectedType) visitType(seenTypes, emptyList(), packageState.getUserStateOrDefault(0), |