Loading services/core/java/com/android/server/pm/BroadcastHelper.java +4 −8 Original line number Diff line number Diff line Loading @@ -119,14 +119,10 @@ public final class BroadcastHelper { intent.setPackage(targetPkg); } // Modify the UID when posting to other users final String[] uidExtraNames = { Intent.EXTRA_UID, Intent.EXTRA_PREVIOUS_UID, Intent.EXTRA_NEW_UID }; for (String name : uidExtraNames) { int uid = intent.getIntExtra(name, -1); int uid = intent.getIntExtra(Intent.EXTRA_UID, -1); if (uid >= 0 && UserHandle.getUserId(uid) != userId) { uid = UserHandle.getUid(userId, UserHandle.getAppId(uid)); intent.putExtra(name, uid); } intent.putExtra(Intent.EXTRA_UID, uid); } if (broadcastAllowList != null && PLATFORM_PACKAGE_NAME.equals(targetPkg)) { intent.putExtra(Intent.EXTRA_VISIBILITY_ALLOW_LIST, Loading services/core/java/com/android/server/pm/DeletePackageHelper.java +1 −6 Original line number Diff line number Diff line Loading @@ -243,9 +243,7 @@ final class DeletePackageHelper { if (res) { final boolean killApp = (deleteFlags & PackageManager.DELETE_DONT_KILL_APP) == 0; info.sendPackageRemovedBroadcasts(killApp, removedBySystem); if (disabledSystemPs != null) { info.sendSystemPackageUpdatedBroadcasts(disabledSystemPs.getAppId()); } info.sendSystemPackageUpdatedBroadcasts(); } // Force a gc to clear up things. Loading Loading @@ -603,9 +601,6 @@ final class DeletePackageHelper { if (outInfo != null) { // Delete the updated package outInfo.mIsRemovedPackageSystemUpdate = true; if (disabledPs.getAppId() != deletedPs.getAppId()) { outInfo.mNewAppId = disabledPs.getAppId(); } } if (disabledPs.getVersionCode() < deletedPs.getVersionCode() Loading services/core/java/com/android/server/pm/InstallPackageHelper.java +18 −30 Original line number Diff line number Diff line Loading @@ -958,10 +958,6 @@ final class InstallPackageHelper { createdAppId.put(packageName, optimisticallyRegisterAppId(result)); versionInfos.put(result.mPkgSetting.getPkg().getPackageName(), mPm.getSettingsVersionForPackage(result.mPkgSetting.getPkg())); if (result.needsNewAppId()) { request.mInstallResult.mRemovedInfo.mNewAppId = result.mPkgSetting.getAppId(); } } catch (PackageManagerException e) { request.mInstallResult.setError("Scanning Failed.", e); return; Loading Loading @@ -2594,8 +2590,6 @@ final class InstallPackageHelper { final int dataLoaderType = installArgs.mDataLoaderType; final boolean succeeded = res.mReturnCode == PackageManager.INSTALL_SUCCEEDED; final boolean update = res.mRemovedInfo != null && res.mRemovedInfo.mRemovedPackage != null; final int previousAppId = (res.mRemovedInfo != null && res.mRemovedInfo.mNewAppId >= 0) ? res.mRemovedInfo.mUid : Process.INVALID_UID; final String packageName = res.mName; final PackageStateInternal pkgSetting = succeeded ? mPm.getPackageStateInternal(packageName) : null; Loading Loading @@ -2703,10 +2697,7 @@ final class InstallPackageHelper { // Send added for users that don't see the package for the first time Bundle extras = new Bundle(); extras.putInt(Intent.EXTRA_UID, res.mUid); if (previousAppId != Process.INVALID_UID) { extras.putBoolean(Intent.EXTRA_UID_CHANGING, true); extras.putInt(Intent.EXTRA_PREVIOUS_UID, previousAppId); } else if (update) { if (update) { extras.putBoolean(Intent.EXTRA_REPLACING, true); } extras.putInt(PackageInstaller.EXTRA_DATA_LOADER_TYPE, dataLoaderType); Loading Loading @@ -2749,8 +2740,6 @@ final class InstallPackageHelper { // Send replaced for users that don't see the package for the first time if (update) { // Only send PACKAGE_REPLACED if appId has not changed if (previousAppId == Process.INVALID_UID) { mPm.sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, packageName, extras, 0 /*flags*/, null /*targetPackage*/, null /*finishedReceiver*/, Loading @@ -2770,7 +2759,6 @@ final class InstallPackageHelper { updateUserIds, instantUserIds, null /*broadcastAllowList*/, null); } } mPm.sendPackageBroadcast(Intent.ACTION_MY_PACKAGE_REPLACED, null /*package*/, null /*extras*/, 0 /*flags*/, packageName /*targetPackage*/, Loading services/core/java/com/android/server/pm/PackageRemovedInfo.java +16 −33 Original line number Diff line number Diff line Loading @@ -38,8 +38,6 @@ final class PackageRemovedInfo { String mInstallerPackageName; int mUid = -1; int mRemovedAppId = -1; // If not -1, the app is going through an appId change int mNewAppId = -1; int[] mOrigUsers; int[] mRemovedUsers = null; int[] mBroadcastUsers = null; Loading Loading @@ -67,22 +65,16 @@ final class PackageRemovedInfo { sendPackageRemovedBroadcastInternal(killApp, removedBySystem); } void sendSystemPackageUpdatedBroadcasts(int newAppId) { void sendSystemPackageUpdatedBroadcasts() { if (mIsRemovedPackageSystemUpdate) { sendSystemPackageUpdatedBroadcastsInternal(newAppId); sendSystemPackageUpdatedBroadcastsInternal(); } } private void sendSystemPackageUpdatedBroadcastsInternal(int newAppId) { private void sendSystemPackageUpdatedBroadcastsInternal() { Bundle extras = new Bundle(2); extras.putInt(Intent.EXTRA_UID, newAppId); // When appId changes, do not set the replacing extra if (mNewAppId >= 0) { extras.putBoolean(Intent.EXTRA_UID_CHANGING, true); extras.putInt(Intent.EXTRA_PREVIOUS_UID, mRemovedAppId >= 0 ? mRemovedAppId : mUid); } else { extras.putInt(Intent.EXTRA_UID, mRemovedAppId >= 0 ? mRemovedAppId : mUid); extras.putBoolean(Intent.EXTRA_REPLACING, true); } mPackageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, mRemovedPackage, extras, 0, null /*targetPackage*/, null, null, null, mBroadcastAllowList, null); if (mInstallerPackageName != null) { Loading @@ -90,17 +82,13 @@ final class PackageRemovedInfo { mRemovedPackage, extras, 0 /*flags*/, mInstallerPackageName, null, null, null, null /* broadcastAllowList */, null); } if (mNewAppId < 0) { mPackageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, mRemovedPackage, extras, 0, null /*targetPackage*/, null, null, null, mBroadcastAllowList, null); if (mInstallerPackageName != null) { mPackageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, mRemovedPackage, extras, 0 /*flags*/, mInstallerPackageName, null, null, null, null /* broadcastAllowList */, null); } } mPackageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, mRemovedPackage, extras, 0, null /*targetPackage*/, null, null, null, mBroadcastAllowList, null); mPackageSender.sendPackageBroadcast(Intent.ACTION_MY_PACKAGE_REPLACED, null, null, 0, mRemovedPackage, null, null, null, null /* broadcastAllowList */, getTemporaryAppAllowlistBroadcastOptions(REASON_PACKAGE_REPLACED).toBundle()); Loading Loading @@ -134,15 +122,10 @@ final class PackageRemovedInfo { extras.putBoolean(Intent.EXTRA_DATA_REMOVED, mDataRemoved); extras.putBoolean(Intent.EXTRA_DONT_KILL_APP, !killApp); extras.putBoolean(Intent.EXTRA_USER_INITIATED, !removedBySystem); // When appId changes, do not set the replacing extra if (mNewAppId >= 0) { extras.putBoolean(Intent.EXTRA_UID_CHANGING, true); extras.putInt(Intent.EXTRA_NEW_UID, mNewAppId); } else if (mIsUpdate || mIsRemovedPackageSystemUpdate) { final boolean isReplace = mIsUpdate || mIsRemovedPackageSystemUpdate; if (isReplace) { extras.putBoolean(Intent.EXTRA_REPLACING, true); } extras.putBoolean(Intent.EXTRA_REMOVED_FOR_ALL_USERS, mRemovedForAllUsers); if (mRemovedPackage != null) { mPackageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_REMOVED, Loading @@ -165,9 +148,9 @@ final class PackageRemovedInfo { } } if (mRemovedAppId >= 0) { // If the package is not actually removed, some services need to know the // package name affected. if (mNewAppId >= 0 || mIsUpdate || mIsRemovedPackageSystemUpdate) { // If a system app's updates are uninstalled the UID is not actually removed. Some // services need to know the package name affected. if (isReplace) { extras.putString(Intent.EXTRA_PACKAGE_NAME, mRemovedPackage); } Loading Loading
services/core/java/com/android/server/pm/BroadcastHelper.java +4 −8 Original line number Diff line number Diff line Loading @@ -119,14 +119,10 @@ public final class BroadcastHelper { intent.setPackage(targetPkg); } // Modify the UID when posting to other users final String[] uidExtraNames = { Intent.EXTRA_UID, Intent.EXTRA_PREVIOUS_UID, Intent.EXTRA_NEW_UID }; for (String name : uidExtraNames) { int uid = intent.getIntExtra(name, -1); int uid = intent.getIntExtra(Intent.EXTRA_UID, -1); if (uid >= 0 && UserHandle.getUserId(uid) != userId) { uid = UserHandle.getUid(userId, UserHandle.getAppId(uid)); intent.putExtra(name, uid); } intent.putExtra(Intent.EXTRA_UID, uid); } if (broadcastAllowList != null && PLATFORM_PACKAGE_NAME.equals(targetPkg)) { intent.putExtra(Intent.EXTRA_VISIBILITY_ALLOW_LIST, Loading
services/core/java/com/android/server/pm/DeletePackageHelper.java +1 −6 Original line number Diff line number Diff line Loading @@ -243,9 +243,7 @@ final class DeletePackageHelper { if (res) { final boolean killApp = (deleteFlags & PackageManager.DELETE_DONT_KILL_APP) == 0; info.sendPackageRemovedBroadcasts(killApp, removedBySystem); if (disabledSystemPs != null) { info.sendSystemPackageUpdatedBroadcasts(disabledSystemPs.getAppId()); } info.sendSystemPackageUpdatedBroadcasts(); } // Force a gc to clear up things. Loading Loading @@ -603,9 +601,6 @@ final class DeletePackageHelper { if (outInfo != null) { // Delete the updated package outInfo.mIsRemovedPackageSystemUpdate = true; if (disabledPs.getAppId() != deletedPs.getAppId()) { outInfo.mNewAppId = disabledPs.getAppId(); } } if (disabledPs.getVersionCode() < deletedPs.getVersionCode() Loading
services/core/java/com/android/server/pm/InstallPackageHelper.java +18 −30 Original line number Diff line number Diff line Loading @@ -958,10 +958,6 @@ final class InstallPackageHelper { createdAppId.put(packageName, optimisticallyRegisterAppId(result)); versionInfos.put(result.mPkgSetting.getPkg().getPackageName(), mPm.getSettingsVersionForPackage(result.mPkgSetting.getPkg())); if (result.needsNewAppId()) { request.mInstallResult.mRemovedInfo.mNewAppId = result.mPkgSetting.getAppId(); } } catch (PackageManagerException e) { request.mInstallResult.setError("Scanning Failed.", e); return; Loading Loading @@ -2594,8 +2590,6 @@ final class InstallPackageHelper { final int dataLoaderType = installArgs.mDataLoaderType; final boolean succeeded = res.mReturnCode == PackageManager.INSTALL_SUCCEEDED; final boolean update = res.mRemovedInfo != null && res.mRemovedInfo.mRemovedPackage != null; final int previousAppId = (res.mRemovedInfo != null && res.mRemovedInfo.mNewAppId >= 0) ? res.mRemovedInfo.mUid : Process.INVALID_UID; final String packageName = res.mName; final PackageStateInternal pkgSetting = succeeded ? mPm.getPackageStateInternal(packageName) : null; Loading Loading @@ -2703,10 +2697,7 @@ final class InstallPackageHelper { // Send added for users that don't see the package for the first time Bundle extras = new Bundle(); extras.putInt(Intent.EXTRA_UID, res.mUid); if (previousAppId != Process.INVALID_UID) { extras.putBoolean(Intent.EXTRA_UID_CHANGING, true); extras.putInt(Intent.EXTRA_PREVIOUS_UID, previousAppId); } else if (update) { if (update) { extras.putBoolean(Intent.EXTRA_REPLACING, true); } extras.putInt(PackageInstaller.EXTRA_DATA_LOADER_TYPE, dataLoaderType); Loading Loading @@ -2749,8 +2740,6 @@ final class InstallPackageHelper { // Send replaced for users that don't see the package for the first time if (update) { // Only send PACKAGE_REPLACED if appId has not changed if (previousAppId == Process.INVALID_UID) { mPm.sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, packageName, extras, 0 /*flags*/, null /*targetPackage*/, null /*finishedReceiver*/, Loading @@ -2770,7 +2759,6 @@ final class InstallPackageHelper { updateUserIds, instantUserIds, null /*broadcastAllowList*/, null); } } mPm.sendPackageBroadcast(Intent.ACTION_MY_PACKAGE_REPLACED, null /*package*/, null /*extras*/, 0 /*flags*/, packageName /*targetPackage*/, Loading
services/core/java/com/android/server/pm/PackageRemovedInfo.java +16 −33 Original line number Diff line number Diff line Loading @@ -38,8 +38,6 @@ final class PackageRemovedInfo { String mInstallerPackageName; int mUid = -1; int mRemovedAppId = -1; // If not -1, the app is going through an appId change int mNewAppId = -1; int[] mOrigUsers; int[] mRemovedUsers = null; int[] mBroadcastUsers = null; Loading Loading @@ -67,22 +65,16 @@ final class PackageRemovedInfo { sendPackageRemovedBroadcastInternal(killApp, removedBySystem); } void sendSystemPackageUpdatedBroadcasts(int newAppId) { void sendSystemPackageUpdatedBroadcasts() { if (mIsRemovedPackageSystemUpdate) { sendSystemPackageUpdatedBroadcastsInternal(newAppId); sendSystemPackageUpdatedBroadcastsInternal(); } } private void sendSystemPackageUpdatedBroadcastsInternal(int newAppId) { private void sendSystemPackageUpdatedBroadcastsInternal() { Bundle extras = new Bundle(2); extras.putInt(Intent.EXTRA_UID, newAppId); // When appId changes, do not set the replacing extra if (mNewAppId >= 0) { extras.putBoolean(Intent.EXTRA_UID_CHANGING, true); extras.putInt(Intent.EXTRA_PREVIOUS_UID, mRemovedAppId >= 0 ? mRemovedAppId : mUid); } else { extras.putInt(Intent.EXTRA_UID, mRemovedAppId >= 0 ? mRemovedAppId : mUid); extras.putBoolean(Intent.EXTRA_REPLACING, true); } mPackageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, mRemovedPackage, extras, 0, null /*targetPackage*/, null, null, null, mBroadcastAllowList, null); if (mInstallerPackageName != null) { Loading @@ -90,17 +82,13 @@ final class PackageRemovedInfo { mRemovedPackage, extras, 0 /*flags*/, mInstallerPackageName, null, null, null, null /* broadcastAllowList */, null); } if (mNewAppId < 0) { mPackageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, mRemovedPackage, extras, 0, null /*targetPackage*/, null, null, null, mBroadcastAllowList, null); if (mInstallerPackageName != null) { mPackageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, mRemovedPackage, extras, 0 /*flags*/, mInstallerPackageName, null, null, null, null /* broadcastAllowList */, null); } } mPackageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, mRemovedPackage, extras, 0, null /*targetPackage*/, null, null, null, mBroadcastAllowList, null); mPackageSender.sendPackageBroadcast(Intent.ACTION_MY_PACKAGE_REPLACED, null, null, 0, mRemovedPackage, null, null, null, null /* broadcastAllowList */, getTemporaryAppAllowlistBroadcastOptions(REASON_PACKAGE_REPLACED).toBundle()); Loading Loading @@ -134,15 +122,10 @@ final class PackageRemovedInfo { extras.putBoolean(Intent.EXTRA_DATA_REMOVED, mDataRemoved); extras.putBoolean(Intent.EXTRA_DONT_KILL_APP, !killApp); extras.putBoolean(Intent.EXTRA_USER_INITIATED, !removedBySystem); // When appId changes, do not set the replacing extra if (mNewAppId >= 0) { extras.putBoolean(Intent.EXTRA_UID_CHANGING, true); extras.putInt(Intent.EXTRA_NEW_UID, mNewAppId); } else if (mIsUpdate || mIsRemovedPackageSystemUpdate) { final boolean isReplace = mIsUpdate || mIsRemovedPackageSystemUpdate; if (isReplace) { extras.putBoolean(Intent.EXTRA_REPLACING, true); } extras.putBoolean(Intent.EXTRA_REMOVED_FOR_ALL_USERS, mRemovedForAllUsers); if (mRemovedPackage != null) { mPackageSender.sendPackageBroadcast(Intent.ACTION_PACKAGE_REMOVED, Loading @@ -165,9 +148,9 @@ final class PackageRemovedInfo { } } if (mRemovedAppId >= 0) { // If the package is not actually removed, some services need to know the // package name affected. if (mNewAppId >= 0 || mIsUpdate || mIsRemovedPackageSystemUpdate) { // If a system app's updates are uninstalled the UID is not actually removed. Some // services need to know the package name affected. if (isReplace) { extras.putString(Intent.EXTRA_PACKAGE_NAME, mRemovedPackage); } Loading