Merge "Fix the FLAG_INSTALLED for factory APEXes"
This commit is contained in:
committed by
Android (Google) Code Review
commit
9233d00739
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -472,7 +472,8 @@ public class StagedInstallInternalTest {
|
||||
assertThat(apex.getLongVersionCode()).isEqualTo(1);
|
||||
assertThat(apex.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)
|
||||
.isEqualTo(ApplicationInfo.FLAG_SYSTEM);
|
||||
assertThat(apex.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED).isEqualTo(0);
|
||||
assertThat(apex.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED)
|
||||
.isEqualTo(ApplicationInfo.FLAG_INSTALLED);
|
||||
assertThat(apex.applicationInfo.sourceDir).startsWith("/system/apex");
|
||||
}
|
||||
|
||||
@@ -495,7 +496,8 @@ public class StagedInstallInternalTest {
|
||||
assertThat(apex.getLongVersionCode()).isEqualTo(1);
|
||||
assertThat(apex.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)
|
||||
.isEqualTo(ApplicationInfo.FLAG_SYSTEM);
|
||||
assertThat(apex.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED).isEqualTo(0);
|
||||
assertThat(apex.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED)
|
||||
.isEqualTo(ApplicationInfo.FLAG_INSTALLED);
|
||||
assertThat(apex.applicationInfo.sourceDir).startsWith("/system/apex");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user