diff options
Diffstat (limited to 'Userland/Libraries/LibWeb/DOM/Attribute.h')
-rw-r--r-- | Userland/Libraries/LibWeb/DOM/Attribute.h | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/Userland/Libraries/LibWeb/DOM/Attribute.h b/Userland/Libraries/LibWeb/DOM/Attribute.h index 5261a5bf7d..0a9dfd97b9 100644 --- a/Userland/Libraries/LibWeb/DOM/Attribute.h +++ b/Userland/Libraries/LibWeb/DOM/Attribute.h @@ -7,25 +7,42 @@ #pragma once #include <AK/FlyString.h> +#include <LibWeb/DOM/Node.h> +#include <LibWeb/QualifiedName.h> namespace Web::DOM { -class Attribute { +// https://dom.spec.whatwg.org/#attr +class Attribute final : public Node { public: - Attribute(const FlyString& name, const String& value) - : m_name(name) - , m_value(value) - { - } + using WrapperType = Bindings::AttributeWrapper; - const FlyString& name() const { return m_name; } - const String& value() const { return m_value; } + static NonnullRefPtr<Attribute> create(Document&, FlyString local_name, String value); - void set_value(const String& value) { m_value = value; } + virtual ~Attribute() override = default; + + virtual FlyString node_name() const override { return name(); } + + FlyString const& namespace_uri() const { return m_qualified_name.namespace_(); } + FlyString const& prefix() const { return m_qualified_name.prefix(); } + FlyString const& local_name() const { return m_qualified_name.local_name(); } + String const& name() const { return m_qualified_name.as_string(); } + + String const& value() const { return m_value; } + void set_value(String value) { m_value = move(value); } + + Element const* owner_element() const { return m_owner_element; } + void set_owner_element(Element const* owner_element) { m_owner_element = owner_element; } + + // Always returns true: https://dom.spec.whatwg.org/#dom-attr-specified + constexpr bool specified() const { return true; } private: - FlyString m_name; + Attribute(Document&, FlyString local_name, String value); + + QualifiedName m_qualified_name; String m_value; + Element const* m_owner_element { nullptr }; }; } |