Loading cmds/idmap2/idmap2d/Idmap2Service.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -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. Loading cmds/idmap2/idmap2d/aidl/core/android/os/FabricatedOverlayInternalEntry.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -23,4 +23,5 @@ parcelable FabricatedOverlayInternalEntry { @utf8InCpp String resourceName; int dataType; int data; @nullable @utf8InCpp String stringData; } No newline at end of file cmds/idmap2/include/idmap2/FabricatedOverlay.h +4 −0 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -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_; Loading cmds/idmap2/include/idmap2/ResourceUtils.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading cmds/idmap2/libidmap2/FabricatedOverlay.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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 Loading
cmds/idmap2/idmap2d/Idmap2Service.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -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. Loading
cmds/idmap2/idmap2d/aidl/core/android/os/FabricatedOverlayInternalEntry.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -23,4 +23,5 @@ parcelable FabricatedOverlayInternalEntry { @utf8InCpp String resourceName; int dataType; int data; @nullable @utf8InCpp String stringData; } No newline at end of file
cmds/idmap2/include/idmap2/FabricatedOverlay.h +4 −0 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -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_; Loading
cmds/idmap2/include/idmap2/ResourceUtils.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading
cmds/idmap2/libidmap2/FabricatedOverlay.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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