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

Commit 05466592 authored by Jeremy Meyer's avatar Jeremy Meyer
Browse files

Allow string type when fabricating FRROs

This includes all of the work of passing the string all the way down to
the native code but then does nothing with it. Storing and retrieving of
it will be in follow up changes.

Test: Manual
Bug: 232940948
Change-Id: Ie00cc23680a0132588744991bf829afad6ba336f
parent d43e0f25
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -234,8 +234,12 @@ Status Idmap2Service::createFabricatedOverlay(
  }

  for (const auto& res : overlay.entries) {
    if (res.dataType == Res_value::TYPE_STRING) {
      builder.SetResourceValue(res.resourceName, res.dataType, res.stringData.value());
    } else {
      builder.SetResourceValue(res.resourceName, res.dataType, res.data);
    }
  }

  // Generate the file path of the fabricated overlay and ensure it does not collide with an
  // existing path. Re-registering a fabricated overlay will always result in an updated path.
+1 −0
Original line number Diff line number Diff line
@@ -23,4 +23,5 @@ parcelable FabricatedOverlayInternalEntry {
    @utf8InCpp String resourceName;
    int dataType;
    int data;
    @nullable @utf8InCpp String stringData;
}
 No newline at end of file
+4 −0
Original line number Diff line number Diff line
@@ -41,6 +41,9 @@ struct FabricatedOverlay {
    Builder& SetResourceValue(const std::string& resource_name, uint8_t data_type,
                              uint32_t data_value);

    Builder& SetResourceValue(const std::string& resource_name, uint8_t data_type,
                              const std::string& data_string_value);

    WARN_UNUSED Result<FabricatedOverlay> Build();

   private:
@@ -48,6 +51,7 @@ struct FabricatedOverlay {
      std::string resource_name;
      DataType data_type;
      DataValue data_value;
      std::string data_string_value;
    };

    std::string package_name_;
+1 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ using DataValue = uint32_t; // Res_value::data
struct TargetValue {
  DataType data_type;
  DataValue data_value;
  std::string data_string_value;
};

namespace utils {
+9 −2
Original line number Diff line number Diff line
@@ -65,7 +65,13 @@ FabricatedOverlay::Builder& FabricatedOverlay::Builder::SetOverlayable(const std

FabricatedOverlay::Builder& FabricatedOverlay::Builder::SetResourceValue(
    const std::string& resource_name, uint8_t data_type, uint32_t data_value) {
  entries_.emplace_back(Entry{resource_name, data_type, data_value});
  entries_.emplace_back(Entry{resource_name, data_type, data_value, ""});
  return *this;
}

FabricatedOverlay::Builder& FabricatedOverlay::Builder::SetResourceValue(
    const std::string& resource_name, uint8_t data_type, const std::string& data_string_value) {
  entries_.emplace_back(Entry{resource_name, data_type, 0, data_string_value});
  return *this;
}

@@ -111,7 +117,8 @@ Result<FabricatedOverlay> FabricatedOverlay::Builder::Build() {
      entry = type->second.insert(std::make_pair(entry_name.to_string(), TargetValue())).first;
    }

    entry->second = TargetValue{res_entry.data_type, res_entry.data_value};
    entry->second = TargetValue{
        res_entry.data_type, res_entry.data_value, res_entry.data_string_value};
  }

  pb::FabricatedOverlay overlay_pb;
Loading