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

This commit is contained in:
Tom Natan
2022-01-15 11:08:35 +00:00
committed by Android (Google) Code Review
2 changed files with 15 additions and 10 deletions

View File

@@ -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_REMOVE_OVERRIDES;
import static java.util.Collections.emptyMap;
import static java.util.Collections.emptySet;
import android.annotation.NonNull;
@@ -157,17 +158,17 @@ public final class AppCompatOverridesService {
Map<String, CompatibilityOverridesToRemoveConfig> packageNameToOverridesToRemove =
new ArrayMap<>();
for (String packageName : packageNames) {
Long versionCode = getVersionCodeOrNull(packageName);
if (versionCode == null) {
// Package isn't installed yet.
continue;
}
Set<Long> changeIdsToSkip = packageToChangeIdsToSkip.getOrDefault(packageName,
emptySet());
Map<Long, PackageOverride> overridesToAdd = mOverridesParser.parsePackageOverrides(
properties.getString(packageName, /* defaultValue= */ ""), packageName,
versionCode, changeIdsToSkip);
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,
versionCode, changeIdsToSkip);
}
if (!overridesToAdd.isEmpty()) {
packageNameToOverridesToAdd.put(packageName,
new CompatibilityOverrideConfig(overridesToAdd));

View File

@@ -183,7 +183,8 @@ public class AppCompatOverridesServiceTest {
mOverridesToRemoveByPackageConfigCaptor.getValue().packageNameToOverridesToRemove;
Map<Long, PackageOverride> addedOverrides;
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
addedOverrides = packageNameToAddedOverrides.get(PACKAGE_1).overrides;
assertThat(addedOverrides).hasSize(3);
@@ -193,6 +194,9 @@ public class AppCompatOverridesServiceTest {
new PackageOverride.Builder().setMinVersionCode(2).setEnabled(true).build());
assertThat(addedOverrides.get(789L)).isEqualTo(
new PackageOverride.Builder().setEnabled(false).build());
// Package 2
assertThat(packageNameToRemovedOverrides.get(PACKAGE_2).changeIds).containsExactly(123L,
456L, 789L);
// Package 3
addedOverrides = packageNameToAddedOverrides.get(PACKAGE_3).overrides;
assertThat(addedOverrides).hasSize(1);