From f2e77f77784ae39b3bd9e5ee4b4d27d8ac76a86e Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Sun, 5 Nov 2023 12:17:24 +1300 Subject: [PATCH] LibWeb: Port handle_readonly_attribute from DeprecatedFlyString It's a little awkward that one caller of this is passing through an Optional and another an Optional, but that should be fixed some point in the future with further DeprecatedString porting. --- Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp | 12 ++++-------- Userland/Libraries/LibWeb/HTML/HTMLInputElement.h | 2 +- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp index 30dfff9399..5a8e14013b 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp @@ -447,10 +447,10 @@ static bool is_allowed_to_be_readonly(HTML::HTMLInputElement::TypeAttributeState } // https://html.spec.whatwg.org/multipage/input.html#attr-input-readonly -void HTMLInputElement::handle_readonly_attribute(DeprecatedFlyString const& value) +void HTMLInputElement::handle_readonly_attribute(Optional const& maybe_value) { // The readonly attribute is a boolean attribute that controls whether or not the user can edit the form control. When specified, the element is not mutable. - m_is_mutable = !(!value.is_null() && is_allowed_to_be_readonly(m_type)); + m_is_mutable = !maybe_value.has_value() || !is_allowed_to_be_readonly(m_type); if (m_text_node) m_text_node->set_always_editable(m_is_mutable); @@ -563,11 +563,7 @@ void HTMLInputElement::create_text_input_shadow_tree() // NOTE: file upload state is mutable, but we don't allow the text node to be modifed m_text_node->set_always_editable(false); } else { - auto readonly = attribute(HTML::AttributeNames::readonly); - if (readonly.has_value()) - handle_readonly_attribute(readonly->to_deprecated_string()); - else - handle_readonly_attribute({}); + handle_readonly_attribute(attribute(HTML::AttributeNames::readonly)); } m_text_node->set_editable_text_node_owner(Badge {}, *this); @@ -671,7 +667,7 @@ void HTMLInputElement::attribute_changed(FlyString const& name, Optionalset_data(MUST(String::from_deprecated_string(value.value_or("")))); } else if (name == HTML::AttributeNames::readonly) { if (value.has_value()) - handle_readonly_attribute(*value); + handle_readonly_attribute(MUST(String::from_deprecated_string(*value))); else handle_readonly_attribute({}); } diff --git a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.h b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.h index 29a9784bda..0970dd73f6 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.h +++ b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.h @@ -174,7 +174,7 @@ private: WebIDL::ExceptionOr run_input_activation_behavior(); void set_checked_within_group(); - void handle_readonly_attribute(DeprecatedFlyString const& value); + void handle_readonly_attribute(Optional const& value); // https://html.spec.whatwg.org/multipage/input.html#value-sanitization-algorithm DeprecatedString value_sanitization_algorithm(DeprecatedString) const;