Merge "Remove all overrides of an app that isn't installed when flag changes"
This commit is contained in:
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user