From c5d3ccca004a543b512380420b83c6f54f1df983 Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Mon, 20 Nov 2023 21:59:45 +1300 Subject: [PATCH] LibWeb: Port AriaData from DeprecatedString to String --- Userland/Libraries/LibWeb/ARIA/ARIAMixin.cpp | 22 ++++--- Userland/Libraries/LibWeb/ARIA/ARIAMixin.h | 8 +-- Userland/Libraries/LibWeb/ARIA/AriaData.cpp | 60 +++++++++---------- Userland/Libraries/LibWeb/ARIA/AriaData.h | 52 ++++++++-------- .../LibWeb/ARIA/StateAndProperties.cpp | 22 ++++--- .../LibWeb/ARIA/StateAndProperties.h | 2 +- Userland/Libraries/LibWeb/DOM/Element.cpp | 4 +- Userland/Libraries/LibWeb/DOM/Element.h | 2 +- 8 files changed, 86 insertions(+), 86 deletions(-) diff --git a/Userland/Libraries/LibWeb/ARIA/ARIAMixin.cpp b/Userland/Libraries/LibWeb/ARIA/ARIAMixin.cpp index 1b1d06cce0..840f98ecc0 100644 --- a/Userland/Libraries/LibWeb/ARIA/ARIAMixin.cpp +++ b/Userland/Libraries/LibWeb/ARIA/ARIAMixin.cpp @@ -64,18 +64,26 @@ bool ARIAMixin::has_global_aria_attribute() const || aria_role_description().has_value(); } -Optional ARIAMixin::parse_id_reference(DeprecatedString const& id_reference) const +Optional ARIAMixin::parse_id_reference(Optional const& id_reference) const { - if (id_reference_exists(id_reference)) - return id_reference; + if (!id_reference.has_value()) + return {}; + + if (id_reference_exists(id_reference.value())) + return id_reference.value(); + return {}; } -Vector ARIAMixin::parse_id_reference_list(DeprecatedString const& id_list) const +Vector ARIAMixin::parse_id_reference_list(Optional const& id_list) const { - Vector result; - auto id_references = id_list.split_view(Infra::is_ascii_whitespace); - for (auto const id_reference : id_references) { + Vector result; + if (!id_list.has_value()) + return result; + + auto id_references = id_list->bytes_as_string_view().split_view_if(Infra::is_ascii_whitespace); + for (auto const id_reference_view : id_references) { + auto id_reference = MUST(String::from_utf8(id_reference_view)); if (id_reference_exists(id_reference)) result.append(id_reference); } diff --git a/Userland/Libraries/LibWeb/ARIA/ARIAMixin.h b/Userland/Libraries/LibWeb/ARIA/ARIAMixin.h index 1fe70f7531..47411ed050 100644 --- a/Userland/Libraries/LibWeb/ARIA/ARIAMixin.h +++ b/Userland/Libraries/LibWeb/ARIA/ARIAMixin.h @@ -6,7 +6,7 @@ #pragma once -#include +#include #include #include #include @@ -180,15 +180,15 @@ public: bool has_global_aria_attribute() const; // https://www.w3.org/TR/wai-aria-1.2/#valuetype_idref - Optional parse_id_reference(DeprecatedString const&) const; + Optional parse_id_reference(Optional const&) const; // https://www.w3.org/TR/wai-aria-1.2/#valuetype_idref_list - Vector parse_id_reference_list(DeprecatedString const&) const; + Vector parse_id_reference_list(Optional const&) const; protected: ARIAMixin() = default; - virtual bool id_reference_exists(DeprecatedString const&) const = 0; + virtual bool id_reference_exists(String const&) const = 0; }; } diff --git a/Userland/Libraries/LibWeb/ARIA/AriaData.cpp b/Userland/Libraries/LibWeb/ARIA/AriaData.cpp index 4a80db9056..2fbdd47604 100644 --- a/Userland/Libraries/LibWeb/ARIA/AriaData.cpp +++ b/Userland/Libraries/LibWeb/ARIA/AriaData.cpp @@ -1,5 +1,6 @@ /* * Copyright (c) 2023, Jonah Shafran + * Copyright (c) 2023, Shannon Booth * * SPDX-License-Identifier: BSD-2-Clause */ @@ -9,16 +10,9 @@ namespace Web::ARIA { -static DeprecatedString to_deprecated_string(Optional const& value) -{ - if (!value.has_value()) - return {}; - return value->to_deprecated_string(); -} - AriaData::AriaData(Web::ARIA::ARIAMixin const& source) { - m_aria_active_descendant = to_deprecated_string(source.aria_active_descendant()); + m_aria_active_descendant = source.aria_active_descendant(); m_aria_atomic = AriaData::parse_optional_true_false(source.aria_atomic()); m_aria_auto_complete = AriaData::parse_aria_autocomplete(source.aria_auto_complete()); m_aria_busy = AriaData::parse_true_false(source.aria_busy()); @@ -26,36 +20,36 @@ AriaData::AriaData(Web::ARIA::ARIAMixin const& source) m_aria_col_count = AriaData::parse_integer(source.aria_col_count()); m_aria_col_index = AriaData::parse_integer(source.aria_col_index()); m_aria_col_span = AriaData::parse_integer(source.aria_col_span()); - m_aria_controls = source.parse_id_reference_list(to_deprecated_string(source.aria_controls())); + m_aria_controls = source.parse_id_reference_list(source.aria_controls()); m_aria_current = AriaData::parse_aria_current(source.aria_current()); - m_aria_described_by = source.parse_id_reference_list(to_deprecated_string(source.aria_described_by())); - m_aria_details = source.parse_id_reference(to_deprecated_string(source.aria_details())); + m_aria_described_by = source.parse_id_reference_list(source.aria_described_by()); + m_aria_details = source.parse_id_reference(source.aria_details()); m_aria_disabled = AriaData::parse_true_false(source.aria_disabled()); m_aria_drop_effect = AriaData::parse_aria_drop_effect(source.aria_drop_effect()); - m_aria_error_message = source.parse_id_reference(to_deprecated_string(source.aria_error_message())); + m_aria_error_message = source.parse_id_reference(source.aria_error_message()); m_aria_expanded = AriaData::parse_true_false_undefined(source.aria_expanded()); - m_aria_flow_to = source.parse_id_reference_list(to_deprecated_string(source.aria_flow_to())); + m_aria_flow_to = source.parse_id_reference_list(source.aria_flow_to()); m_aria_grabbed = AriaData::parse_true_false_undefined(source.aria_grabbed()); m_aria_has_popup = AriaData::parse_aria_has_popup(source.aria_has_popup()); m_aria_hidden = AriaData::parse_true_false_undefined(source.aria_hidden()); m_aria_invalid = AriaData::parse_aria_invalid(source.aria_invalid()); - m_aria_key_shortcuts = to_deprecated_string(source.aria_key_shortcuts()); - m_aria_label = to_deprecated_string(source.aria_label()); - m_aria_labelled_by = source.parse_id_reference_list(to_deprecated_string(source.aria_labelled_by())); + m_aria_key_shortcuts = source.aria_key_shortcuts().value_or(String {}); + m_aria_label = source.aria_label().value_or(String {}); + m_aria_labelled_by = source.parse_id_reference_list(source.aria_labelled_by()); m_aria_level = AriaData::parse_integer(source.aria_level()); m_aria_live = AriaData::parse_aria_live(source.aria_live()); m_aria_modal = AriaData::parse_true_false(source.aria_modal()); m_aria_multi_line = AriaData::parse_true_false(source.aria_multi_line()); m_aria_multi_selectable = AriaData::parse_true_false(source.aria_multi_selectable()); m_aria_orientation = AriaData::parse_aria_orientation(source.aria_orientation()); - m_aria_owns = source.parse_id_reference_list(to_deprecated_string(source.aria_owns())); - m_aria_placeholder = to_deprecated_string(source.aria_placeholder()); + m_aria_owns = source.parse_id_reference_list(source.aria_owns()); + m_aria_placeholder = source.aria_placeholder().value_or(String {}); m_aria_pos_in_set = AriaData::parse_integer(source.aria_pos_in_set()); m_aria_pressed = AriaData::parse_tristate(source.aria_pressed()); m_aria_read_only = AriaData::parse_true_false(source.aria_read_only()); m_aria_relevant = AriaData::parse_aria_relevant(source.aria_relevant()); m_aria_required = AriaData::parse_true_false(source.aria_required()); - m_aria_role_description = to_deprecated_string(source.aria_role_description()); + m_aria_role_description = source.aria_role_description().value_or(String {}); m_aria_row_count = AriaData::parse_integer(source.aria_row_count()); m_aria_row_index = AriaData::parse_integer(source.aria_row_index()); m_aria_row_span = AriaData::parse_integer(source.aria_row_span()); @@ -65,7 +59,7 @@ AriaData::AriaData(Web::ARIA::ARIAMixin const& source) m_aria_value_max = AriaData::parse_number(source.aria_value_max()); m_aria_value_min = AriaData::parse_number(source.aria_value_min()); m_aria_value_now = AriaData::parse_number(source.aria_value_now()); - m_aria_value_text = to_deprecated_string(source.aria_value_text()); + m_aria_value_text = source.aria_value_text().value_or(String {}); } bool AriaData::parse_true_false(Optional const& value) @@ -115,7 +109,7 @@ Optional AriaData::parse_number(Optional const& value) return value->bytes_as_string_view().to_double(TrimWhitespace::Yes); } -Optional AriaData::aria_active_descendant_or_default() const +Optional AriaData::aria_active_descendant_or_default() const { return m_aria_active_descendant; } @@ -158,7 +152,7 @@ Optional AriaData::aria_col_span_or_default() const return m_aria_col_span; } -Vector AriaData::aria_controls_or_default() const +Vector AriaData::aria_controls_or_default() const { return m_aria_controls; } @@ -168,12 +162,12 @@ AriaCurrent AriaData::aria_current_or_default() const return m_aria_current; } -Vector AriaData::aria_described_by_or_default() const +Vector AriaData::aria_described_by_or_default() const { return m_aria_described_by; } -Optional AriaData::aria_details_or_default() const +Optional AriaData::aria_details_or_default() const { return m_aria_details; } @@ -188,7 +182,7 @@ Vector AriaData::aria_drop_effect_or_default() const return m_aria_drop_effect; } -Optional AriaData::aria_error_message_or_default() const +Optional AriaData::aria_error_message_or_default() const { return m_aria_error_message; } @@ -198,7 +192,7 @@ Optional AriaData::aria_expanded_or_default() const return m_aria_expanded; } -Vector AriaData::aria_flow_to_or_default() const +Vector AriaData::aria_flow_to_or_default() const { return m_aria_flow_to; } @@ -223,17 +217,17 @@ AriaInvalid AriaData::aria_invalid_or_default() const return m_aria_invalid; } -DeprecatedString AriaData::aria_key_shortcuts_or_default() const +String AriaData::aria_key_shortcuts_or_default() const { return m_aria_key_shortcuts; } -DeprecatedString AriaData::aria_label_or_default() const +String AriaData::aria_label_or_default() const { return m_aria_label; } -Vector AriaData::aria_labelled_by_or_default() const +Vector AriaData::aria_labelled_by_or_default() const { return m_aria_labelled_by; } @@ -276,12 +270,12 @@ AriaOrientation AriaData::aria_orientation_or_default(AriaOrientation default_va return value.value(); } -Vector AriaData::aria_owns_or_default() const +Vector AriaData::aria_owns_or_default() const { return m_aria_owns; } -DeprecatedString AriaData::aria_placeholder_or_default() const +String AriaData::aria_placeholder_or_default() const { return m_aria_placeholder; } @@ -311,7 +305,7 @@ bool AriaData::aria_required_or_default() const return m_aria_required; } -DeprecatedString AriaData::aria_role_description_or_default() const +String AriaData::aria_role_description_or_default() const { return m_aria_role_description; } @@ -367,7 +361,7 @@ Optional AriaData::aria_value_now_or_default() const return m_aria_value_now; } -DeprecatedString AriaData::aria_value_text_or_default() const +String AriaData::aria_value_text_or_default() const { return m_aria_value_text; } diff --git a/Userland/Libraries/LibWeb/ARIA/AriaData.h b/Userland/Libraries/LibWeb/ARIA/AriaData.h index d2ed242cbb..feca3eb7d4 100644 --- a/Userland/Libraries/LibWeb/ARIA/AriaData.h +++ b/Userland/Libraries/LibWeb/ARIA/AriaData.h @@ -151,7 +151,7 @@ public: static ErrorOr> build_data(ARIAMixin const& mixin) { return adopt_nonnull_own_or_enomem(new (nothrow) AriaData(mixin)); } - Optional aria_active_descendant_or_default() const; + Optional aria_active_descendant_or_default() const; bool aria_atomic_or_default(bool default_value = false) const; AriaAutocomplete aria_auto_complete_or_default() const; bool aria_busy_or_default() const; @@ -159,36 +159,36 @@ public: Optional aria_col_count_or_default() const; Optional aria_col_index_or_default() const; Optional aria_col_span_or_default() const; - Vector aria_controls_or_default() const; + Vector aria_controls_or_default() const; AriaCurrent aria_current_or_default() const; - Vector aria_described_by_or_default() const; - Optional aria_details_or_default() const; + Vector aria_described_by_or_default() const; + Optional aria_details_or_default() const; bool aria_disabled_or_default() const; Vector aria_drop_effect_or_default() const; - Optional aria_error_message_or_default() const; + Optional aria_error_message_or_default() const; Optional aria_expanded_or_default() const; - Vector aria_flow_to_or_default() const; + Vector aria_flow_to_or_default() const; Optional aria_grabbed_or_default() const; AriaHasPopup aria_has_popup_or_default() const; Optional aria_hidden_or_default() const; AriaInvalid aria_invalid_or_default() const; - DeprecatedString aria_key_shortcuts_or_default() const; - DeprecatedString aria_label_or_default() const; - Vector aria_labelled_by_or_default() const; + String aria_key_shortcuts_or_default() const; + String aria_label_or_default() const; + Vector aria_labelled_by_or_default() const; Optional aria_level_or_default() const; AriaLive aria_live_or_default(AriaLive default_value = AriaLive::Off) const; bool aria_modal_or_default() const; bool aria_multi_line_or_default() const; bool aria_multi_selectable_or_default() const; AriaOrientation aria_orientation_or_default(AriaOrientation default_value = AriaOrientation::Undefined) const; - Vector aria_owns_or_default() const; - DeprecatedString aria_placeholder_or_default() const; + Vector aria_owns_or_default() const; + String aria_placeholder_or_default() const; Optional aria_pos_in_set_or_default() const; Tristate aria_pressed_or_default() const; bool aria_read_only_or_default() const; Vector aria_relevant_or_default() const; bool aria_required_or_default() const; - DeprecatedString aria_role_description_or_default() const; + String aria_role_description_or_default() const; Optional aria_row_count_or_default() const; Optional aria_row_index_or_default() const; Optional aria_row_span_or_default() const; @@ -198,7 +198,7 @@ public: Optional aria_value_max_or_default(Optional default_value = {}) const; Optional aria_value_min_or_default(Optional default_value = {}) const; Optional aria_value_now_or_default() const; - DeprecatedString aria_value_text_or_default() const; + String aria_value_text_or_default() const; private: explicit AriaData(ARIAMixin const&); @@ -232,7 +232,7 @@ private: static AriaSort parse_aria_sort(Optional const&); static Optional parse_optional_true_false(Optional const&); - Optional m_aria_active_descendant; + Optional m_aria_active_descendant; Optional m_aria_atomic; AriaAutocomplete m_aria_auto_complete; bool m_aria_busy; @@ -240,36 +240,36 @@ private: Optional m_aria_col_count; Optional m_aria_col_index; Optional m_aria_col_span; - Vector m_aria_controls; + Vector m_aria_controls; AriaCurrent m_aria_current; - Vector m_aria_described_by; - Optional m_aria_details; + Vector m_aria_described_by; + Optional m_aria_details; bool m_aria_disabled; Vector m_aria_drop_effect; - Optional m_aria_error_message; + Optional m_aria_error_message; Optional m_aria_expanded; - Vector m_aria_flow_to; + Vector m_aria_flow_to; Optional m_aria_grabbed; AriaHasPopup m_aria_has_popup; Optional m_aria_hidden; AriaInvalid m_aria_invalid; - DeprecatedString m_aria_key_shortcuts; - DeprecatedString m_aria_label; - Vector m_aria_labelled_by; + String m_aria_key_shortcuts; + String m_aria_label; + Vector m_aria_labelled_by; Optional m_aria_level; Optional m_aria_live; bool m_aria_modal; bool m_aria_multi_line; bool m_aria_multi_selectable; Optional m_aria_orientation; - Vector m_aria_owns; - DeprecatedString m_aria_placeholder; + Vector m_aria_owns; + String m_aria_placeholder; Optional m_aria_pos_in_set; Tristate m_aria_pressed; bool m_aria_read_only; Vector m_aria_relevant; bool m_aria_required; - DeprecatedString m_aria_role_description; + String m_aria_role_description; Optional m_aria_row_count; Optional m_aria_row_index; Optional m_aria_row_span; @@ -279,7 +279,7 @@ private: Optional m_aria_value_max; Optional m_aria_value_min; Optional m_aria_value_now; - DeprecatedString m_aria_value_text; + String m_aria_value_text; }; } diff --git a/Userland/Libraries/LibWeb/ARIA/StateAndProperties.cpp b/Userland/Libraries/LibWeb/ARIA/StateAndProperties.cpp index e3f56d82f3..a88570f604 100644 --- a/Userland/Libraries/LibWeb/ARIA/StateAndProperties.cpp +++ b/Userland/Libraries/LibWeb/ARIA/StateAndProperties.cpp @@ -13,8 +13,7 @@ ErrorOr state_or_property_to_string_value(StateAndProperties state_or_pr { switch (state_or_property) { case StateAndProperties::AriaActiveDescendant: { - auto value = aria_data.aria_active_descendant_or_default(); - return value.has_value() ? String::from_deprecated_string(value.value()) : String::from_utf8(""sv); + return aria_data.aria_active_descendant_or_default().value_or(String {}); } case StateAndProperties::AriaAtomic: { bool value; @@ -73,8 +72,7 @@ ErrorOr state_or_property_to_string_value(StateAndProperties state_or_pr case StateAndProperties::AriaDescribedBy: return id_reference_list_to_string(aria_data.aria_described_by_or_default()); case StateAndProperties::AriaDetails: { - auto value = aria_data.aria_details_or_default(); - return value.has_value() ? String::from_deprecated_string(value.value()) : String::from_utf8(""sv); + return aria_data.aria_details_or_default().value_or(String {}); } case StateAndProperties::AriaDisabled: return aria_data.aria_disabled_or_default() ? "true"_string : "false"_string; @@ -113,8 +111,7 @@ ErrorOr state_or_property_to_string_value(StateAndProperties state_or_pr return builder.to_string(); } case StateAndProperties::AriaErrorMessage: { - auto value = aria_data.aria_error_message_or_default(); - return value.has_value() ? String::from_deprecated_string(value.value()) : String {}; + return aria_data.aria_error_message_or_default().value_or(String {}); } case StateAndProperties::AriaExpanded: return ARIA::optional_bool_to_string(aria_data.aria_expanded_or_default()); @@ -159,9 +156,9 @@ ErrorOr state_or_property_to_string_value(StateAndProperties state_or_pr VERIFY_NOT_REACHED(); } case StateAndProperties::AriaKeyShortcuts: - return String::from_deprecated_string(aria_data.aria_key_shortcuts_or_default()); + return aria_data.aria_key_shortcuts_or_default(); case StateAndProperties::AriaLabel: - return String::from_deprecated_string(aria_data.aria_label_or_default()); + return aria_data.aria_label_or_default(); case StateAndProperties::AriaLabelledBy: return id_reference_list_to_string(aria_data.aria_labelled_by_or_default()); case StateAndProperties::AriaLevel: @@ -209,7 +206,7 @@ ErrorOr state_or_property_to_string_value(StateAndProperties state_or_pr case StateAndProperties::AriaOwns: return id_reference_list_to_string(aria_data.aria_owns_or_default()); case StateAndProperties::AriaPlaceholder: - return String::from_deprecated_string(aria_data.aria_placeholder_or_default()); + return aria_data.aria_placeholder_or_default(); case StateAndProperties::AriaPosInSet: return ARIA::optional_integer_to_string(aria_data.aria_pos_in_set_or_default()); case StateAndProperties::AriaPressed: @@ -250,7 +247,7 @@ ErrorOr state_or_property_to_string_value(StateAndProperties state_or_pr case StateAndProperties::AriaRequired: return String::from_utf8(aria_data.aria_required_or_default() ? "true"sv : "false"sv); case StateAndProperties::AriaRoleDescription: - return String::from_deprecated_string(aria_data.aria_role_description_or_default()); + return aria_data.aria_role_description_or_default(); case StateAndProperties::AriaRowCount: return ARIA::optional_integer_to_string(aria_data.aria_row_count_or_default()); case StateAndProperties::AriaRowIndex: @@ -288,7 +285,7 @@ ErrorOr state_or_property_to_string_value(StateAndProperties state_or_pr case StateAndProperties::AriaValueNow: return ARIA::optional_number_to_string(aria_data.aria_value_now_or_default()); case StateAndProperties::AriaValueText: - return String::from_deprecated_string(aria_data.aria_value_text_or_default()); + return aria_data.aria_value_text_or_default(); } VERIFY_NOT_REACHED(); } @@ -330,7 +327,8 @@ ErrorOr optional_number_to_string(Optional value) return "undefined"_string; return String::number(value.value()); } -ErrorOr id_reference_list_to_string(Vector const& value) + +ErrorOr id_reference_list_to_string(Vector const& value) { StringBuilder builder; for (auto const& id : value) { diff --git a/Userland/Libraries/LibWeb/ARIA/StateAndProperties.h b/Userland/Libraries/LibWeb/ARIA/StateAndProperties.h index f40417b3ac..e3ed4711c3 100644 --- a/Userland/Libraries/LibWeb/ARIA/StateAndProperties.h +++ b/Userland/Libraries/LibWeb/ARIA/StateAndProperties.h @@ -69,7 +69,7 @@ ErrorOr tristate_to_string(Tristate); ErrorOr optional_integer_to_string(Optional); ErrorOr optional_bool_to_string(Optional); ErrorOr optional_number_to_string(Optional); -ErrorOr id_reference_list_to_string(Vector const&); +ErrorOr id_reference_list_to_string(Vector const&); StringView state_or_property_to_string(StateAndProperties); } diff --git a/Userland/Libraries/LibWeb/DOM/Element.cpp b/Userland/Libraries/LibWeb/DOM/Element.cpp index 25f8c2ae14..8e85684a3b 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.cpp +++ b/Userland/Libraries/LibWeb/DOM/Element.cpp @@ -2062,9 +2062,9 @@ void Element::scroll(HTML::ScrollToOptions const&) dbgln("FIXME: Implement Element::scroll(ScrollToOptions)"); } -bool Element::id_reference_exists(DeprecatedString const& id_reference) const +bool Element::id_reference_exists(String const& id_reference) const { - return document().get_element_by_id(MUST(FlyString::from_deprecated_fly_string(id_reference))); + return document().get_element_by_id(id_reference); } void Element::register_intersection_observer(Badge, IntersectionObserver::IntersectionObserverRegistration registration) diff --git a/Userland/Libraries/LibWeb/DOM/Element.h b/Userland/Libraries/LibWeb/DOM/Element.h index b6bc89a4d6..9951087af5 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.h +++ b/Userland/Libraries/LibWeb/DOM/Element.h @@ -381,7 +381,7 @@ protected: virtual void visit_edges(Cell::Visitor&) override; - virtual bool id_reference_exists(DeprecatedString const&) const override; + virtual bool id_reference_exists(String const&) const override; private: void make_html_uppercased_qualified_name();