Merge "Always send result code to IntentSender, if present." into udc-dev am: 65f443a6eb
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23176391 Change-Id: Ida75d7356994b6bf454ec30483ad50057e218421 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -606,8 +606,8 @@ final class InstallPackageHelper {
|
||||
Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
|
||||
}
|
||||
|
||||
public int installExistingPackageAsUser(@Nullable String packageName, @UserIdInt int userId,
|
||||
@PackageManager.InstallFlags int installFlags,
|
||||
public Pair<Integer, IntentSender> installExistingPackageAsUser(@Nullable String packageName,
|
||||
@UserIdInt int userId, @PackageManager.InstallFlags int installFlags,
|
||||
@PackageManager.InstallReason int installReason,
|
||||
@Nullable List<String> allowlistedRestrictedPermissions,
|
||||
@Nullable IntentSender intentSender) {
|
||||
@@ -632,7 +632,7 @@ final class InstallPackageHelper {
|
||||
true /* requireFullPermission */, true /* checkShell */,
|
||||
"installExistingPackage for user " + userId);
|
||||
if (mPm.isUserRestricted(userId, UserManager.DISALLOW_INSTALL_APPS)) {
|
||||
return PackageManager.INSTALL_FAILED_USER_RESTRICTED;
|
||||
return Pair.create(PackageManager.INSTALL_FAILED_USER_RESTRICTED, intentSender);
|
||||
}
|
||||
|
||||
final long callingId = Binder.clearCallingIdentity();
|
||||
@@ -648,7 +648,7 @@ final class InstallPackageHelper {
|
||||
final Computer snapshot = mPm.snapshotComputer();
|
||||
pkgSetting = mPm.mSettings.getPackageLPr(packageName);
|
||||
if (pkgSetting == null || pkgSetting.getPkg() == null) {
|
||||
return PackageManager.INSTALL_FAILED_INVALID_URI;
|
||||
return Pair.create(PackageManager.INSTALL_FAILED_INVALID_URI, intentSender);
|
||||
}
|
||||
if (!snapshot.canViewInstantApps(callingUid, UserHandle.getUserId(callingUid))) {
|
||||
// only allow the existing package to be used if it's installed as a full
|
||||
@@ -661,7 +661,7 @@ final class InstallPackageHelper {
|
||||
}
|
||||
}
|
||||
if (!installAllowed) {
|
||||
return PackageManager.INSTALL_FAILED_INVALID_URI;
|
||||
return Pair.create(PackageManager.INSTALL_FAILED_INVALID_URI, intentSender);
|
||||
}
|
||||
}
|
||||
if (!pkgSetting.getInstalled(userId)) {
|
||||
@@ -719,14 +719,17 @@ final class InstallPackageHelper {
|
||||
}
|
||||
// start async restore with no post-install since we finish install here
|
||||
|
||||
final IntentSender onCompleteSender = intentSender;
|
||||
intentSender = null;
|
||||
|
||||
InstallRequest request = new InstallRequest(userId,
|
||||
PackageManager.INSTALL_SUCCEEDED, pkgSetting.getPkg(), new int[]{ userId },
|
||||
() -> {
|
||||
mPm.restorePermissionsAndUpdateRolesForNewUserInstall(packageName,
|
||||
userId);
|
||||
if (intentSender != null) {
|
||||
onRestoreComplete(PackageManager.INSTALL_SUCCEEDED, mContext,
|
||||
intentSender);
|
||||
if (onCompleteSender != null) {
|
||||
onInstallComplete(PackageManager.INSTALL_SUCCEEDED, mContext,
|
||||
onCompleteSender);
|
||||
}
|
||||
});
|
||||
restoreAndPostInstall(request);
|
||||
@@ -735,10 +738,10 @@ final class InstallPackageHelper {
|
||||
Binder.restoreCallingIdentity(callingId);
|
||||
}
|
||||
|
||||
return PackageManager.INSTALL_SUCCEEDED;
|
||||
return Pair.create(PackageManager.INSTALL_SUCCEEDED, intentSender);
|
||||
}
|
||||
|
||||
private static void onRestoreComplete(int returnCode, Context context, IntentSender target) {
|
||||
static void onInstallComplete(int returnCode, Context context, IntentSender target) {
|
||||
Intent fillIn = new Intent();
|
||||
fillIn.putExtra(PackageInstaller.EXTRA_STATUS,
|
||||
PackageManager.installStatusToPublicStatus(returnCode));
|
||||
|
||||
@@ -1293,8 +1293,15 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
|
||||
public void installExistingPackage(String packageName, int installFlags, int installReason,
|
||||
IntentSender statusReceiver, int userId, List<String> allowListedPermissions) {
|
||||
final InstallPackageHelper installPackageHelper = new InstallPackageHelper(mPm);
|
||||
installPackageHelper.installExistingPackageAsUser(packageName, userId, installFlags,
|
||||
installReason, allowListedPermissions, statusReceiver);
|
||||
|
||||
var result = installPackageHelper.installExistingPackageAsUser(packageName, userId,
|
||||
installFlags, installReason, allowListedPermissions, statusReceiver);
|
||||
|
||||
int returnCode = result.first;
|
||||
IntentSender onCompleteSender = result.second;
|
||||
if (onCompleteSender != null) {
|
||||
InstallPackageHelper.onInstallComplete(returnCode, mContext, onCompleteSender);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -5350,7 +5350,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
||||
public int installExistingPackageAsUser(String packageName, int userId, int installFlags,
|
||||
int installReason, List<String> whiteListedPermissions) {
|
||||
return mInstallPackageHelper.installExistingPackageAsUser(packageName, userId, installFlags,
|
||||
installReason, whiteListedPermissions, null);
|
||||
installReason, whiteListedPermissions, null).first;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user