Merge "Always apply compat changes to system apps." am: e691553aa6 am: fe17bdccf9

am: ebd7b1c2ea

Change-Id: I790378ff858887374b4384f7f78cc87af5e163f8
This commit is contained in:
Mathew Inwood
2019-07-22 12:11:36 -07:00
committed by android-build-merger
2 changed files with 34 additions and 0 deletions

View File

@@ -106,6 +106,12 @@ public final class CompatChange {
* @return {@code true} if the change should be enabled for the package.
*/
boolean isEnabled(ApplicationInfo app) {
if (app.isSystemApp()) {
// All changes are enabled for system apps, and we do not support overrides.
// Compatibility issues for system apps should be addressed in the app itself when
// the compatibility change is made.
return true;
}
if (mPackageOverrides != null && mPackageOverrides.containsKey(app.packageName)) {
return mPackageOverrides.get(app.packageName);
}

View File

@@ -142,4 +142,32 @@ public class CompatConfigTest {
CompatConfig pc = new CompatConfig();
assertThat(pc.lookupChangeId("MY_CHANGE")).isEqualTo(-1L);
}
@Test
public void testSystemAppDisabledChangeEnabled() {
CompatConfig pc = new CompatConfig();
pc.addChange(new CompatChange(1234L, "MY_CHANGE", -1, true)); // disabled
ApplicationInfo sysApp = makeAppInfo("system.app", 1);
sysApp.flags |= ApplicationInfo.FLAG_SYSTEM;
assertThat(pc.isChangeEnabled(1234L, sysApp)).isTrue();
}
@Test
public void testSystemAppOverrideIgnored() {
CompatConfig pc = new CompatConfig();
pc.addChange(new CompatChange(1234L, "MY_CHANGE", -1, false));
pc.addOverride(1234L, "system.app", false);
ApplicationInfo sysApp = makeAppInfo("system.app", 1);
sysApp.flags |= ApplicationInfo.FLAG_SYSTEM;
assertThat(pc.isChangeEnabled(1234L, sysApp)).isTrue();
}
@Test
public void testSystemAppTargetSdkIgnored() {
CompatConfig pc = new CompatConfig();
pc.addChange(new CompatChange(1234L, "MY_CHANGE", 2, false));
ApplicationInfo sysApp = makeAppInfo("system.app", 1);
sysApp.flags |= ApplicationInfo.FLAG_SYSTEM;
assertThat(pc.isChangeEnabled(1234L, sysApp)).isTrue();
}
}