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

Commit b30f6571 authored by Ryan Mitchell's avatar Ryan Mitchell Committed by Gerrit Code Review
Browse files

Merge "Add requiredSystemPropertyValue support in idmap2"

parents a8bfed91 d7fc4f77
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -176,6 +176,17 @@ Result<Unit> Scan(const std::vector<std::string>& args) {
      continue;
    }

    // Note that conditional property enablement/exclusion only applies if
    // the attribute is present. In its absence, all overlays are presumed enabled.
    if (!overlay_info->requiredSystemPropertyName.empty()
        && !overlay_info->requiredSystemPropertyValue.empty()) {
      // if property set & equal to value, then include overlay - otherwise skip
      if (android::base::GetProperty(overlay_info->requiredSystemPropertyName, "")
          != overlay_info->requiredSystemPropertyValue) {
        continue;
      }
    }

    std::vector<std::string> fulfilled_policies;
    if (!override_policies.empty()) {
      fulfilled_policies = override_policies;
+2 −0
Original line number Diff line number Diff line
@@ -30,6 +30,8 @@ namespace android::idmap2::utils {
struct OverlayManifestInfo {
  std::string target_package;  // NOLINT(misc-non-private-member-variables-in-classes)
  std::string target_name;     // NOLINT(misc-non-private-member-variables-in-classes)
  std::string requiredSystemPropertyName;  // NOLINT(misc-non-private-member-variables-in-classes)
  std::string requiredSystemPropertyValue;  // NOLINT(misc-non-private-member-variables-in-classes)
  bool is_static;              // NOLINT(misc-non-private-member-variables-in-classes)
  int priority = -1;           // NOLINT(misc-non-private-member-variables-in-classes)
};
+10 −0
Original line number Diff line number Diff line
@@ -103,6 +103,16 @@ Result<OverlayManifestInfo> ExtractOverlayManifestInfo(const std::string& path,
    info.priority = std::stoi(iter->second);
  }

  iter = tag->find("requiredSystemPropertyName");
  if (iter != tag->end()) {
    info.requiredSystemPropertyName = iter->second;
  }

  iter = tag->find("requiredSystemPropertyValue");
  if (iter != tag->end()) {
    info.requiredSystemPropertyValue = iter->second;
  }

  return info;
}