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

Commit ade90057 authored by Calin Juravle's avatar Calin Juravle Committed by android-build-merger
Browse files

Save package dex usage info after secondary dex reconciliation

am: 61fd6eab

Change-Id: I90a95645e9d2acf1b2377e165a64b34b1a678295
parents 112a61bf 61fd6eab
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -291,6 +291,7 @@ public class DexManager {
            return;
        }
        Set<String> dexFilesToRemove = new HashSet<>();
        boolean updated = false;
        for (Map.Entry<String, DexUseInfo> entry : useInfo.getDexUseInfoMap().entrySet()) {
            String dexPath = entry.getKey();
            DexUseInfo dexUseInfo = entry.getValue();
@@ -311,7 +312,8 @@ public class DexManager {
                Slog.d(TAG, "Could not find package when compiling secondary dex " + packageName
                        + " for user " + dexUseInfo.getOwnerUserId());
                // Update the usage and continue, another user might still have the package.
                mPackageDexUsage.removeUserPackage(packageName, dexUseInfo.getOwnerUserId());
                updated = mPackageDexUsage.removeUserPackage(
                        packageName, dexUseInfo.getOwnerUserId()) || updated;
                continue;
            }
            ApplicationInfo info = pkg.applicationInfo;
@@ -322,7 +324,8 @@ public class DexManager {
                flags |= StorageManager.FLAG_STORAGE_CE;
            } else {
                Slog.e(TAG, "Could not infer CE/DE storage for package " + info.packageName);
                mPackageDexUsage.removeUserPackage(packageName, dexUseInfo.getOwnerUserId());
                updated = mPackageDexUsage.removeUserPackage(
                        packageName, dexUseInfo.getOwnerUserId()) || updated;
                continue;
            }

@@ -338,8 +341,13 @@ public class DexManager {
                }
            }
            if (!dexStillExists) {
                mPackageDexUsage.removeDexFile(packageName, dexPath, dexUseInfo.getOwnerUserId());
                updated = mPackageDexUsage.removeDexFile(
                        packageName, dexPath, dexUseInfo.getOwnerUserId()) || updated;
            }

        }
        if (updated) {
            mPackageDexUsage.maybeWriteAsync();
        }
    }

+4 −0
Original line number Diff line number Diff line
@@ -378,6 +378,8 @@ public class PackageDexUsage extends AbstractStatsBase<Void> {

    /**
     * Remove all the records about package {@code packageName} belonging to user {@code userId}.
     * @return true if the record was found and actually deleted,
     *         false if the record doesn't exist
     */
    public boolean removeUserPackage(String packageName, int userId) {
        synchronized (mPackageUseInfoMap) {
@@ -402,6 +404,8 @@ public class PackageDexUsage extends AbstractStatsBase<Void> {
    /**
     * Remove the secondary dex file record belonging to the package {@code packageName}
     * and user {@code userId}.
     * @return true if the record was found and actually deleted,
     *         false if the record doesn't exist
     */
    public boolean removeDexFile(String packageName, String dexFile, int userId) {
        synchronized (mPackageUseInfoMap) {