diff --git a/Userland/Libraries/LibWeb/DOM/Element.h b/Userland/Libraries/LibWeb/DOM/Element.h index d703c6b405..9a4d764ae2 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.h +++ b/Userland/Libraries/LibWeb/DOM/Element.h @@ -83,7 +83,9 @@ public: // NOTE: This is for the JS bindings DeprecatedString const& tag_name() const { return html_uppercased_qualified_name(); } - DeprecatedFlyString prefix() const { return m_qualified_name.deprecated_prefix(); } + Optional const& prefix() const { return m_qualified_name.prefix(); } + DeprecatedFlyString deprecated_prefix() const { return m_qualified_name.deprecated_prefix(); } + void set_prefix(DeprecatedFlyString const& value); DeprecatedFlyString namespace_() const { return m_qualified_name.deprecated_namespace_(); } diff --git a/Userland/Libraries/LibWeb/DOM/Element.idl b/Userland/Libraries/LibWeb/DOM/Element.idl index 37fee09368..7c8b6fa1f3 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.idl +++ b/Userland/Libraries/LibWeb/DOM/Element.idl @@ -24,7 +24,7 @@ dictionary ScrollIntoViewOptions : ScrollOptions { [Exposed=Window, UseDeprecatedAKString] interface Element : Node { readonly attribute DOMString? namespaceURI; - readonly attribute DOMString? prefix; + [ImplementedAs=deprecated_prefix] readonly attribute DOMString? prefix; readonly attribute DOMString localName; readonly attribute DOMString tagName; diff --git a/Userland/Libraries/LibWeb/DOM/Node.cpp b/Userland/Libraries/LibWeb/DOM/Node.cpp index 2434e5a7ef..2ae3cb8624 100644 --- a/Userland/Libraries/LibWeb/DOM/Node.cpp +++ b/Userland/Libraries/LibWeb/DOM/Node.cpp @@ -809,7 +809,7 @@ JS::NonnullGCPtr Node::clone_node(Document* document, bool clone_children) if (is(this)) { // 1. Let copy be the result of creating an element, given document, node’s local name, node’s namespace, node’s namespace prefix, and node’s is value, with the synchronous custom elements flag unset. auto& element = *verify_cast(this); - auto element_copy = DOM::create_element(*document, element.local_name(), element.namespace_(), element.prefix(), element.is_value(), false).release_value_but_fixme_should_propagate_errors(); + auto element_copy = DOM::create_element(*document, element.local_name(), element.namespace_(), element.deprecated_prefix(), element.is_value(), false).release_value_but_fixme_should_propagate_errors(); // 2. For each attribute in node’s attribute list: element.for_each_attribute([&](auto& name, auto& value) { diff --git a/Userland/Libraries/LibWeb/DOMParsing/XMLSerializer.cpp b/Userland/Libraries/LibWeb/DOMParsing/XMLSerializer.cpp index 406f49fd16..16344510c0 100644 --- a/Userland/Libraries/LibWeb/DOMParsing/XMLSerializer.cpp +++ b/Userland/Libraries/LibWeb/DOMParsing/XMLSerializer.cpp @@ -549,7 +549,7 @@ static WebIDL::ExceptionOr serialize_element(DOM::Element cons // 12. Otherwise, inherited ns is not equal to ns (the node's own namespace is different from the context namespace of its parent). Run these sub-steps: else { // 1. Let prefix be the value of node's prefix attribute. - auto prefix = element.prefix(); + auto prefix = element.deprecated_prefix(); // 2. Let candidate prefix be the result of retrieving a preferred prefix string prefix from map given namespace ns. auto candidate_prefix = retrieve_a_preferred_prefix_string(prefix, map, ns);