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

Commit 702c8991 authored by Tom Natan's avatar Tom Natan Committed by Android (Google) Code Review
Browse files

Merge "Remove all overrides of an app that isn't installed when flag changes"

parents d7ca9150 1a19e33d
Loading
Loading
Loading
Loading
+10 −9
Original line number Original line Diff line number Diff line
@@ -25,6 +25,7 @@ import static android.provider.DeviceConfig.NAMESPACE_APP_COMPAT_OVERRIDES;
import static com.android.server.compat.overrides.AppCompatOverridesParser.FLAG_OWNED_CHANGE_IDS;
import static com.android.server.compat.overrides.AppCompatOverridesParser.FLAG_OWNED_CHANGE_IDS;
import static com.android.server.compat.overrides.AppCompatOverridesParser.FLAG_REMOVE_OVERRIDES;
import static com.android.server.compat.overrides.AppCompatOverridesParser.FLAG_REMOVE_OVERRIDES;


import static java.util.Collections.emptyMap;
import static java.util.Collections.emptySet;
import static java.util.Collections.emptySet;


import android.annotation.NonNull;
import android.annotation.NonNull;
@@ -157,17 +158,17 @@ public final class AppCompatOverridesService {
        Map<String, CompatibilityOverridesToRemoveConfig> packageNameToOverridesToRemove =
        Map<String, CompatibilityOverridesToRemoveConfig> packageNameToOverridesToRemove =
                new ArrayMap<>();
                new ArrayMap<>();
        for (String packageName : packageNames) {
        for (String packageName : packageNames) {
            Long versionCode = getVersionCodeOrNull(packageName);
            if (versionCode == null) {
                // Package isn't installed yet.
                continue;
            }

            Set<Long> changeIdsToSkip = packageToChangeIdsToSkip.getOrDefault(packageName,
            Set<Long> changeIdsToSkip = packageToChangeIdsToSkip.getOrDefault(packageName,
                    emptySet());
                    emptySet());
            Map<Long, PackageOverride> overridesToAdd = mOverridesParser.parsePackageOverrides(

            Map<Long, PackageOverride> overridesToAdd = emptyMap();
            Long versionCode = getVersionCodeOrNull(packageName);
            if (versionCode != null) {
                // Only if package installed add overrides, otherwise just remove.
                overridesToAdd = mOverridesParser.parsePackageOverrides(
                        properties.getString(packageName, /* defaultValue= */ ""), packageName,
                        properties.getString(packageName, /* defaultValue= */ ""), packageName,
                        versionCode, changeIdsToSkip);
                        versionCode, changeIdsToSkip);
            }
            if (!overridesToAdd.isEmpty()) {
            if (!overridesToAdd.isEmpty()) {
                packageNameToOverridesToAdd.put(packageName,
                packageNameToOverridesToAdd.put(packageName,
                        new CompatibilityOverrideConfig(overridesToAdd));
                        new CompatibilityOverrideConfig(overridesToAdd));
+5 −1
Original line number Original line Diff line number Diff line
@@ -183,7 +183,8 @@ public class AppCompatOverridesServiceTest {
                mOverridesToRemoveByPackageConfigCaptor.getValue().packageNameToOverridesToRemove;
                mOverridesToRemoveByPackageConfigCaptor.getValue().packageNameToOverridesToRemove;
        Map<Long, PackageOverride> addedOverrides;
        Map<Long, PackageOverride> addedOverrides;
        assertThat(packageNameToAddedOverrides.keySet()).containsExactly(PACKAGE_1, PACKAGE_3);
        assertThat(packageNameToAddedOverrides.keySet()).containsExactly(PACKAGE_1, PACKAGE_3);
        assertThat(packageNameToRemovedOverrides.keySet()).containsExactly(PACKAGE_3, PACKAGE_4);
        assertThat(packageNameToRemovedOverrides.keySet()).containsExactly(PACKAGE_2, PACKAGE_3,
                PACKAGE_4);
        // Package 1
        // Package 1
        addedOverrides = packageNameToAddedOverrides.get(PACKAGE_1).overrides;
        addedOverrides = packageNameToAddedOverrides.get(PACKAGE_1).overrides;
        assertThat(addedOverrides).hasSize(3);
        assertThat(addedOverrides).hasSize(3);
@@ -193,6 +194,9 @@ public class AppCompatOverridesServiceTest {
                new PackageOverride.Builder().setMinVersionCode(2).setEnabled(true).build());
                new PackageOverride.Builder().setMinVersionCode(2).setEnabled(true).build());
        assertThat(addedOverrides.get(789L)).isEqualTo(
        assertThat(addedOverrides.get(789L)).isEqualTo(
                new PackageOverride.Builder().setEnabled(false).build());
                new PackageOverride.Builder().setEnabled(false).build());
        // Package 2
        assertThat(packageNameToRemovedOverrides.get(PACKAGE_2).changeIds).containsExactly(123L,
                456L, 789L);
        // Package 3
        // Package 3
        addedOverrides = packageNameToAddedOverrides.get(PACKAGE_3).overrides;
        addedOverrides = packageNameToAddedOverrides.get(PACKAGE_3).overrides;
        assertThat(addedOverrides).hasSize(1);
        assertThat(addedOverrides).hasSize(1);