From b365b307c5dd9737c0236cc1a7d597d74b14c492 Mon Sep 17 00:00:00 2001 From: Ted Bauer Date: Wed, 25 Sep 2024 13:32:11 +0000 Subject: Propagate individual aconfig sysprop on flag stage Test: m Bug: 331963764 Flag: com.android.providers.settings.notify_individual_aconfig_sysprop_changed Merged-In: Ica7781499e73bb47ca8eaf27f38cd3600d2fc556 Change-Id: Ica7781499e73bb47ca8eaf27f38cd3600d2fc556 --- .../android/providers/settings/SettingsProvider.java | 18 ++++++++++++++++++ .../providers/settings/device_config_service.aconfig | 11 +++++++++++ 2 files changed, 29 insertions(+) diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index f6960360cfb3..f4451de8c3c8 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -3265,6 +3265,24 @@ public class SettingsProvider extends ContentProvider { if (forceNotify || success) { notifyForSettingsChange(key, name); + + // If this is an aconfig flag, it will be written as a staged flag. + // Notify that its staged flag value will be updated. + if (Flags.notifyIndividualAconfigSyspropChanged() && type == SETTINGS_TYPE_CONFIG) { + int slashIndex = name.indexOf('/'); + boolean validSlashIndex = slashIndex != -1 + && slashIndex != 0 + && slashIndex != name.length(); + if (validSlashIndex) { + String namespace = name.substring(0, slashIndex); + String flagName = name.substring(slashIndex + 1); + if (settingsState.getAconfigDefaultFlags().containsKey(flagName)) { + String stagedName = "staged/" + namespace + "*" + flagName; + notifyForSettingsChange(key, stagedName); + } + } + } + if (wasUnsetNonPredefinedSetting) { // Increment the generation number for all non-predefined, unset settings, // because a new non-predefined setting has been inserted diff --git a/packages/SettingsProvider/src/com/android/providers/settings/device_config_service.aconfig b/packages/SettingsProvider/src/com/android/providers/settings/device_config_service.aconfig index 4f5955b1c6ca..27335edcb3b3 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/device_config_service.aconfig +++ b/packages/SettingsProvider/src/com/android/providers/settings/device_config_service.aconfig @@ -27,6 +27,17 @@ flag { } } +flag { + name: "notify_individual_aconfig_sysprop_changed" + namespace: "core_experiments_team_internal" + description: "When enabled, propagate individual aconfig sys props on flag stage." + bug: "331963764" + is_fixed_read_only: true + metadata { + purpose: PURPOSE_BUGFIX + } +} + flag { name: "load_apex_aconfig_protobufs" namespace: "core_experiments_team_internal" -- cgit v1.2.3-59-g8ed1b