summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibWeb/DOM/Attribute.h
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries/LibWeb/DOM/Attribute.h')
-rw-r--r--Userland/Libraries/LibWeb/DOM/Attribute.h37
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 };
};
}