Loading services/core/java/com/android/server/compat/CompatChange.java +6 −0 Original line number Diff line number Diff line Loading @@ -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); } Loading services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java +28 −0 Original line number Diff line number Diff line Loading @@ -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(); } } Loading
services/core/java/com/android/server/compat/CompatChange.java +6 −0 Original line number Diff line number Diff line Loading @@ -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); } Loading
services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java +28 −0 Original line number Diff line number Diff line Loading @@ -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(); } }