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

Commit 4dd17c7b authored by Ted Bauer's avatar Ted Bauer Committed by Android (Google) Code Review
Browse files

Merge "fix: ignore XML value in DeviceConfig for RO flags" into main

parents be9dc46c 13ece135
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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());
                }
            }
+7 −0
Original line number Diff line number Diff line
@@ -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)) {
+11 −0
Original line number Diff line number Diff line
@@ -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
    }
}