Loading services/core/java/com/android/server/pm/ScanPackageUtils.java +1 −2 Original line number Diff line number Diff line Loading @@ -428,8 +428,7 @@ final class ScanPackageUtils { pkgSetting.setLastModifiedTime(scanFileTime); // TODO(b/135203078): Remove, move to constructor pkgSetting.setPkg(parsedPackage) .setFlags(PackageInfoUtils.appInfoFlags(parsedPackage, pkgSetting)) .setPrivateFlags( .setPkgFlags(PackageInfoUtils.appInfoFlags(parsedPackage, pkgSetting), PackageInfoUtils.appInfoPrivateFlags(parsedPackage, pkgSetting)); if (parsedPackage.getLongVersionCode() != pkgSetting.getVersionCode()) { pkgSetting.setLongVersionCode(parsedPackage.getLongVersionCode()); Loading services/core/java/com/android/server/pm/SettingBase.java +11 −0 Original line number Diff line number Diff line Loading @@ -146,6 +146,17 @@ public abstract class SettingBase implements Watchable, Snappable { return this; } /** * Unconditionally set both mPkgFlags and mPkgPrivateFlags. * Should not be used outside pkgSetting initialization or update. */ SettingBase setPkgFlags(int flags, int privateFlags) { this.mPkgFlags = flags; this.mPkgPrivateFlags = privateFlags; onChanged(); return this; } public int getFlags() { return mPkgFlags; } Loading services/core/java/com/android/server/pm/Settings.java +11 −14 Original line number Diff line number Diff line Loading @@ -987,8 +987,7 @@ public final class Settings implements Watchable, Snappable { // Update new package state. .setLastModifiedTime(codePath.lastModified()) .setDomainSetId(domainSetId); pkgSetting.setFlags(pkgFlags) .setPrivateFlags(pkgPrivateFlags); pkgSetting.setPkgFlags(pkgFlags, pkgPrivateFlags); } else { pkgSetting = new PackageSetting(pkgName, realPkgName, codePath, legacyNativeLibraryPath, primaryCpuAbi, secondaryCpuAbi, Loading Loading @@ -1175,15 +1174,15 @@ public final class Settings implements Watchable, Snappable { .setUsesStaticLibrariesVersions(null); } // These two flags are preserved from the existing PackageSetting. Copied from prior code, // unclear if this is actually necessary. boolean wasExternalStorage = (pkgSetting.getFlags() & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0; if (wasExternalStorage) { pkgFlags |= ApplicationInfo.FLAG_EXTERNAL_STORAGE; } else { pkgFlags &= ~ApplicationInfo.FLAG_EXTERNAL_STORAGE; } // If what we are scanning is a system (and possibly privileged) package, // then make it so, regardless of whether it was previously installed only // in the data partition. Reset first. int newPkgFlags = pkgSetting.getFlags(); newPkgFlags &= ~ApplicationInfo.FLAG_SYSTEM; newPkgFlags |= pkgFlags & ApplicationInfo.FLAG_SYSTEM; // Only set pkgFlags. pkgSetting.setPkgFlags(newPkgFlags, pkgSetting.getPrivateFlags()); boolean wasRequiredForSystemUser = (pkgSetting.getPrivateFlags() & ApplicationInfo.PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER) != 0; if (wasRequiredForSystemUser) { Loading @@ -1191,9 +1190,7 @@ public final class Settings implements Watchable, Snappable { } else { pkgPrivateFlags &= ~ApplicationInfo.PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER; } pkgSetting.setFlags(pkgFlags) .setPrivateFlags(pkgPrivateFlags); pkgSetting.setPrivateFlags(pkgPrivateFlags); } /** Loading Loading
services/core/java/com/android/server/pm/ScanPackageUtils.java +1 −2 Original line number Diff line number Diff line Loading @@ -428,8 +428,7 @@ final class ScanPackageUtils { pkgSetting.setLastModifiedTime(scanFileTime); // TODO(b/135203078): Remove, move to constructor pkgSetting.setPkg(parsedPackage) .setFlags(PackageInfoUtils.appInfoFlags(parsedPackage, pkgSetting)) .setPrivateFlags( .setPkgFlags(PackageInfoUtils.appInfoFlags(parsedPackage, pkgSetting), PackageInfoUtils.appInfoPrivateFlags(parsedPackage, pkgSetting)); if (parsedPackage.getLongVersionCode() != pkgSetting.getVersionCode()) { pkgSetting.setLongVersionCode(parsedPackage.getLongVersionCode()); Loading
services/core/java/com/android/server/pm/SettingBase.java +11 −0 Original line number Diff line number Diff line Loading @@ -146,6 +146,17 @@ public abstract class SettingBase implements Watchable, Snappable { return this; } /** * Unconditionally set both mPkgFlags and mPkgPrivateFlags. * Should not be used outside pkgSetting initialization or update. */ SettingBase setPkgFlags(int flags, int privateFlags) { this.mPkgFlags = flags; this.mPkgPrivateFlags = privateFlags; onChanged(); return this; } public int getFlags() { return mPkgFlags; } Loading
services/core/java/com/android/server/pm/Settings.java +11 −14 Original line number Diff line number Diff line Loading @@ -987,8 +987,7 @@ public final class Settings implements Watchable, Snappable { // Update new package state. .setLastModifiedTime(codePath.lastModified()) .setDomainSetId(domainSetId); pkgSetting.setFlags(pkgFlags) .setPrivateFlags(pkgPrivateFlags); pkgSetting.setPkgFlags(pkgFlags, pkgPrivateFlags); } else { pkgSetting = new PackageSetting(pkgName, realPkgName, codePath, legacyNativeLibraryPath, primaryCpuAbi, secondaryCpuAbi, Loading Loading @@ -1175,15 +1174,15 @@ public final class Settings implements Watchable, Snappable { .setUsesStaticLibrariesVersions(null); } // These two flags are preserved from the existing PackageSetting. Copied from prior code, // unclear if this is actually necessary. boolean wasExternalStorage = (pkgSetting.getFlags() & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0; if (wasExternalStorage) { pkgFlags |= ApplicationInfo.FLAG_EXTERNAL_STORAGE; } else { pkgFlags &= ~ApplicationInfo.FLAG_EXTERNAL_STORAGE; } // If what we are scanning is a system (and possibly privileged) package, // then make it so, regardless of whether it was previously installed only // in the data partition. Reset first. int newPkgFlags = pkgSetting.getFlags(); newPkgFlags &= ~ApplicationInfo.FLAG_SYSTEM; newPkgFlags |= pkgFlags & ApplicationInfo.FLAG_SYSTEM; // Only set pkgFlags. pkgSetting.setPkgFlags(newPkgFlags, pkgSetting.getPrivateFlags()); boolean wasRequiredForSystemUser = (pkgSetting.getPrivateFlags() & ApplicationInfo.PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER) != 0; if (wasRequiredForSystemUser) { Loading @@ -1191,9 +1190,7 @@ public final class Settings implements Watchable, Snappable { } else { pkgPrivateFlags &= ~ApplicationInfo.PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER; } pkgSetting.setFlags(pkgFlags) .setPrivateFlags(pkgPrivateFlags); pkgSetting.setPrivateFlags(pkgPrivateFlags); } /** Loading