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

Commit 9233d007 authored by Chun-Wei Wang's avatar Chun-Wei Wang Committed by Android (Google) Code Review
Browse files

Merge "Fix the FLAG_INSTALLED for factory APEXes"

parents c98d9147 1be3c76e
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -448,6 +448,12 @@ public class PackageInfo implements Parcelable {
     */
    public boolean isApex;

    /**
     * Whether this is an active APEX package.
     * @hide
     */
    public boolean isActiveApex;

    public PackageInfo() {
    }

@@ -534,6 +540,7 @@ public class PackageInfo implements Parcelable {
            dest.writeInt(0);
        }
        dest.writeBoolean(isApex);
        dest.writeBoolean(isActiveApex);
        dest.restoreAllowSquashing(prevAllowSquashing);
    }

@@ -598,5 +605,6 @@ public class PackageInfo implements Parcelable {
            signingInfo = SigningInfo.CREATOR.createFromParcel(source);
        }
        isApex = source.readBoolean();
        isActiveApex = source.readBoolean();
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -506,7 +506,7 @@ public abstract class ApexManager {
         * @return {@code true} if this package is active, {@code false} otherwise.
         */
        private static boolean isActive(PackageInfo packageInfo) {
            return (packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED) != 0;
            return packageInfo.isActiveApex;
        }

        /**
@@ -1153,7 +1153,7 @@ public abstract class ApexManager {
                // Installation was successful, time to update mAllPackagesCache
                synchronized (mLock) {
                    if (isFactory(existingApexPkg)) {
                        existingApexPkg.applicationInfo.flags &= ~ApplicationInfo.FLAG_INSTALLED;
                        existingApexPkg.isActiveApex = false;
                        mAllPackagesCache.add(finalApexPkg);
                    } else {
                        for (int i = 0, size = mAllPackagesCache.size(); i < size; i++) {
+0 −3
Original line number Diff line number Diff line
@@ -1835,9 +1835,6 @@ public class ComputerEngine implements Computer {
                list.addAll(mApexManager.getFactoryPackages());
            } else {
                list.addAll(mApexManager.getActivePackages());
                if (listUninstalled) {
                    list.addAll(mApexManager.getInactivePackages());
                }
            }
        }
        return new ParceledListSlice<>(list);
+2 −5
Original line number Diff line number Diff line
@@ -322,17 +322,14 @@ public class PackageInfoWithoutStateUtils {
            pi.applicationInfo.sourceDir = apexFile.getPath();
            pi.applicationInfo.publicSourceDir = apexFile.getPath();
            pi.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
            pi.applicationInfo.flags |= ApplicationInfo.FLAG_INSTALLED;
            if (apexInfo.isFactory) {
                pi.applicationInfo.flags &= ~ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
            } else {
                pi.applicationInfo.flags |= ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
            }
            if (apexInfo.isActive) {
                pi.applicationInfo.flags |= ApplicationInfo.FLAG_INSTALLED;
            } else {
                pi.applicationInfo.flags &= ~ApplicationInfo.FLAG_INSTALLED;
            }
            pi.isApex = true;
            pi.isActiveApex = apexInfo.isActive;
        }

        final SigningDetails signingDetails = pkg.getSigningDetails();
+4 −2
Original line number Diff line number Diff line
@@ -397,7 +397,8 @@ public class ApexManagerTest {
        assertThat(factoryInfo.applicationInfo.longVersionCode).isEqualTo(1);
        assertThat(factoryInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)
            .isEqualTo(ApplicationInfo.FLAG_SYSTEM);
        assertThat(factoryInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED).isEqualTo(0);
        assertThat(factoryInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED)
                .isEqualTo(ApplicationInfo.FLAG_INSTALLED);
    }

    @Test
@@ -436,7 +437,8 @@ public class ApexManagerTest {
        assertThat(factoryInfo.applicationInfo.longVersionCode).isEqualTo(1);
        assertThat(factoryInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)
            .isEqualTo(ApplicationInfo.FLAG_SYSTEM);
        assertThat(factoryInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED).isEqualTo(0);
        assertThat(factoryInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED)
                .isEqualTo(ApplicationInfo.FLAG_INSTALLED);
    }

    @Test
Loading