mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-25 09:00:22 +00:00
LibWeb: Follow the specification steps to serialize a DOMTokenList
This ensures that calling `element.classList.toString()` always produces the correct value.
This commit is contained in:
parent
21e21abeed
commit
ec1f7779cb
Notes:
github-actions[bot]
2024-07-25 04:44:28 +00:00
Author: https://github.com/tcl3 Commit: https://github.com/LadybirdBrowser/ladybird/commit/ec1f7779cb1 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/817
4 changed files with 17 additions and 3 deletions
|
@ -1,3 +1,5 @@
|
|||
element.classList initial value: ""
|
||||
element.classList after setting classList to "a": "a"
|
||||
element.classList after setting className to "": ""
|
||||
element.classList after setting to className to "a a b c": "a a b c"
|
||||
element.classList after setting to className to " a a b c ": " a a b c "
|
||||
|
|
|
@ -8,6 +8,10 @@
|
|||
println(`element.classList after setting classList to "a": "${element.classList.toString()}"`);
|
||||
element.className = "";
|
||||
println(`element.classList after setting className to "": "${element.classList.toString()}"`);
|
||||
element.className = "a a b c";
|
||||
println(`element.classList after setting to className to "a a b c": "${element.classList.toString()}"`);
|
||||
element.className = " a a b c ";
|
||||
println(`element.classList after setting to className to " a a b c ": "${element.classList.toString()}"`);
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
|
|
|
@ -239,14 +239,20 @@ WebIDL::ExceptionOr<bool> DOMTokenList::supports(StringView token)
|
|||
return false;
|
||||
}
|
||||
|
||||
// https://dom.spec.whatwg.org/#dom-domtokenlist-value
|
||||
String DOMTokenList::value() const
|
||||
// https://dom.spec.whatwg.org/#concept-ordered-set-serializer
|
||||
String DOMTokenList::serialize_ordered_set() const
|
||||
{
|
||||
StringBuilder builder;
|
||||
builder.join(' ', m_token_set);
|
||||
return MUST(builder.to_string());
|
||||
}
|
||||
|
||||
// https://dom.spec.whatwg.org/#dom-domtokenlist-value
|
||||
String DOMTokenList::value() const
|
||||
{
|
||||
return m_associated_element->get_attribute_value(m_associated_attribute);
|
||||
}
|
||||
|
||||
// https://dom.spec.whatwg.org/#ref-for-concept-element-attributes-set-value%E2%91%A2
|
||||
void DOMTokenList::set_value(String const& value)
|
||||
{
|
||||
|
@ -278,7 +284,7 @@ void DOMTokenList::run_update_steps()
|
|||
return;
|
||||
|
||||
// 2. Set an attribute value for the associated element using associated attribute’s local name and the result of running the ordered set serializer for token set.
|
||||
MUST(associated_element->set_attribute(m_associated_attribute, value()));
|
||||
MUST(associated_element->set_attribute(m_associated_attribute, serialize_ordered_set()));
|
||||
}
|
||||
|
||||
WebIDL::ExceptionOr<JS::Value> DOMTokenList::item_value(size_t index) const
|
||||
|
|
|
@ -53,6 +53,8 @@ private:
|
|||
WebIDL::ExceptionOr<void> validate_token(StringView token) const;
|
||||
void run_update_steps();
|
||||
|
||||
String serialize_ordered_set() const;
|
||||
|
||||
JS::NonnullGCPtr<Element> m_associated_element;
|
||||
FlyString m_associated_attribute;
|
||||
Vector<String> m_token_set;
|
||||
|
|
Loading…
Reference in a new issue