Merge "Always apply compat changes to system apps."
diff --git a/services/core/java/com/android/server/compat/CompatChange.java b/services/core/java/com/android/server/compat/CompatChange.java
index bb3b9be..2a866f3 100644
--- a/services/core/java/com/android/server/compat/CompatChange.java
+++ b/services/core/java/com/android/server/compat/CompatChange.java
@@ -106,6 +106,12 @@
* @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);
}
diff --git a/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java b/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java
index e6c484a..d008ca6 100644
--- a/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java
+++ b/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java
@@ -142,4 +142,32 @@
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();
+ }
}