Loading core/java/android/content/pm/PackageInstaller.java +26 −0 Original line number Diff line number Diff line Loading @@ -1467,6 +1467,8 @@ public class PackageInstaller { public DataLoaderParams dataLoaderParams; /** {@hide} */ public int rollbackDataPolicy = PackageManager.RollbackDataPolicy.RESTORE; /** {@hide} */ public boolean forceQueryableOverride; /** * Construct parameters for a new package install session. Loading Loading @@ -1499,6 +1501,7 @@ public class PackageInstaller { installerPackageName = source.readString(); isMultiPackage = source.readBoolean(); isStaged = source.readBoolean(); forceQueryableOverride = source.readBoolean(); requiredInstalledVersionCode = source.readLong(); DataLoaderParamsParcel dataLoaderParamsParcel = source.readParcelable( DataLoaderParamsParcel.class.getClassLoader()); Loading Loading @@ -1528,6 +1531,7 @@ public class PackageInstaller { ret.installerPackageName = installerPackageName; ret.isMultiPackage = isMultiPackage; ret.isStaged = isStaged; ret.forceQueryableOverride = forceQueryableOverride; ret.requiredInstalledVersionCode = requiredInstalledVersionCode; ret.dataLoaderParams = dataLoaderParams; ret.rollbackDataPolicy = rollbackDataPolicy; Loading Loading @@ -1904,6 +1908,14 @@ public class PackageInstaller { this.dataLoaderParams = dataLoaderParams; } /** * * {@hide} */ public void setForceQueryable() { this.forceQueryableOverride = true; } /** {@hide} */ public void dump(IndentingPrintWriter pw) { pw.printPair("mode", mode); Loading @@ -1923,6 +1935,7 @@ public class PackageInstaller { pw.printPair("installerPackageName", installerPackageName); pw.printPair("isMultiPackage", isMultiPackage); pw.printPair("isStaged", isStaged); pw.printPair("forceQueryable", forceQueryableOverride); pw.printPair("requiredInstalledVersionCode", requiredInstalledVersionCode); pw.printPair("dataLoaderParams", dataLoaderParams); pw.printPair("rollbackDataPolicy", rollbackDataPolicy); Loading Loading @@ -1954,6 +1967,7 @@ public class PackageInstaller { dest.writeString(installerPackageName); dest.writeBoolean(isMultiPackage); dest.writeBoolean(isStaged); dest.writeBoolean(forceQueryableOverride); dest.writeLong(requiredInstalledVersionCode); if (dataLoaderParams != null) { dest.writeParcelable(dataLoaderParams.getData(), flags); Loading Loading @@ -2078,6 +2092,8 @@ public class PackageInstaller { /** {@hide} */ public boolean isStaged; /** {@hide} */ public boolean forceQueryable; /** {@hide} */ public int parentSessionId = INVALID_ID; /** {@hide} */ public int[] childSessionIds = NO_SESSIONS; Loading Loading @@ -2135,6 +2151,7 @@ public class PackageInstaller { installFlags = source.readInt(); isMultiPackage = source.readBoolean(); isStaged = source.readBoolean(); forceQueryable = source.readBoolean(); parentSessionId = source.readInt(); childSessionIds = source.createIntArray(); if (childSessionIds == null) { Loading Loading @@ -2475,6 +2492,14 @@ public class PackageInstaller { return rollbackDataPolicy; } /** * Returns true if this session is marked as forceQueryable * {@hide} */ public boolean isForceQueryable() { return forceQueryable; } /** * Returns {@code true} if this session is an active staged session. * Loading Loading @@ -2636,6 +2661,7 @@ public class PackageInstaller { dest.writeInt(installFlags); dest.writeBoolean(isMultiPackage); dest.writeBoolean(isStaged); dest.writeBoolean(forceQueryable); dest.writeInt(parentSessionId); dest.writeIntArray(childSessionIds); dest.writeBoolean(isStagedSessionApplied); Loading services/core/java/com/android/server/pm/AppsFilter.java +1 −0 Original line number Diff line number Diff line Loading @@ -347,6 +347,7 @@ public class AppsFilter { mForceQueryable.contains(newPkgSetting.appId) /* shared user that is already force queryable */ || newPkg.isForceQueryable() || newPkgSetting.forceQueryableOverride || (newPkgSetting.isSystem() && (mSystemAppsQueryable || ArrayUtils.contains(mForceQueryableByDevicePackageNames, newPkg.getPackageName()))); Loading services/core/java/com/android/server/pm/PackageInstallerService.java +7 −0 Original line number Diff line number Diff line Loading @@ -635,6 +635,13 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements stageCid = buildExternalStageCid(sessionId); } } // reset the force queryable param if it's not called by an approved caller. if (params.forceQueryableOverride) { if (callingUid != Process.SHELL_UID && callingUid != Process.ROOT_UID) { params.forceQueryableOverride = false; } } InstallSource installSource = InstallSource.create(installerPackageName, originatingPackageName, requestedInstallerPackageName); session = new PackageInstallerSession(mInternalCallback, mContext, mPm, this, Loading services/core/java/com/android/server/pm/PackageManagerService.java +12 −3 Original line number Diff line number Diff line Loading @@ -10572,6 +10572,10 @@ public class PackageManagerService extends IPackageManager.Stub if (pkgSetting.sharedUser != null) { pkgSetting.sharedUser.addPackage(pkgSetting); } if (reconciledPkg.installArgs != null && reconciledPkg.installArgs.forceQueryableOverride) { pkgSetting.forceQueryableOverride = true; } // TODO(toddke): Consider a method specifically for modifying the Package object // post scan; or, moving this stuff out of the Package object since it has nothing // to do with the package on disk. Loading Loading @@ -14065,6 +14069,7 @@ public class PackageManagerService extends IPackageManager.Stub @Nullable MultiPackageInstallParams mParentInstallParams; final long requiredInstalledVersionCode; final boolean forceQueryableOverride; InstallParams(OriginInfo origin, MoveInfo move, IPackageInstallObserver2 observer, int installFlags, InstallSource installSource, String volumeUuid, Loading @@ -14086,6 +14091,7 @@ public class PackageManagerService extends IPackageManager.Stub this.signingDetails = signingDetails; this.installReason = installReason; this.requiredInstalledVersionCode = requiredInstalledVersionCode; this.forceQueryableOverride = false; } InstallParams(ActiveInstallSession activeInstallSession) { Loading Loading @@ -14119,6 +14125,7 @@ public class PackageManagerService extends IPackageManager.Stub signingDetails = activeInstallSession.getSigningDetails(); requiredInstalledVersionCode = activeInstallSession.getSessionParams() .requiredInstalledVersionCode; forceQueryableOverride = activeInstallSession.getSessionParams().forceQueryableOverride; } @Override Loading Loading @@ -14719,6 +14726,7 @@ public class PackageManagerService extends IPackageManager.Stub final int traceCookie; final PackageParser.SigningDetails signingDetails; final int installReason; final boolean forceQueryableOverride; @Nullable final MultiPackageInstallParams mMultiPackageInstallParams; // The list of instruction sets supported by this app. This is currently Loading @@ -14732,7 +14740,7 @@ public class PackageManagerService extends IPackageManager.Stub String abiOverride, String[] installGrantPermissions, List<String> whitelistedRestrictedPermissions, String traceMethod, int traceCookie, SigningDetails signingDetails, int installReason, int installReason, boolean forceQueryableOverride, MultiPackageInstallParams multiPackageInstallParams) { this.origin = origin; this.move = move; Loading @@ -14749,6 +14757,7 @@ public class PackageManagerService extends IPackageManager.Stub this.traceCookie = traceCookie; this.signingDetails = signingDetails; this.installReason = installReason; this.forceQueryableOverride = forceQueryableOverride; this.mMultiPackageInstallParams = multiPackageInstallParams; } Loading @@ -14759,7 +14768,7 @@ public class PackageManagerService extends IPackageManager.Stub params.getUser(), null /*instructionSets*/, params.packageAbiOverride, params.grantedRuntimePermissions, params.whitelistedRestrictedPermissions, params.traceMethod, params.traceCookie, params.signingDetails, params.installReason, params.mParentInstallParams); params.installReason, params.forceQueryableOverride, params.mParentInstallParams); } abstract int copyApk(); Loading Loading @@ -14850,7 +14859,7 @@ public class PackageManagerService extends IPackageManager.Stub super(OriginInfo.fromNothing(), null, null, 0, InstallSource.EMPTY, null, null, instructionSets, null, null, null, null, 0, PackageParser.SigningDetails.UNKNOWN, PackageManager.INSTALL_REASON_UNKNOWN, null /* parent */); PackageManager.INSTALL_REASON_UNKNOWN, false, null /* parent */); this.codeFile = (codePath != null) ? new File(codePath) : null; this.resourceFile = (resourcePath != null) ? new File(resourcePath) : null; } services/core/java/com/android/server/pm/PackageManagerShellCommand.java +3 −0 Original line number Diff line number Diff line Loading @@ -2730,6 +2730,9 @@ class PackageManagerShellCommand extends ShellCommand { case "--staged": sessionParams.setStaged(); break; case "--force-queryable": sessionParams.setForceQueryable(); break; case "--enable-rollback": if (params.installerPackageName == null) { // com.android.shell has the TEST_MANAGE_ROLLBACKS Loading Loading
core/java/android/content/pm/PackageInstaller.java +26 −0 Original line number Diff line number Diff line Loading @@ -1467,6 +1467,8 @@ public class PackageInstaller { public DataLoaderParams dataLoaderParams; /** {@hide} */ public int rollbackDataPolicy = PackageManager.RollbackDataPolicy.RESTORE; /** {@hide} */ public boolean forceQueryableOverride; /** * Construct parameters for a new package install session. Loading Loading @@ -1499,6 +1501,7 @@ public class PackageInstaller { installerPackageName = source.readString(); isMultiPackage = source.readBoolean(); isStaged = source.readBoolean(); forceQueryableOverride = source.readBoolean(); requiredInstalledVersionCode = source.readLong(); DataLoaderParamsParcel dataLoaderParamsParcel = source.readParcelable( DataLoaderParamsParcel.class.getClassLoader()); Loading Loading @@ -1528,6 +1531,7 @@ public class PackageInstaller { ret.installerPackageName = installerPackageName; ret.isMultiPackage = isMultiPackage; ret.isStaged = isStaged; ret.forceQueryableOverride = forceQueryableOverride; ret.requiredInstalledVersionCode = requiredInstalledVersionCode; ret.dataLoaderParams = dataLoaderParams; ret.rollbackDataPolicy = rollbackDataPolicy; Loading Loading @@ -1904,6 +1908,14 @@ public class PackageInstaller { this.dataLoaderParams = dataLoaderParams; } /** * * {@hide} */ public void setForceQueryable() { this.forceQueryableOverride = true; } /** {@hide} */ public void dump(IndentingPrintWriter pw) { pw.printPair("mode", mode); Loading @@ -1923,6 +1935,7 @@ public class PackageInstaller { pw.printPair("installerPackageName", installerPackageName); pw.printPair("isMultiPackage", isMultiPackage); pw.printPair("isStaged", isStaged); pw.printPair("forceQueryable", forceQueryableOverride); pw.printPair("requiredInstalledVersionCode", requiredInstalledVersionCode); pw.printPair("dataLoaderParams", dataLoaderParams); pw.printPair("rollbackDataPolicy", rollbackDataPolicy); Loading Loading @@ -1954,6 +1967,7 @@ public class PackageInstaller { dest.writeString(installerPackageName); dest.writeBoolean(isMultiPackage); dest.writeBoolean(isStaged); dest.writeBoolean(forceQueryableOverride); dest.writeLong(requiredInstalledVersionCode); if (dataLoaderParams != null) { dest.writeParcelable(dataLoaderParams.getData(), flags); Loading Loading @@ -2078,6 +2092,8 @@ public class PackageInstaller { /** {@hide} */ public boolean isStaged; /** {@hide} */ public boolean forceQueryable; /** {@hide} */ public int parentSessionId = INVALID_ID; /** {@hide} */ public int[] childSessionIds = NO_SESSIONS; Loading Loading @@ -2135,6 +2151,7 @@ public class PackageInstaller { installFlags = source.readInt(); isMultiPackage = source.readBoolean(); isStaged = source.readBoolean(); forceQueryable = source.readBoolean(); parentSessionId = source.readInt(); childSessionIds = source.createIntArray(); if (childSessionIds == null) { Loading Loading @@ -2475,6 +2492,14 @@ public class PackageInstaller { return rollbackDataPolicy; } /** * Returns true if this session is marked as forceQueryable * {@hide} */ public boolean isForceQueryable() { return forceQueryable; } /** * Returns {@code true} if this session is an active staged session. * Loading Loading @@ -2636,6 +2661,7 @@ public class PackageInstaller { dest.writeInt(installFlags); dest.writeBoolean(isMultiPackage); dest.writeBoolean(isStaged); dest.writeBoolean(forceQueryable); dest.writeInt(parentSessionId); dest.writeIntArray(childSessionIds); dest.writeBoolean(isStagedSessionApplied); Loading
services/core/java/com/android/server/pm/AppsFilter.java +1 −0 Original line number Diff line number Diff line Loading @@ -347,6 +347,7 @@ public class AppsFilter { mForceQueryable.contains(newPkgSetting.appId) /* shared user that is already force queryable */ || newPkg.isForceQueryable() || newPkgSetting.forceQueryableOverride || (newPkgSetting.isSystem() && (mSystemAppsQueryable || ArrayUtils.contains(mForceQueryableByDevicePackageNames, newPkg.getPackageName()))); Loading
services/core/java/com/android/server/pm/PackageInstallerService.java +7 −0 Original line number Diff line number Diff line Loading @@ -635,6 +635,13 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements stageCid = buildExternalStageCid(sessionId); } } // reset the force queryable param if it's not called by an approved caller. if (params.forceQueryableOverride) { if (callingUid != Process.SHELL_UID && callingUid != Process.ROOT_UID) { params.forceQueryableOverride = false; } } InstallSource installSource = InstallSource.create(installerPackageName, originatingPackageName, requestedInstallerPackageName); session = new PackageInstallerSession(mInternalCallback, mContext, mPm, this, Loading
services/core/java/com/android/server/pm/PackageManagerService.java +12 −3 Original line number Diff line number Diff line Loading @@ -10572,6 +10572,10 @@ public class PackageManagerService extends IPackageManager.Stub if (pkgSetting.sharedUser != null) { pkgSetting.sharedUser.addPackage(pkgSetting); } if (reconciledPkg.installArgs != null && reconciledPkg.installArgs.forceQueryableOverride) { pkgSetting.forceQueryableOverride = true; } // TODO(toddke): Consider a method specifically for modifying the Package object // post scan; or, moving this stuff out of the Package object since it has nothing // to do with the package on disk. Loading Loading @@ -14065,6 +14069,7 @@ public class PackageManagerService extends IPackageManager.Stub @Nullable MultiPackageInstallParams mParentInstallParams; final long requiredInstalledVersionCode; final boolean forceQueryableOverride; InstallParams(OriginInfo origin, MoveInfo move, IPackageInstallObserver2 observer, int installFlags, InstallSource installSource, String volumeUuid, Loading @@ -14086,6 +14091,7 @@ public class PackageManagerService extends IPackageManager.Stub this.signingDetails = signingDetails; this.installReason = installReason; this.requiredInstalledVersionCode = requiredInstalledVersionCode; this.forceQueryableOverride = false; } InstallParams(ActiveInstallSession activeInstallSession) { Loading Loading @@ -14119,6 +14125,7 @@ public class PackageManagerService extends IPackageManager.Stub signingDetails = activeInstallSession.getSigningDetails(); requiredInstalledVersionCode = activeInstallSession.getSessionParams() .requiredInstalledVersionCode; forceQueryableOverride = activeInstallSession.getSessionParams().forceQueryableOverride; } @Override Loading Loading @@ -14719,6 +14726,7 @@ public class PackageManagerService extends IPackageManager.Stub final int traceCookie; final PackageParser.SigningDetails signingDetails; final int installReason; final boolean forceQueryableOverride; @Nullable final MultiPackageInstallParams mMultiPackageInstallParams; // The list of instruction sets supported by this app. This is currently Loading @@ -14732,7 +14740,7 @@ public class PackageManagerService extends IPackageManager.Stub String abiOverride, String[] installGrantPermissions, List<String> whitelistedRestrictedPermissions, String traceMethod, int traceCookie, SigningDetails signingDetails, int installReason, int installReason, boolean forceQueryableOverride, MultiPackageInstallParams multiPackageInstallParams) { this.origin = origin; this.move = move; Loading @@ -14749,6 +14757,7 @@ public class PackageManagerService extends IPackageManager.Stub this.traceCookie = traceCookie; this.signingDetails = signingDetails; this.installReason = installReason; this.forceQueryableOverride = forceQueryableOverride; this.mMultiPackageInstallParams = multiPackageInstallParams; } Loading @@ -14759,7 +14768,7 @@ public class PackageManagerService extends IPackageManager.Stub params.getUser(), null /*instructionSets*/, params.packageAbiOverride, params.grantedRuntimePermissions, params.whitelistedRestrictedPermissions, params.traceMethod, params.traceCookie, params.signingDetails, params.installReason, params.mParentInstallParams); params.installReason, params.forceQueryableOverride, params.mParentInstallParams); } abstract int copyApk(); Loading Loading @@ -14850,7 +14859,7 @@ public class PackageManagerService extends IPackageManager.Stub super(OriginInfo.fromNothing(), null, null, 0, InstallSource.EMPTY, null, null, instructionSets, null, null, null, null, 0, PackageParser.SigningDetails.UNKNOWN, PackageManager.INSTALL_REASON_UNKNOWN, null /* parent */); PackageManager.INSTALL_REASON_UNKNOWN, false, null /* parent */); this.codeFile = (codePath != null) ? new File(codePath) : null; this.resourceFile = (resourcePath != null) ? new File(resourcePath) : null; }
services/core/java/com/android/server/pm/PackageManagerShellCommand.java +3 −0 Original line number Diff line number Diff line Loading @@ -2730,6 +2730,9 @@ class PackageManagerShellCommand extends ShellCommand { case "--staged": sessionParams.setStaged(); break; case "--force-queryable": sessionParams.setForceQueryable(); break; case "--enable-rollback": if (params.installerPackageName == null) { // com.android.shell has the TEST_MANAGE_ROLLBACKS Loading