summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/pm/PackageSetting.java118
-rw-r--r--services/core/java/com/android/server/pm/pkg/PackageState.java5
-rw-r--r--services/core/java/com/android/server/pm/pkg/PackageStateImpl.java770
-rw-r--r--services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java151
-rw-r--r--services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/pkg/PackageStateTest.kt3
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),