From f666d967d6bac289346cf19f833f81bdc22adbdb Mon Sep 17 00:00:00 2001 From: Tim Ledbetter Date: Mon, 22 Jul 2024 20:24:03 +0100 Subject: [PATCH] LibWeb: Ensure `document.getElementById("")` returns null Previously, if a document had an element whose id was the empty string, then `document.getElementById("")` and `element.getElementById("")` would return that element. --- .../Text/expected/DOM/getElementById-empty-string.txt | 1 + .../Text/input/DOM/getElementById-empty-string.html | 8 ++++++++ Userland/Libraries/LibWeb/DOM/Element.cpp | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 Tests/LibWeb/Text/expected/DOM/getElementById-empty-string.txt create mode 100644 Tests/LibWeb/Text/input/DOM/getElementById-empty-string.html diff --git a/Tests/LibWeb/Text/expected/DOM/getElementById-empty-string.txt b/Tests/LibWeb/Text/expected/DOM/getElementById-empty-string.txt new file mode 100644 index 00000000000..01be754e9a9 --- /dev/null +++ b/Tests/LibWeb/Text/expected/DOM/getElementById-empty-string.txt @@ -0,0 +1 @@ + document.getElementById(""): null \ No newline at end of file diff --git a/Tests/LibWeb/Text/input/DOM/getElementById-empty-string.html b/Tests/LibWeb/Text/input/DOM/getElementById-empty-string.html new file mode 100644 index 00000000000..e22e65bdf7d --- /dev/null +++ b/Tests/LibWeb/Text/input/DOM/getElementById-empty-string.html @@ -0,0 +1,8 @@ + + +
+ diff --git a/Userland/Libraries/LibWeb/DOM/Element.cpp b/Userland/Libraries/LibWeb/DOM/Element.cpp index d055fbd0e56..a27910e523d 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.cpp +++ b/Userland/Libraries/LibWeb/DOM/Element.cpp @@ -457,7 +457,7 @@ void Element::attribute_changed(FlyString const& name, Optional const&, auto value_or_empty = value.value_or(String {}); if (name == HTML::AttributeNames::id) { - if (!value.has_value()) + if (value_or_empty.is_empty()) m_id = {}; else m_id = value_or_empty;