Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit deb69370 authored by Suchi Amalapurapu's avatar Suchi Amalapurapu
Browse files

Revert "Add ordered broadcast when removing packages."

Couple of cosmetic fixes as well.

This reverts commit 0c1285fa.

Conflicts:

	services/java/com/android/server/PackageManagerService.java

Change-Id: Ife0f9f80525f4a41b1f8c12ffc2de62e061e7d5b
parent b0ef1442
Loading
Loading
Loading
Loading
+27 −29
Original line number Diff line number Diff line
@@ -570,15 +570,14 @@ class PackageManagerService extends IPackageManager.Stub {
                    if (DEBUG_INSTALL) Log.v(TAG, "Handling post-install for " + msg.arg1);
                    PostInstallData data = mRunningInstalls.get(msg.arg1);
                    mRunningInstalls.delete(msg.arg1);
                    boolean deleteOld = false;

                    if (data != null) {
                        InstallArgs args = data.args;
                        PackageInstalledInfo res = data.res;

                        if (res.returnCode == PackageManager.INSTALL_SUCCEEDED) {
                            res.removedInfo.sendBroadcast(false, true,
                                    new PackageRemovedIntentReceiver(res.removedInfo.args,
                                            res.removedInfo.args != null));
                            res.removedInfo.sendBroadcast(false, true);
                            Bundle extras = new Bundle(1);
                            extras.putInt(Intent.EXTRA_UID, res.uid);
                            final boolean update = res.removedInfo.removedPackage != null;
@@ -593,6 +592,18 @@ class PackageManagerService extends IPackageManager.Stub {
                                        res.pkg.applicationInfo.packageName,
                                        extras, null);
                            }
                            if (res.removedInfo.args != null) {
                                // Remove the replaced package's older resources safely now
                                deleteOld = true;
                            }
                        }
                        // Force a gc to clear up things
                        Runtime.getRuntime().gc();
                        // We delete after a gc for applications  on sdcard.
                        if (deleteOld) {
                            synchronized (mInstallLock) {
                                res.removedInfo.args.doPostDeleteLI(true);
                            }
                        }
                        if (args.observer != null) {
                            try {
@@ -6065,8 +6076,7 @@ class PackageManagerService extends IPackageManager.Stub {

        if(res && sendBroadCast) {
            boolean systemUpdate = info.isRemovedPackageSystemUpdate;
            info.sendBroadcast(deleteCodeAndResources, systemUpdate,
                    new PackageRemovedIntentReceiver(info.args, deleteCodeAndResources));
            info.sendBroadcast(deleteCodeAndResources, systemUpdate);

            // If the removed package was a system update, the old system packaged
            // was re-enabled; we need to broadcast this information
@@ -6079,28 +6089,18 @@ class PackageManagerService extends IPackageManager.Stub {
                sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, packageName, extras, null);
            }
        }
        return res;
    }

    class PackageRemovedIntentReceiver extends IIntentReceiver.Stub {
        boolean deleteOld;
        InstallArgs args;
        PackageRemovedIntentReceiver(InstallArgs args, boolean deleteOld) {
            this.args = args;
            this.deleteOld = deleteOld;
        }
        public void performReceive(Intent intent, int resultCode, String data, Bundle extras,
                boolean ordered, boolean sticky) throws RemoteException {
            // Force a gc to clear up things
        // Force a gc here.
        Runtime.getRuntime().gc();
            // We delete after a gc for applications  on sdcard.
            if (deleteOld && args != null) {
        // Delete the resources here after sending the broadcast to let
        // other processes clean up before deleting resources.
        if (info.args != null) {
            synchronized (mInstallLock) {
                    args.doPostDeleteLI(true);
                }
                info.args.doPostDeleteLI(deleteCodeAndResources);
            }
        }
        return res;
    }

    static class PackageRemovedInfo {
        String removedPackage;
        int uid = -1;
@@ -6109,8 +6109,7 @@ class PackageManagerService extends IPackageManager.Stub {
        // Clean up resources deleted packages.
        InstallArgs args = null;

        void sendBroadcast(boolean fullRemove, boolean replacing,
                IIntentReceiver finishedReceiver) {
        void sendBroadcast(boolean fullRemove, boolean replacing) {
            Bundle extras = new Bundle(1);
            extras.putInt(Intent.EXTRA_UID, removedUid >= 0 ? removedUid : uid);
            extras.putBoolean(Intent.EXTRA_DATA_REMOVED, fullRemove);
@@ -6118,7 +6117,7 @@ class PackageManagerService extends IPackageManager.Stub {
                extras.putBoolean(Intent.EXTRA_REPLACING, true);
            }
            if (removedPackage != null) {
                sendPackageBroadcast(Intent.ACTION_PACKAGE_REMOVED, removedPackage, extras, finishedReceiver);
                sendPackageBroadcast(Intent.ACTION_PACKAGE_REMOVED, removedPackage, extras, null);
            }
            if (removedUid >= 0) {
                sendPackageBroadcast(Intent.ACTION_UID_REMOVED, null, extras, null);
@@ -9759,7 +9758,7 @@ class PackageManagerService extends IPackageManager.Stub {
               }
           }
           if (returnCode != PackageManager.MOVE_SUCCEEDED) {
               processPendingMove(new MoveParams(null, observer, 0, null), returnCode);
               processPendingMove(new MoveParams(null, observer, 0, packageName), returnCode);
           } else {
               Message msg = mHandler.obtainMessage(INIT_COPY);
               InstallArgs srcArgs = createInstallArgs(currFlags, pkg.applicationInfo.sourceDir,
@@ -9800,7 +9799,6 @@ class PackageManagerService extends IPackageManager.Stub {
                   }
                   if (returnCode == PackageManager.MOVE_SUCCEEDED) {
                       // Send resources unavailable broadcast
                       // TODO Add an ordered broadcast receiver here.
                       sendResourcesChangedBroadcast(false, pkgList, uidArr, null);
                       // Update package code and resource paths
                       synchronized (mInstallLock) {