blob: ad05eab257191281464441d4c0d31fd4a9e8bfc2 [file]
// Copyright 2026 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "services/data_decoder/xml/dom_builder.h"
#include <utility>
#include "services/data_decoder/public/cpp/xml_dom.h"
namespace data_decoder::xml::ffi {
class DomBuilder {
public:
static base::PassKey<DomBuilder> CreatePassKey() {
return base::PassKey<DomBuilder>();
}
};
std::unique_ptr<Node> create_element(rust::Str local_name, rust::Str prefix) {
return Node::CreateElement(DomBuilder::CreatePassKey(),
std::string(local_name), std::string(prefix));
}
std::unique_ptr<Node> create_text_node(rust::Str text_content) {
return Node::CreateTextNode(DomBuilder::CreatePassKey(),
std::string(text_content));
}
std::unique_ptr<Node> create_cdata_node(rust::Str text_content) {
return Node::CreateCdataNode(DomBuilder::CreatePassKey(),
std::string(text_content));
}
void set_attribute(Node& element,
rust::Str local_name,
rust::Str prefix,
rust::Str value) {
element.SetAttribute(DomBuilder::CreatePassKey(), std::string(local_name),
std::string(prefix), std::string(value));
}
void set_namespace(Node& element, rust::Str prefix, rust::Str uri) {
element.SetNamespace(DomBuilder::CreatePassKey(), std::string(prefix),
std::string(uri));
}
void add_child(Node& parent, std::unique_ptr<Node> child) {
parent.AddChild(DomBuilder::CreatePassKey(), std::move(child));
}
} // namespace data_decoder::xml::ffi