mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-30 12:49:19 +00:00
LibWeb: Implement the HTMLAreaElement.relList
attribute
This returns a DOMTokenList that reflects the `rel` attribute.
This commit is contained in:
parent
b7fd39c2e6
commit
0a3e1846f0
Notes:
sideshowbarker
2024-07-17 02:29:45 +09:00
Author: https://github.com/tcl3
Commit: 0a3e1846f0
Pull-request: https://github.com/SerenityOS/serenity/pull/24342
5 changed files with 24 additions and 1 deletions
|
@ -4,3 +4,9 @@ a.relList for after setting rel to "whatever": whatever
|
||||||
a.relList for after setting rel to "prefetch": prefetch
|
a.relList for after setting rel to "prefetch": prefetch
|
||||||
a.relList contains "prefetch": true
|
a.relList contains "prefetch": true
|
||||||
a.relList contains "whatever": false
|
a.relList contains "whatever": false
|
||||||
|
area.relList initial length: 0
|
||||||
|
area.relList always returns the same value: true
|
||||||
|
area.relList for after setting rel to "whatever": whatever
|
||||||
|
area.relList for after setting rel to "prefetch": prefetch
|
||||||
|
area.relList contains "prefetch": true
|
||||||
|
area.relList contains "whatever": false
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
test(() => {
|
test(() => {
|
||||||
const tagNamesToTest = [
|
const tagNamesToTest = [
|
||||||
"a",
|
"a",
|
||||||
|
"area",
|
||||||
];
|
];
|
||||||
|
|
||||||
for (const tagName of tagNamesToTest) {
|
for (const tagName of tagNamesToTest) {
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
#include <LibWeb/ARIA/Roles.h>
|
#include <LibWeb/ARIA/Roles.h>
|
||||||
#include <LibWeb/Bindings/HTMLAreaElementPrototype.h>
|
#include <LibWeb/Bindings/HTMLAreaElementPrototype.h>
|
||||||
|
#include <LibWeb/DOM/DOMTokenList.h>
|
||||||
#include <LibWeb/HTML/HTMLAreaElement.h>
|
#include <LibWeb/HTML/HTMLAreaElement.h>
|
||||||
#include <LibWeb/HTML/Window.h>
|
#include <LibWeb/HTML/Window.h>
|
||||||
|
|
||||||
|
@ -31,9 +32,21 @@ void HTMLAreaElement::attribute_changed(FlyString const& name, Optional<String>
|
||||||
HTMLElement::attribute_changed(name, value);
|
HTMLElement::attribute_changed(name, value);
|
||||||
if (name == HTML::AttributeNames::href) {
|
if (name == HTML::AttributeNames::href) {
|
||||||
set_the_url();
|
set_the_url();
|
||||||
|
} else if (name == HTML::AttributeNames::rel) {
|
||||||
|
if (m_rel_list)
|
||||||
|
m_rel_list->associated_attribute_changed(value.value_or(String {}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/image-maps.html#dom-area-rellist
|
||||||
|
JS::GCPtr<DOM::DOMTokenList> HTMLAreaElement::rel_list()
|
||||||
|
{
|
||||||
|
// The IDL attribute relList must reflect the rel content attribute.
|
||||||
|
if (!m_rel_list)
|
||||||
|
m_rel_list = DOM::DOMTokenList::create(*this, HTML::AttributeNames::rel);
|
||||||
|
return m_rel_list;
|
||||||
|
}
|
||||||
|
|
||||||
Optional<String> HTMLAreaElement::hyperlink_element_utils_href() const
|
Optional<String> HTMLAreaElement::hyperlink_element_utils_href() const
|
||||||
{
|
{
|
||||||
return attribute(HTML::AttributeNames::href);
|
return attribute(HTML::AttributeNames::href);
|
||||||
|
|
|
@ -20,6 +20,7 @@ class HTMLAreaElement final
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual ~HTMLAreaElement() override;
|
virtual ~HTMLAreaElement() override;
|
||||||
|
JS::GCPtr<DOM::DOMTokenList> rel_list();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLAreaElement(DOM::Document&, DOM::QualifiedName);
|
HTMLAreaElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
@ -50,6 +51,8 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Optional<ARIA::Role> default_role() const override;
|
virtual Optional<ARIA::Role> default_role() const override;
|
||||||
|
|
||||||
|
JS::GCPtr<DOM::DOMTokenList> m_rel_list;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ interface HTMLAreaElement : HTMLElement {
|
||||||
[CEReactions, Reflect] attribute DOMString download;
|
[CEReactions, Reflect] attribute DOMString download;
|
||||||
[CEReactions, Reflect] attribute USVString ping;
|
[CEReactions, Reflect] attribute USVString ping;
|
||||||
[CEReactions, Reflect] attribute DOMString rel;
|
[CEReactions, Reflect] attribute DOMString rel;
|
||||||
// FIXME: [SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
|
[SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
|
||||||
// FIXME: [CEReactions] attribute DOMString referrerPolicy;
|
// FIXME: [CEReactions] attribute DOMString referrerPolicy;
|
||||||
|
|
||||||
// Obsolete
|
// Obsolete
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue