Loading packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +19 −1 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ import static com.android.providers.settings.SettingsState.isSystemSettingsKey; import static com.android.providers.settings.SettingsState.makeKey; import android.Manifest; import android.aconfigd.AconfigdFlagInfo; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; Loading Loading @@ -1371,10 +1372,27 @@ public class SettingsProvider extends ContentProvider { } } Map<String, AconfigdFlagInfo> aconfigFlagInfos = settingsState.getAconfigDefaultFlags(); for (int i = 0; i < nameCount; i++) { String name = names.get(i); Setting setting = settingsState.getSettingLocked(name); if (prefix == null || setting.getName().startsWith(prefix)) { if (prefix == null || name.startsWith(prefix)) { if (Flags.ignoreXmlForReadOnlyFlags()) { int slashIndex = name.indexOf("/"); boolean validSlashIndex = slashIndex != -1 && slashIndex != 0 && slashIndex != name.length(); if (validSlashIndex) { String flagName = name.substring(slashIndex + 1); AconfigdFlagInfo flagInfo = aconfigFlagInfos.get(flagName); if (flagInfo != null && !flagInfo.getIsReadWrite()) { continue; } } } flagsToValues.put(setting.getName(), setting.getValue()); } } Loading packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +7 −0 Original line number Diff line number Diff line Loading @@ -774,6 +774,13 @@ final class SettingsState { } } @NonNull public Map<String, AconfigdFlagInfo> getAconfigDefaultFlags() { synchronized (mLock) { return mAconfigDefaultFlags; } } // The settings provider must hold its lock when calling here. public Setting getSettingLocked(String name) { if (TextUtils.isEmpty(name)) { Loading packages/SettingsProvider/src/com/android/providers/settings/device_config_service.aconfig +11 −0 Original line number Diff line number Diff line Loading @@ -41,3 +41,14 @@ flag { description: "If this flag is detected as true on boot, writes a logfile to track storage migration correctness." bug: "328444881" } flag { name: "ignore_xml_for_read_only_flags" namespace: "core_experiments_team_internal" description: "When enabled, ignore any flag in the SettingsProvider XML for RO flags." bug: "345007098" is_fixed_read_only: true metadata { purpose: PURPOSE_BUGFIX } } Loading
packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +19 −1 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ import static com.android.providers.settings.SettingsState.isSystemSettingsKey; import static com.android.providers.settings.SettingsState.makeKey; import android.Manifest; import android.aconfigd.AconfigdFlagInfo; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; Loading Loading @@ -1371,10 +1372,27 @@ public class SettingsProvider extends ContentProvider { } } Map<String, AconfigdFlagInfo> aconfigFlagInfos = settingsState.getAconfigDefaultFlags(); for (int i = 0; i < nameCount; i++) { String name = names.get(i); Setting setting = settingsState.getSettingLocked(name); if (prefix == null || setting.getName().startsWith(prefix)) { if (prefix == null || name.startsWith(prefix)) { if (Flags.ignoreXmlForReadOnlyFlags()) { int slashIndex = name.indexOf("/"); boolean validSlashIndex = slashIndex != -1 && slashIndex != 0 && slashIndex != name.length(); if (validSlashIndex) { String flagName = name.substring(slashIndex + 1); AconfigdFlagInfo flagInfo = aconfigFlagInfos.get(flagName); if (flagInfo != null && !flagInfo.getIsReadWrite()) { continue; } } } flagsToValues.put(setting.getName(), setting.getValue()); } } Loading
packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +7 −0 Original line number Diff line number Diff line Loading @@ -774,6 +774,13 @@ final class SettingsState { } } @NonNull public Map<String, AconfigdFlagInfo> getAconfigDefaultFlags() { synchronized (mLock) { return mAconfigDefaultFlags; } } // The settings provider must hold its lock when calling here. public Setting getSettingLocked(String name) { if (TextUtils.isEmpty(name)) { Loading
packages/SettingsProvider/src/com/android/providers/settings/device_config_service.aconfig +11 −0 Original line number Diff line number Diff line Loading @@ -41,3 +41,14 @@ flag { description: "If this flag is detected as true on boot, writes a logfile to track storage migration correctness." bug: "328444881" } flag { name: "ignore_xml_for_read_only_flags" namespace: "core_experiments_team_internal" description: "When enabled, ignore any flag in the SettingsProvider XML for RO flags." bug: "345007098" is_fixed_read_only: true metadata { purpose: PURPOSE_BUGFIX } }