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

Commit ef8c6a24 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Support local overrides for sysprops" into main

parents e3857eb1 50c0c9e9
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -91,3 +91,13 @@ flag {
        purpose: PURPOSE_BUGFIX
    }
}

flag {
    name: "support_local_overrides_sysprops"
    namespace: "core_experiments_team_internal"
    description: "When DeviceConfig overrides are deleted, delete new storage overrides too."
    bug: "366022906"
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}
+43 −0
Original line number Diff line number Diff line
@@ -370,6 +370,13 @@ public class SettingsToPropertiesMapper {
                  String propertyName = "next_boot." + makeAconfigFlagPropertyName(
                      actualNamespace, actualFlagName);

                  if (Flags.supportLocalOverridesSysprops()) {
                    // Don't propagate if there is a local override.
                    String overrideName = actualNamespace + ":" + actualFlagName;
                    if (DeviceConfig.getProperty(NAMESPACE_LOCAL_OVERRIDES, overrideName) != null) {
                      continue;
                    }
                  }
                  setProperty(propertyName, flagValue);
              }

@@ -388,6 +395,42 @@ public class SettingsToPropertiesMapper {
                if (enableAconfigStorageDaemon()) {
                    setLocalOverridesInNewStorage(properties);
                }

                if (Flags.supportLocalOverridesSysprops()) {
                  String overridesNamespace = properties.getNamespace();
                  for (String key : properties.getKeyset()) {
                    String realNamespace = key.split(":")[0];
                    String realFlagName = key.split(":")[1];
                    String aconfigPropertyName =
                        makeAconfigFlagPropertyName(realNamespace, realFlagName);
                    if (aconfigPropertyName == null) {
                      logErr("unable to construct system property for " + realNamespace + "/"
                        + key);
                      return;
                    }

                    if (properties.getString(key, null) == null) {
                      String deviceConfigValue =
                              DeviceConfig.getProperty(realNamespace, realFlagName);
                      String stagedDeviceConfigValue =
                              DeviceConfig.getProperty(NAMESPACE_REBOOT_STAGING,
                                              realNamespace + "*" + realFlagName);

                      setProperty(aconfigPropertyName, deviceConfigValue);
                      if (stagedDeviceConfigValue == null) {
                        setProperty("next_boot." + aconfigPropertyName, deviceConfigValue);
                      } else {
                        setProperty("next_boot." + aconfigPropertyName, stagedDeviceConfigValue);
                      }
                    } else {
                      // Otherwise, propagate the override to sysprops.
                      setProperty(aconfigPropertyName, properties.getString(key, null));
                      // If there's a staged value, make sure it's the override value.
                      setProperty("next_boot." + aconfigPropertyName,
                                properties.getString(key, null));
                    }
                  }
                }
        });
    }