mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 18:04:58 +00:00
LibWeb: Replace ARIA role static FlyStrings with an enum
This replaces the FlyStrings for ARIA roles that were constructed in a [[gnu::constructor]] with a single enum. I came across this as the DOM inspector was crashing due to a null FlyString for an ARIA role. After fixing that, I was confused as to why these roles were not an enum. Looking at the spec there's a fixed list of roles and switching from references to static strings to an enum was pretty much an exercise in find and replace :). No functional changes (outside of fixing the mentioned crash).
This commit is contained in:
parent
f23eba1ba8
commit
890b4d7980
59 changed files with 344 additions and 327 deletions
|
@ -77,7 +77,7 @@ set(SOURCES
|
||||||
DOM/Attr.idl
|
DOM/Attr.idl
|
||||||
DOM/ARIAMixin.cpp
|
DOM/ARIAMixin.cpp
|
||||||
DOM/ARIAMixin.idl
|
DOM/ARIAMixin.idl
|
||||||
DOM/ARIARoleNames.cpp
|
DOM/ARIARoles.cpp
|
||||||
DOM/CDATASection.cpp
|
DOM/CDATASection.cpp
|
||||||
DOM/CharacterData.cpp
|
DOM/CharacterData.cpp
|
||||||
DOM/CharacterData.idl
|
DOM/CharacterData.idl
|
||||||
|
|
|
@ -5,13 +5,13 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIAMixin.h>
|
#include <LibWeb/DOM/ARIAMixin.h>
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/Infra/CharacterTypes.h>
|
#include <LibWeb/Infra/CharacterTypes.h>
|
||||||
|
|
||||||
namespace Web::DOM {
|
namespace Web::DOM {
|
||||||
|
|
||||||
// https://www.w3.org/TR/wai-aria-1.2/#introroles
|
// https://www.w3.org/TR/wai-aria-1.2/#introroles
|
||||||
DeprecatedFlyString ARIAMixin::role_or_default() const
|
Optional<ARIARoles::Role> ARIAMixin::role_or_default() const
|
||||||
{
|
{
|
||||||
// 1. Use the rules of the host language to detect that an element has a role attribute and to identify the attribute value string for it.
|
// 1. Use the rules of the host language to detect that an element has a role attribute and to identify the attribute value string for it.
|
||||||
auto role_string = role();
|
auto role_string = role();
|
||||||
|
@ -20,10 +20,13 @@ DeprecatedFlyString ARIAMixin::role_or_default() const
|
||||||
auto role_list = role_string.split_view(Infra::is_ascii_whitespace);
|
auto role_list = role_string.split_view(Infra::is_ascii_whitespace);
|
||||||
|
|
||||||
// 3. Compare the substrings to all the names of the non-abstract WAI-ARIA roles. Case-sensitivity of the comparison inherits from the case-sensitivity of the host language.
|
// 3. Compare the substrings to all the names of the non-abstract WAI-ARIA roles. Case-sensitivity of the comparison inherits from the case-sensitivity of the host language.
|
||||||
for (auto const& role : role_list) {
|
for (auto const& role_name : role_list) {
|
||||||
// 4. Use the first such substring in textual order that matches the name of a non-abstract WAI-ARIA role.
|
// 4. Use the first such substring in textual order that matches the name of a non-abstract WAI-ARIA role.
|
||||||
if (ARIARoleNames::is_non_abstract_aria_role(role))
|
auto role = ARIARoles::from_string(role_name);
|
||||||
return role;
|
if (!role.has_value())
|
||||||
|
continue;
|
||||||
|
if (ARIARoles::is_non_abstract_aria_role(*role))
|
||||||
|
return *role;
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.w3.org/TR/wai-aria-1.2/#document-handling_author-errors_roles
|
// https://www.w3.org/TR/wai-aria-1.2/#document-handling_author-errors_roles
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <AK/DeprecatedFlyString.h>
|
#include <AK/DeprecatedFlyString.h>
|
||||||
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/WebIDL/ExceptionOr.h>
|
#include <LibWeb/WebIDL/ExceptionOr.h>
|
||||||
|
|
||||||
namespace Web::DOM {
|
namespace Web::DOM {
|
||||||
|
@ -132,9 +133,9 @@ public:
|
||||||
virtual WebIDL::ExceptionOr<void> set_aria_value_text(DeprecatedString const&) = 0;
|
virtual WebIDL::ExceptionOr<void> set_aria_value_text(DeprecatedString const&) = 0;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#docconformance
|
// https://www.w3.org/TR/html-aria/#docconformance
|
||||||
virtual DeprecatedFlyString default_role() const { return {}; };
|
virtual Optional<ARIARoles::Role> default_role() const { return {}; };
|
||||||
|
|
||||||
DeprecatedFlyString role_or_default() const;
|
Optional<ARIARoles::Role> role_or_default() const;
|
||||||
|
|
||||||
// https://www.w3.org/TR/wai-aria-1.2/#tree_exclusion
|
// https://www.w3.org/TR/wai-aria-1.2/#tree_exclusion
|
||||||
virtual bool exclude_from_accessibility_tree() const = 0;
|
virtual bool exclude_from_accessibility_tree() const = 0;
|
||||||
|
|
|
@ -1,167 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2022, Jonah Shafran <jonahshafran@gmail.com>
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
|
||||||
|
|
||||||
namespace Web::DOM::ARIARoleNames {
|
|
||||||
|
|
||||||
#define __ENUMERATE_ARIA_ROLE(name) DeprecatedFlyString name;
|
|
||||||
ENUMERATE_ARIA_ROLES
|
|
||||||
#undef __ENUMERATE_ARIA_ROLE
|
|
||||||
|
|
||||||
[[gnu::constructor]] static void initialize()
|
|
||||||
{
|
|
||||||
static bool s_initialized = false;
|
|
||||||
if (s_initialized)
|
|
||||||
return;
|
|
||||||
|
|
||||||
#define __ENUMERATE_ARIA_ROLE(name) name = #name;
|
|
||||||
ENUMERATE_ARIA_ROLES
|
|
||||||
#undef __ENUMERATE_ARIA_ROLE
|
|
||||||
|
|
||||||
// Special case for C++ keyword
|
|
||||||
switch_ = "switch";
|
|
||||||
s_initialized = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://www.w3.org/TR/wai-aria-1.2/#abstract_roles
|
|
||||||
bool is_abstract_aria_role(DeprecatedFlyString const& role)
|
|
||||||
{
|
|
||||||
return role.is_one_of(
|
|
||||||
ARIARoleNames::command,
|
|
||||||
ARIARoleNames::composite,
|
|
||||||
ARIARoleNames::input,
|
|
||||||
ARIARoleNames::landmark,
|
|
||||||
ARIARoleNames::range,
|
|
||||||
ARIARoleNames::roletype,
|
|
||||||
ARIARoleNames::section,
|
|
||||||
ARIARoleNames::sectionhead,
|
|
||||||
ARIARoleNames::select,
|
|
||||||
ARIARoleNames::structure,
|
|
||||||
ARIARoleNames::widget,
|
|
||||||
ARIARoleNames::window);
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://www.w3.org/TR/wai-aria-1.2/#widget_roles
|
|
||||||
bool is_widget_aria_role(DeprecatedFlyString const& role)
|
|
||||||
{
|
|
||||||
return role.to_lowercase().is_one_of(
|
|
||||||
ARIARoleNames::button,
|
|
||||||
ARIARoleNames::checkbox,
|
|
||||||
ARIARoleNames::gridcell,
|
|
||||||
ARIARoleNames::link,
|
|
||||||
ARIARoleNames::menuitem,
|
|
||||||
ARIARoleNames::menuitemcheckbox,
|
|
||||||
ARIARoleNames::option,
|
|
||||||
ARIARoleNames::progressbar,
|
|
||||||
ARIARoleNames::radio,
|
|
||||||
ARIARoleNames::scrollbar,
|
|
||||||
ARIARoleNames::searchbox,
|
|
||||||
ARIARoleNames::separator, // TODO: Only when focusable
|
|
||||||
ARIARoleNames::slider,
|
|
||||||
ARIARoleNames::spinbutton,
|
|
||||||
ARIARoleNames::switch_,
|
|
||||||
ARIARoleNames::tab,
|
|
||||||
ARIARoleNames::tabpanel,
|
|
||||||
ARIARoleNames::textbox,
|
|
||||||
ARIARoleNames::treeitem,
|
|
||||||
ARIARoleNames::combobox,
|
|
||||||
ARIARoleNames::grid,
|
|
||||||
ARIARoleNames::listbox,
|
|
||||||
ARIARoleNames::menu,
|
|
||||||
ARIARoleNames::menubar,
|
|
||||||
ARIARoleNames::radiogroup,
|
|
||||||
ARIARoleNames::tablist,
|
|
||||||
ARIARoleNames::tree,
|
|
||||||
ARIARoleNames::treegrid);
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://www.w3.org/TR/wai-aria-1.2/#document_structure_roles
|
|
||||||
bool is_document_structure_aria_role(DeprecatedFlyString const& role)
|
|
||||||
{
|
|
||||||
return role.to_lowercase().is_one_of(
|
|
||||||
ARIARoleNames::application,
|
|
||||||
ARIARoleNames::article,
|
|
||||||
ARIARoleNames::blockquote,
|
|
||||||
ARIARoleNames::caption,
|
|
||||||
ARIARoleNames::cell,
|
|
||||||
ARIARoleNames::columnheader,
|
|
||||||
ARIARoleNames::definition,
|
|
||||||
ARIARoleNames::deletion,
|
|
||||||
ARIARoleNames::directory,
|
|
||||||
ARIARoleNames::document,
|
|
||||||
ARIARoleNames::emphasis,
|
|
||||||
ARIARoleNames::feed,
|
|
||||||
ARIARoleNames::figure,
|
|
||||||
ARIARoleNames::generic,
|
|
||||||
ARIARoleNames::group,
|
|
||||||
ARIARoleNames::heading,
|
|
||||||
ARIARoleNames::img,
|
|
||||||
ARIARoleNames::insertion,
|
|
||||||
ARIARoleNames::list,
|
|
||||||
ARIARoleNames::listitem,
|
|
||||||
ARIARoleNames::math,
|
|
||||||
ARIARoleNames::meter,
|
|
||||||
ARIARoleNames::none,
|
|
||||||
ARIARoleNames::note,
|
|
||||||
ARIARoleNames::paragraph,
|
|
||||||
ARIARoleNames::presentation,
|
|
||||||
ARIARoleNames::row,
|
|
||||||
ARIARoleNames::rowgroup,
|
|
||||||
ARIARoleNames::rowheader,
|
|
||||||
ARIARoleNames::separator, // TODO: Only when not focusable
|
|
||||||
ARIARoleNames::strong,
|
|
||||||
ARIARoleNames::subscript,
|
|
||||||
ARIARoleNames::table,
|
|
||||||
ARIARoleNames::term,
|
|
||||||
ARIARoleNames::time,
|
|
||||||
ARIARoleNames::toolbar,
|
|
||||||
ARIARoleNames::tooltip);
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://www.w3.org/TR/wai-aria-1.2/#landmark_roles
|
|
||||||
bool is_landmark_aria_role(DeprecatedFlyString const& role)
|
|
||||||
{
|
|
||||||
return role.to_lowercase().is_one_of(
|
|
||||||
ARIARoleNames::banner,
|
|
||||||
ARIARoleNames::complementary,
|
|
||||||
ARIARoleNames::contentinfo,
|
|
||||||
ARIARoleNames::form,
|
|
||||||
ARIARoleNames::main,
|
|
||||||
ARIARoleNames::navigation,
|
|
||||||
ARIARoleNames::region,
|
|
||||||
ARIARoleNames::search);
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://www.w3.org/TR/wai-aria-1.2/#live_region_roles
|
|
||||||
bool is_live_region_aria_role(DeprecatedFlyString const& role)
|
|
||||||
{
|
|
||||||
return role.to_lowercase().is_one_of(
|
|
||||||
ARIARoleNames::alert,
|
|
||||||
ARIARoleNames::log,
|
|
||||||
ARIARoleNames::marquee,
|
|
||||||
ARIARoleNames::status,
|
|
||||||
ARIARoleNames::timer);
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://www.w3.org/TR/wai-aria-1.2/#window_roles
|
|
||||||
bool is_windows_aria_role(DeprecatedFlyString const& role)
|
|
||||||
{
|
|
||||||
return role.to_lowercase().is_one_of(
|
|
||||||
ARIARoleNames::alertdialog,
|
|
||||||
ARIARoleNames::dialog);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_non_abstract_aria_role(DeprecatedFlyString const& role)
|
|
||||||
{
|
|
||||||
return is_widget_aria_role(role)
|
|
||||||
|| is_document_structure_aria_role(role)
|
|
||||||
|| is_landmark_aria_role(role)
|
|
||||||
|| is_live_region_aria_role(role)
|
|
||||||
|| is_windows_aria_role(role);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
172
Userland/Libraries/LibWeb/DOM/ARIARoles.cpp
Normal file
172
Userland/Libraries/LibWeb/DOM/ARIARoles.cpp
Normal file
|
@ -0,0 +1,172 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022, Jonah Shafran <jonahshafran@gmail.com>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <AK/GenericShorthands.h>
|
||||||
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
|
|
||||||
|
namespace Web::DOM::ARIARoles {
|
||||||
|
|
||||||
|
StringView role_name(Role role)
|
||||||
|
{
|
||||||
|
switch (role) {
|
||||||
|
#define __ENUMERATE_ARIA_ROLE(name) \
|
||||||
|
case Role::name: \
|
||||||
|
return #name##sv;
|
||||||
|
ENUMERATE_ARIA_ROLES
|
||||||
|
#undef __ENUMERATE_ARIA_ROLE
|
||||||
|
default:
|
||||||
|
VERIFY_NOT_REACHED();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Optional<Role> from_string(StringView role_name)
|
||||||
|
{
|
||||||
|
#define __ENUMERATE_ARIA_ROLE(name) \
|
||||||
|
if (role_name.equals_ignoring_case(#name##sv)) \
|
||||||
|
return Role::name;
|
||||||
|
ENUMERATE_ARIA_ROLES
|
||||||
|
#undef __ENUMERATE_ARIA_ROLE
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://www.w3.org/TR/wai-aria-1.2/#abstract_roles
|
||||||
|
bool is_abstract_aria_role(Role role)
|
||||||
|
{
|
||||||
|
return first_is_one_of(role,
|
||||||
|
Role::command,
|
||||||
|
Role::composite,
|
||||||
|
Role::input,
|
||||||
|
Role::landmark,
|
||||||
|
Role::range,
|
||||||
|
Role::roletype,
|
||||||
|
Role::section,
|
||||||
|
Role::sectionhead,
|
||||||
|
Role::select,
|
||||||
|
Role::structure,
|
||||||
|
Role::widget,
|
||||||
|
Role::window);
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://www.w3.org/TR/wai-aria-1.2/#widget_roles
|
||||||
|
bool is_widget_aria_role(Role role)
|
||||||
|
{
|
||||||
|
return first_is_one_of(role,
|
||||||
|
Role::button,
|
||||||
|
Role::checkbox,
|
||||||
|
Role::gridcell,
|
||||||
|
Role::link,
|
||||||
|
Role::menuitem,
|
||||||
|
Role::menuitemcheckbox,
|
||||||
|
Role::option,
|
||||||
|
Role::progressbar,
|
||||||
|
Role::radio,
|
||||||
|
Role::scrollbar,
|
||||||
|
Role::searchbox,
|
||||||
|
Role::separator, // TODO: Only when focusable
|
||||||
|
Role::slider,
|
||||||
|
Role::spinbutton,
|
||||||
|
Role::switch_,
|
||||||
|
Role::tab,
|
||||||
|
Role::tabpanel,
|
||||||
|
Role::textbox,
|
||||||
|
Role::treeitem,
|
||||||
|
Role::combobox,
|
||||||
|
Role::grid,
|
||||||
|
Role::listbox,
|
||||||
|
Role::menu,
|
||||||
|
Role::menubar,
|
||||||
|
Role::radiogroup,
|
||||||
|
Role::tablist,
|
||||||
|
Role::tree,
|
||||||
|
Role::treegrid);
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://www.w3.org/TR/wai-aria-1.2/#document_structure_roles
|
||||||
|
bool is_document_structure_aria_role(Role role)
|
||||||
|
{
|
||||||
|
return first_is_one_of(role,
|
||||||
|
Role::application,
|
||||||
|
Role::article,
|
||||||
|
Role::blockquote,
|
||||||
|
Role::caption,
|
||||||
|
Role::cell,
|
||||||
|
Role::columnheader,
|
||||||
|
Role::definition,
|
||||||
|
Role::deletion,
|
||||||
|
Role::directory,
|
||||||
|
Role::document,
|
||||||
|
Role::emphasis,
|
||||||
|
Role::feed,
|
||||||
|
Role::figure,
|
||||||
|
Role::generic,
|
||||||
|
Role::group,
|
||||||
|
Role::heading,
|
||||||
|
Role::img,
|
||||||
|
Role::insertion,
|
||||||
|
Role::list,
|
||||||
|
Role::listitem,
|
||||||
|
Role::math,
|
||||||
|
Role::meter,
|
||||||
|
Role::none,
|
||||||
|
Role::note,
|
||||||
|
Role::paragraph,
|
||||||
|
Role::presentation,
|
||||||
|
Role::row,
|
||||||
|
Role::rowgroup,
|
||||||
|
Role::rowheader,
|
||||||
|
Role::separator, // TODO: Only when not focusable
|
||||||
|
Role::strong,
|
||||||
|
Role::subscript,
|
||||||
|
Role::table,
|
||||||
|
Role::term,
|
||||||
|
Role::time,
|
||||||
|
Role::toolbar,
|
||||||
|
Role::tooltip);
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://www.w3.org/TR/wai-aria-1.2/#landmark_roles
|
||||||
|
bool is_landmark_aria_role(Role role)
|
||||||
|
{
|
||||||
|
return first_is_one_of(role,
|
||||||
|
Role::banner,
|
||||||
|
Role::complementary,
|
||||||
|
Role::contentinfo,
|
||||||
|
Role::form,
|
||||||
|
Role::main,
|
||||||
|
Role::navigation,
|
||||||
|
Role::region,
|
||||||
|
Role::search);
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://www.w3.org/TR/wai-aria-1.2/#live_region_roles
|
||||||
|
bool is_live_region_aria_role(Role role)
|
||||||
|
{
|
||||||
|
return first_is_one_of(role,
|
||||||
|
Role::alert,
|
||||||
|
Role::log,
|
||||||
|
Role::marquee,
|
||||||
|
Role::status,
|
||||||
|
Role::timer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://www.w3.org/TR/wai-aria-1.2/#window_roles
|
||||||
|
bool is_windows_aria_role(Role role)
|
||||||
|
{
|
||||||
|
return first_is_one_of(role,
|
||||||
|
Role::alertdialog,
|
||||||
|
Role::dialog);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_non_abstract_aria_role(Role role)
|
||||||
|
{
|
||||||
|
return is_widget_aria_role(role)
|
||||||
|
|| is_document_structure_aria_role(role)
|
||||||
|
|| is_landmark_aria_role(role)
|
||||||
|
|| is_live_region_aria_role(role)
|
||||||
|
|| is_windows_aria_role(role);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
#include <AK/DeprecatedFlyString.h>
|
#include <AK/DeprecatedFlyString.h>
|
||||||
|
|
||||||
namespace Web::DOM::ARIARoleNames {
|
namespace Web::DOM::ARIARoles {
|
||||||
|
|
||||||
#define ENUMERATE_ARIA_ROLES \
|
#define ENUMERATE_ARIA_ROLES \
|
||||||
__ENUMERATE_ARIA_ROLE(alert) \
|
__ENUMERATE_ARIA_ROLE(alert) \
|
||||||
|
@ -106,17 +106,22 @@ namespace Web::DOM::ARIARoleNames {
|
||||||
__ENUMERATE_ARIA_ROLE(widget) \
|
__ENUMERATE_ARIA_ROLE(widget) \
|
||||||
__ENUMERATE_ARIA_ROLE(window)
|
__ENUMERATE_ARIA_ROLE(window)
|
||||||
|
|
||||||
#define __ENUMERATE_ARIA_ROLE(name) extern DeprecatedFlyString name;
|
enum class Role {
|
||||||
ENUMERATE_ARIA_ROLES
|
#define __ENUMERATE_ARIA_ROLE(name) name,
|
||||||
|
ENUMERATE_ARIA_ROLES
|
||||||
#undef __ENUMERATE_ARIA_ROLE
|
#undef __ENUMERATE_ARIA_ROLE
|
||||||
|
};
|
||||||
|
|
||||||
bool is_abstract_aria_role(DeprecatedFlyString const&);
|
StringView role_name(Role);
|
||||||
bool is_widget_aria_role(DeprecatedFlyString const&);
|
Optional<Role> from_string(StringView role_name);
|
||||||
bool is_document_structure_aria_role(DeprecatedFlyString const&);
|
|
||||||
bool is_landmark_aria_role(DeprecatedFlyString const&);
|
|
||||||
bool is_live_region_aria_role(DeprecatedFlyString const&);
|
|
||||||
bool is_windows_aria_role(DeprecatedFlyString const&);
|
|
||||||
|
|
||||||
bool is_non_abstract_aria_role(DeprecatedFlyString const&);
|
bool is_abstract_aria_role(Role);
|
||||||
|
bool is_widget_aria_role(Role);
|
||||||
|
bool is_document_structure_aria_role(Role);
|
||||||
|
bool is_landmark_aria_role(Role);
|
||||||
|
bool is_live_region_aria_role(Role);
|
||||||
|
bool is_windows_aria_role(Role);
|
||||||
|
|
||||||
|
bool is_non_abstract_aria_role(Role);
|
||||||
|
|
||||||
}
|
}
|
|
@ -35,10 +35,10 @@ void AccessibilityTreeNode::serialize_tree_as_json(JsonObjectSerializer<StringBu
|
||||||
MUST(object.add("type"sv, "element"sv));
|
MUST(object.add("type"sv, "element"sv));
|
||||||
|
|
||||||
auto role = element->role_or_default();
|
auto role = element->role_or_default();
|
||||||
bool has_role = !role.is_null() && !role.is_empty() && !ARIARoleNames::is_abstract_aria_role(role);
|
bool has_role = role.has_value() && !ARIARoles::is_abstract_aria_role(*role);
|
||||||
|
|
||||||
if (has_role)
|
if (has_role)
|
||||||
MUST(object.add("role"sv, role.view()));
|
MUST(object.add("role"sv, ARIARoles::role_name(*role)));
|
||||||
else
|
else
|
||||||
MUST(object.add("role"sv, ""sv));
|
MUST(object.add("role"sv, ""sv));
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1282,8 +1282,8 @@ bool Element::exclude_from_accessibility_tree() const
|
||||||
|
|
||||||
// Elements with none or presentation as the first role in the role attribute. However, their exclusion is conditional. In addition, the element's descendants and text content are generally included. These exceptions and conditions are documented in the presentation (role) section.
|
// Elements with none or presentation as the first role in the role attribute. However, their exclusion is conditional. In addition, the element's descendants and text content are generally included. These exceptions and conditions are documented in the presentation (role) section.
|
||||||
// FIXME: Handle exceptions to excluding presentation role
|
// FIXME: Handle exceptions to excluding presentation role
|
||||||
auto role = role_or_default().to_lowercase();
|
auto role = role_or_default();
|
||||||
if (role == ARIARoleNames::none || role == ARIARoleNames::presentation)
|
if (role == ARIARoles::Role::none || role == ARIARoles::Role::presentation)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// TODO: If not already excluded from the accessibility tree per the above rules, user agents SHOULD NOT include the following elements in the accessibility tree:
|
// TODO: If not already excluded from the accessibility tree per the above rules, user agents SHOULD NOT include the following elements in the accessibility tree:
|
||||||
|
@ -1322,7 +1322,7 @@ bool Element::include_in_accessibility_tree() const
|
||||||
// Elements that have an explicit role or a global WAI-ARIA attribute and do not have aria-hidden set to true. (See Excluding Elements in the Accessibility Tree for additional guidance on aria-hidden.)
|
// Elements that have an explicit role or a global WAI-ARIA attribute and do not have aria-hidden set to true. (See Excluding Elements in the Accessibility Tree for additional guidance on aria-hidden.)
|
||||||
// NOTE: The spec says only explicit roles count, but playing around in other browsers, this does not seem to be true in practice (for example button elements are always exposed with their implicit role if none is set)
|
// NOTE: The spec says only explicit roles count, but playing around in other browsers, this does not seem to be true in practice (for example button elements are always exposed with their implicit role if none is set)
|
||||||
// This issue https://github.com/w3c/aria/issues/1851 seeks clarification on this point
|
// This issue https://github.com/w3c/aria/issues/1851 seeks clarification on this point
|
||||||
if ((!role_or_default().is_empty() || has_global_aria_attribute()) && aria_hidden() != "true")
|
if ((role_or_default().has_value() || has_global_aria_attribute()) && aria_hidden() != "true")
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// TODO: Elements that are not hidden and have an ID that is referenced by another element via a WAI-ARIA property.
|
// TODO: Elements that are not hidden and have an ID that is referenced by another element via a WAI-ARIA property.
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#include <AK/RefPtr.h>
|
#include <AK/RefPtr.h>
|
||||||
#include <AK/TypeCasts.h>
|
#include <AK/TypeCasts.h>
|
||||||
#include <AK/Vector.h>
|
#include <AK/Vector.h>
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/DOM/AccessibilityTreeNode.h>
|
#include <LibWeb/DOM/AccessibilityTreeNode.h>
|
||||||
#include <LibWeb/DOM/EventTarget.h>
|
#include <LibWeb/DOM/EventTarget.h>
|
||||||
#include <LibWeb/DOMParsing/XMLSerializer.h>
|
#include <LibWeb/DOMParsing/XMLSerializer.h>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLAnchorElement.h>
|
#include <LibWeb/HTML/HTMLAnchorElement.h>
|
||||||
#include <LibWeb/HTML/Window.h>
|
#include <LibWeb/HTML/Window.h>
|
||||||
|
|
||||||
|
@ -89,13 +89,13 @@ i32 HTMLAnchorElement::default_tab_index_value() const
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedFlyString HTMLAnchorElement::default_role() const
|
Optional<DOM::ARIARoles::Role> HTMLAnchorElement::default_role() const
|
||||||
{
|
{
|
||||||
// https://www.w3.org/TR/html-aria/#el-a-no-href
|
// https://www.w3.org/TR/html-aria/#el-a-no-href
|
||||||
if (!href().is_null())
|
if (!href().is_null())
|
||||||
return DOM::ARIARoleNames::link;
|
return DOM::ARIARoles::Role::link;
|
||||||
// https://www.w3.org/TR/html-aria/#el-a
|
// https://www.w3.org/TR/html-aria/#el-a
|
||||||
return DOM::ARIARoleNames::generic;
|
return DOM::ARIARoles::Role::generic;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,7 +53,7 @@ private:
|
||||||
queue_an_element_task(source, move(steps));
|
queue_an_element_task(source, move(steps));
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual DeprecatedFlyString default_role() const override;
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLAreaElement.h>
|
#include <LibWeb/HTML/HTMLAreaElement.h>
|
||||||
#include <LibWeb/HTML/Window.h>
|
#include <LibWeb/HTML/Window.h>
|
||||||
|
|
||||||
|
@ -48,13 +48,13 @@ i32 HTMLAreaElement::default_tab_index_value() const
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedFlyString HTMLAreaElement::default_role() const
|
Optional<DOM::ARIARoles::Role> HTMLAreaElement::default_role() const
|
||||||
{
|
{
|
||||||
// https://www.w3.org/TR/html-aria/#el-area-no-href
|
// https://www.w3.org/TR/html-aria/#el-area-no-href
|
||||||
if (!href().is_null())
|
if (!href().is_null())
|
||||||
return DOM::ARIARoleNames::link;
|
return DOM::ARIARoles::Role::link;
|
||||||
// https://www.w3.org/TR/html-aria/#el-area
|
// https://www.w3.org/TR/html-aria/#el-area
|
||||||
return DOM::ARIARoleNames::generic;
|
return DOM::ARIARoles::Role::generic;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ private:
|
||||||
queue_an_element_task(source, move(steps));
|
queue_an_element_task(source, move(steps));
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual DeprecatedFlyString default_role() const override;
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
#include <LibWeb/HTML/WindowEventHandlers.h>
|
#include <LibWeb/HTML/WindowEventHandlers.h>
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ public:
|
||||||
virtual void apply_presentational_hints(CSS::StyleProperties&) const override;
|
virtual void apply_presentational_hints(CSS::StyleProperties&) const override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-body
|
// https://www.w3.org/TR/html-aria/#el-body
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::generic; };
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::generic; };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLBodyElement(DOM::Document&, DOM::QualifiedName);
|
HTMLBodyElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/FormAssociatedElement.h>
|
#include <LibWeb/HTML/FormAssociatedElement.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ public:
|
||||||
virtual bool is_labelable() const override { return true; }
|
virtual bool is_labelable() const override { return true; }
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-button
|
// https://www.w3.org/TR/html-aria/#el-button
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::button; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::button; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLButtonElement(DOM::Document&, DOM::QualifiedName);
|
HTMLButtonElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -18,7 +18,7 @@ public:
|
||||||
virtual ~HTMLDataElement() override;
|
virtual ~HTMLDataElement() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-data
|
// https://www.w3.org/TR/html-aria/#el-data
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::generic; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::generic; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLDataElement(DOM::Document&, DOM::QualifiedName);
|
HTMLDataElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -17,7 +17,7 @@ class HTMLDataListElement final : public HTMLElement {
|
||||||
public:
|
public:
|
||||||
virtual ~HTMLDataListElement() override;
|
virtual ~HTMLDataListElement() override;
|
||||||
|
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::listbox; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::listbox; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLDataListElement(DOM::Document&, DOM::QualifiedName);
|
HTMLDataListElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -18,7 +18,7 @@ public:
|
||||||
virtual ~HTMLDetailsElement() override;
|
virtual ~HTMLDetailsElement() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-details
|
// https://www.w3.org/TR/html-aria/#el-details
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::group; };
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::group; };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLDetailsElement(DOM::Document&, DOM::QualifiedName);
|
HTMLDetailsElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -18,7 +18,7 @@ public:
|
||||||
virtual ~HTMLDialogElement() override;
|
virtual ~HTMLDialogElement() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-dialog
|
// https://www.w3.org/TR/html-aria/#el-dialog
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::dialog; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::dialog; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLDialogElement(DOM::Document&, DOM::QualifiedName);
|
HTMLDialogElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -18,7 +18,7 @@ public:
|
||||||
virtual ~HTMLDivElement() override;
|
virtual ~HTMLDivElement() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-div
|
// https://www.w3.org/TR/html-aria/#el-div
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::generic; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::generic; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLDivElement(DOM::Document&, DOM::QualifiedName);
|
HTMLDivElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#include <AK/StringBuilder.h>
|
#include <AK/StringBuilder.h>
|
||||||
#include <LibJS/Interpreter.h>
|
#include <LibJS/Interpreter.h>
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/DOM/Document.h>
|
#include <LibWeb/DOM/Document.h>
|
||||||
#include <LibWeb/DOM/IDLEventListener.h>
|
#include <LibWeb/DOM/IDLEventListener.h>
|
||||||
#include <LibWeb/DOM/ShadowRoot.h>
|
#include <LibWeb/DOM/ShadowRoot.h>
|
||||||
|
@ -329,86 +329,86 @@ void HTMLElement::blur()
|
||||||
// User agents may selectively or uniformly ignore calls to this method for usability reasons.
|
// User agents may selectively or uniformly ignore calls to this method for usability reasons.
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedFlyString HTMLElement::default_role() const
|
Optional<DOM::ARIARoles::Role> HTMLElement::default_role() const
|
||||||
{
|
{
|
||||||
// https://www.w3.org/TR/html-aria/#el-article
|
// https://www.w3.org/TR/html-aria/#el-article
|
||||||
if (local_name() == TagNames::article)
|
if (local_name() == TagNames::article)
|
||||||
return DOM::ARIARoleNames::article;
|
return DOM::ARIARoles::Role::article;
|
||||||
// https://www.w3.org/TR/html-aria/#el-aside
|
// https://www.w3.org/TR/html-aria/#el-aside
|
||||||
if (local_name() == TagNames::aside)
|
if (local_name() == TagNames::aside)
|
||||||
return DOM::ARIARoleNames::complementary;
|
return DOM::ARIARoles::Role::complementary;
|
||||||
// https://www.w3.org/TR/html-aria/#el-b
|
// https://www.w3.org/TR/html-aria/#el-b
|
||||||
if (local_name() == TagNames::b)
|
if (local_name() == TagNames::b)
|
||||||
return DOM::ARIARoleNames::generic;
|
return DOM::ARIARoles::Role::generic;
|
||||||
// https://www.w3.org/TR/html-aria/#el-bdi
|
// https://www.w3.org/TR/html-aria/#el-bdi
|
||||||
if (local_name() == TagNames::bdi)
|
if (local_name() == TagNames::bdi)
|
||||||
return DOM::ARIARoleNames::generic;
|
return DOM::ARIARoles::Role::generic;
|
||||||
// https://www.w3.org/TR/html-aria/#el-bdo
|
// https://www.w3.org/TR/html-aria/#el-bdo
|
||||||
if (local_name() == TagNames::bdo)
|
if (local_name() == TagNames::bdo)
|
||||||
return DOM::ARIARoleNames::generic;
|
return DOM::ARIARoles::Role::generic;
|
||||||
// https://www.w3.org/TR/html-aria/#el-code
|
// https://www.w3.org/TR/html-aria/#el-code
|
||||||
if (local_name() == TagNames::code)
|
if (local_name() == TagNames::code)
|
||||||
return DOM::ARIARoleNames::code;
|
return DOM::ARIARoles::Role::code;
|
||||||
// https://www.w3.org/TR/html-aria/#el-dfn
|
// https://www.w3.org/TR/html-aria/#el-dfn
|
||||||
if (local_name() == TagNames::dfn)
|
if (local_name() == TagNames::dfn)
|
||||||
return DOM::ARIARoleNames::term;
|
return DOM::ARIARoles::Role::term;
|
||||||
// https://www.w3.org/TR/html-aria/#el-em
|
// https://www.w3.org/TR/html-aria/#el-em
|
||||||
if (local_name() == TagNames::em)
|
if (local_name() == TagNames::em)
|
||||||
return DOM::ARIARoleNames::emphasis;
|
return DOM::ARIARoles::Role::emphasis;
|
||||||
// https://www.w3.org/TR/html-aria/#el-figure
|
// https://www.w3.org/TR/html-aria/#el-figure
|
||||||
if (local_name() == TagNames::figure)
|
if (local_name() == TagNames::figure)
|
||||||
return DOM::ARIARoleNames::figure;
|
return DOM::ARIARoles::Role::figure;
|
||||||
// https://www.w3.org/TR/html-aria/#el-footer
|
// https://www.w3.org/TR/html-aria/#el-footer
|
||||||
if (local_name() == TagNames::footer) {
|
if (local_name() == TagNames::footer) {
|
||||||
// TODO: If not a descendant of an article, aside, main, nav or section element, or an element with role=article, complementary, main, navigation or region then role=contentinfo
|
// TODO: If not a descendant of an article, aside, main, nav or section element, or an element with role=article, complementary, main, navigation or region then role=contentinfo
|
||||||
// Otherwise, role=generic
|
// Otherwise, role=generic
|
||||||
return DOM::ARIARoleNames::generic;
|
return DOM::ARIARoles::Role::generic;
|
||||||
}
|
}
|
||||||
// https://www.w3.org/TR/html-aria/#el-header
|
// https://www.w3.org/TR/html-aria/#el-header
|
||||||
if (local_name() == TagNames::header) {
|
if (local_name() == TagNames::header) {
|
||||||
// TODO: If not a descendant of an article, aside, main, nav or section element, or an element with role=article, complementary, main, navigation or region then role=banner
|
// TODO: If not a descendant of an article, aside, main, nav or section element, or an element with role=article, complementary, main, navigation or region then role=banner
|
||||||
// Otherwise, role=generic
|
// Otherwise, role=generic
|
||||||
return DOM::ARIARoleNames::generic;
|
return DOM::ARIARoles::Role::generic;
|
||||||
}
|
}
|
||||||
// https://www.w3.org/TR/html-aria/#el-hgroup
|
// https://www.w3.org/TR/html-aria/#el-hgroup
|
||||||
if (local_name() == TagNames::hgroup)
|
if (local_name() == TagNames::hgroup)
|
||||||
return DOM::ARIARoleNames::generic;
|
return DOM::ARIARoles::Role::generic;
|
||||||
// https://www.w3.org/TR/html-aria/#el-i
|
// https://www.w3.org/TR/html-aria/#el-i
|
||||||
if (local_name() == TagNames::i)
|
if (local_name() == TagNames::i)
|
||||||
return DOM::ARIARoleNames::generic;
|
return DOM::ARIARoles::Role::generic;
|
||||||
// https://www.w3.org/TR/html-aria/#el-main
|
// https://www.w3.org/TR/html-aria/#el-main
|
||||||
if (local_name() == TagNames::main)
|
if (local_name() == TagNames::main)
|
||||||
return DOM::ARIARoleNames::main;
|
return DOM::ARIARoles::Role::main;
|
||||||
// https://www.w3.org/TR/html-aria/#el-nav
|
// https://www.w3.org/TR/html-aria/#el-nav
|
||||||
if (local_name() == TagNames::nav)
|
if (local_name() == TagNames::nav)
|
||||||
return DOM::ARIARoleNames::navigation;
|
return DOM::ARIARoles::Role::navigation;
|
||||||
// https://www.w3.org/TR/html-aria/#el-samp
|
// https://www.w3.org/TR/html-aria/#el-samp
|
||||||
if (local_name() == TagNames::samp)
|
if (local_name() == TagNames::samp)
|
||||||
return DOM::ARIARoleNames::generic;
|
return DOM::ARIARoles::Role::generic;
|
||||||
// https://www.w3.org/TR/html-aria/#el-section
|
// https://www.w3.org/TR/html-aria/#el-section
|
||||||
if (local_name() == TagNames::section) {
|
if (local_name() == TagNames::section) {
|
||||||
// TODO: role=region if the section element has an accessible name
|
// TODO: role=region if the section element has an accessible name
|
||||||
// Otherwise, no corresponding role
|
// Otherwise, no corresponding role
|
||||||
return DOM::ARIARoleNames::region;
|
return DOM::ARIARoles::Role::region;
|
||||||
}
|
}
|
||||||
// https://www.w3.org/TR/html-aria/#el-small
|
// https://www.w3.org/TR/html-aria/#el-small
|
||||||
if (local_name() == TagNames::small)
|
if (local_name() == TagNames::small)
|
||||||
return DOM::ARIARoleNames::generic;
|
return DOM::ARIARoles::Role::generic;
|
||||||
// https://www.w3.org/TR/html-aria/#el-strong
|
// https://www.w3.org/TR/html-aria/#el-strong
|
||||||
if (local_name() == TagNames::strong)
|
if (local_name() == TagNames::strong)
|
||||||
return DOM::ARIARoleNames::strong;
|
return DOM::ARIARoles::Role::strong;
|
||||||
// https://www.w3.org/TR/html-aria/#el-sub
|
// https://www.w3.org/TR/html-aria/#el-sub
|
||||||
if (local_name() == TagNames::sub)
|
if (local_name() == TagNames::sub)
|
||||||
return DOM::ARIARoleNames::subscript;
|
return DOM::ARIARoles::Role::subscript;
|
||||||
// https://www.w3.org/TR/html-aria/#el-summary
|
// https://www.w3.org/TR/html-aria/#el-summary
|
||||||
if (local_name() == TagNames::summary)
|
if (local_name() == TagNames::summary)
|
||||||
return DOM::ARIARoleNames::button;
|
return DOM::ARIARoles::Role::button;
|
||||||
// https://www.w3.org/TR/html-aria/#el-sup
|
// https://www.w3.org/TR/html-aria/#el-sup
|
||||||
if (local_name() == TagNames::sup)
|
if (local_name() == TagNames::sup)
|
||||||
return DOM::ARIARoleNames::superscript;
|
return DOM::ARIARoles::Role::superscript;
|
||||||
// https://www.w3.org/TR/html-aria/#el-u
|
// https://www.w3.org/TR/html-aria/#el-u
|
||||||
if (local_name() == TagNames::u)
|
if (local_name() == TagNames::u)
|
||||||
return DOM::ARIARoleNames::generic;
|
return DOM::ARIARoles::Role::generic;
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@ public:
|
||||||
// https://html.spec.whatwg.org/multipage/forms.html#category-label
|
// https://html.spec.whatwg.org/multipage/forms.html#category-label
|
||||||
virtual bool is_labelable() const { return false; }
|
virtual bool is_labelable() const { return false; }
|
||||||
|
|
||||||
virtual DeprecatedFlyString default_role() const override;
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
HTMLElement(DOM::Document&, DOM::QualifiedName);
|
HTMLElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/FormAssociatedElement.h>
|
#include <LibWeb/HTML/FormAssociatedElement.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ public:
|
||||||
// https://html.spec.whatwg.org/multipage/forms.html#category-autocapitalize
|
// https://html.spec.whatwg.org/multipage/forms.html#category-autocapitalize
|
||||||
virtual bool is_auto_capitalize_inheriting() const override { return true; }
|
virtual bool is_auto_capitalize_inheriting() const override { return true; }
|
||||||
|
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::group; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::group; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLFieldSetElement(DOM::Document&, DOM::QualifiedName);
|
HTMLFieldSetElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
#include <LibWeb/HTML/HTMLInputElement.h>
|
#include <LibWeb/HTML/HTMLInputElement.h>
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ public:
|
||||||
unsigned length() const;
|
unsigned length() const;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-form
|
// https://www.w3.org/TR/html-aria/#el-form
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::form; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::form; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLFormElement(DOM::Document&, DOM::QualifiedName);
|
HTMLFormElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -18,7 +18,7 @@ public:
|
||||||
virtual ~HTMLHRElement() override;
|
virtual ~HTMLHRElement() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-hr
|
// https://www.w3.org/TR/html-aria/#el-hr
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::separator; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::separator; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLHRElement(DOM::Document&, DOM::QualifiedName);
|
HTMLHRElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -20,7 +20,8 @@ public:
|
||||||
virtual void apply_presentational_hints(CSS::StyleProperties&) const override;
|
virtual void apply_presentational_hints(CSS::StyleProperties&) const override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-h1-h6
|
// https://www.w3.org/TR/html-aria/#el-h1-h6
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::heading; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::heading; }
|
||||||
|
|
||||||
virtual DeprecatedString aria_level() const override
|
virtual DeprecatedString aria_level() const override
|
||||||
{
|
{
|
||||||
// TODO: aria-level = the number in the element's tag name
|
// TODO: aria-level = the number in the element's tag name
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -20,7 +20,7 @@ public:
|
||||||
bool should_use_body_background_properties() const;
|
bool should_use_body_background_properties() const;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-html
|
// https://www.w3.org/TR/html-aria/#el-html
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::document; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::document; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLHtmlElement(DOM::Document&, DOM::QualifiedName);
|
HTMLHtmlElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include <LibGfx/Bitmap.h>
|
#include <LibGfx/Bitmap.h>
|
||||||
#include <LibWeb/CSS/Parser/Parser.h>
|
#include <LibWeb/CSS/Parser/Parser.h>
|
||||||
#include <LibWeb/CSS/StyleComputer.h>
|
#include <LibWeb/CSS/StyleComputer.h>
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/DOM/Document.h>
|
#include <LibWeb/DOM/Document.h>
|
||||||
#include <LibWeb/DOM/Event.h>
|
#include <LibWeb/DOM/Event.h>
|
||||||
#include <LibWeb/HTML/EventNames.h>
|
#include <LibWeb/HTML/EventNames.h>
|
||||||
|
@ -202,14 +202,14 @@ bool HTMLImageElement::complete() const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedFlyString HTMLImageElement::default_role() const
|
Optional<DOM::ARIARoles::Role> HTMLImageElement::default_role() const
|
||||||
{
|
{
|
||||||
// https://www.w3.org/TR/html-aria/#el-img
|
// https://www.w3.org/TR/html-aria/#el-img
|
||||||
// https://www.w3.org/TR/html-aria/#el-img-no-alt
|
// https://www.w3.org/TR/html-aria/#el-img-no-alt
|
||||||
if (alt().is_null() || !alt().is_empty())
|
if (alt().is_null() || !alt().is_empty())
|
||||||
return DOM::ARIARoleNames::img;
|
return DOM::ARIARoles::Role::img;
|
||||||
// https://www.w3.org/TR/html-aria/#el-img-empty-alt
|
// https://www.w3.org/TR/html-aria/#el-img-empty-alt
|
||||||
return DOM::ARIARoleNames::presentation;
|
return DOM::ARIARoles::Role::presentation;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ public:
|
||||||
// https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-complete
|
// https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-complete
|
||||||
bool complete() const;
|
bool complete() const;
|
||||||
|
|
||||||
virtual DeprecatedFlyString default_role() const override;
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLImageElement(DOM::Document&, DOM::QualifiedName);
|
HTMLImageElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -870,32 +870,32 @@ WebIDL::ExceptionOr<void> HTMLInputElement::set_selection_range(u32 start, u32 e
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedFlyString HTMLInputElement::default_role() const
|
Optional<DOM::ARIARoles::Role> HTMLInputElement::default_role() const
|
||||||
{
|
{
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-button
|
// https://www.w3.org/TR/html-aria/#el-input-button
|
||||||
if (type_state() == TypeAttributeState::Button)
|
if (type_state() == TypeAttributeState::Button)
|
||||||
return DOM::ARIARoleNames::button;
|
return DOM::ARIARoles::Role::button;
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-checkbox
|
// https://www.w3.org/TR/html-aria/#el-input-checkbox
|
||||||
if (type_state() == TypeAttributeState::Checkbox)
|
if (type_state() == TypeAttributeState::Checkbox)
|
||||||
return DOM::ARIARoleNames::checkbox;
|
return DOM::ARIARoles::Role::checkbox;
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-email
|
// https://www.w3.org/TR/html-aria/#el-input-email
|
||||||
if (type_state() == TypeAttributeState::Email && attribute("list").is_null())
|
if (type_state() == TypeAttributeState::Email && attribute("list").is_null())
|
||||||
return DOM::ARIARoleNames::textbox;
|
return DOM::ARIARoles::Role::textbox;
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-image
|
// https://www.w3.org/TR/html-aria/#el-input-image
|
||||||
if (type_state() == TypeAttributeState::ImageButton)
|
if (type_state() == TypeAttributeState::ImageButton)
|
||||||
return DOM::ARIARoleNames::button;
|
return DOM::ARIARoles::Role::button;
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-number
|
// https://www.w3.org/TR/html-aria/#el-input-number
|
||||||
if (type_state() == TypeAttributeState::Number)
|
if (type_state() == TypeAttributeState::Number)
|
||||||
return DOM::ARIARoleNames::spinbutton;
|
return DOM::ARIARoles::Role::spinbutton;
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-radio
|
// https://www.w3.org/TR/html-aria/#el-input-radio
|
||||||
if (type_state() == TypeAttributeState::RadioButton)
|
if (type_state() == TypeAttributeState::RadioButton)
|
||||||
return DOM::ARIARoleNames::radio;
|
return DOM::ARIARoles::Role::radio;
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-range
|
// https://www.w3.org/TR/html-aria/#el-input-range
|
||||||
if (type_state() == TypeAttributeState::Range)
|
if (type_state() == TypeAttributeState::Range)
|
||||||
return DOM::ARIARoleNames::slider;
|
return DOM::ARIARoles::Role::slider;
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-reset
|
// https://www.w3.org/TR/html-aria/#el-input-reset
|
||||||
if (type_state() == TypeAttributeState::ResetButton)
|
if (type_state() == TypeAttributeState::ResetButton)
|
||||||
return DOM::ARIARoleNames::button;
|
return DOM::ARIARoles::Role::button;
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-text-list
|
// https://www.w3.org/TR/html-aria/#el-input-text-list
|
||||||
if ((type_state() == TypeAttributeState::Text
|
if ((type_state() == TypeAttributeState::Text
|
||||||
|| type_state() == TypeAttributeState::Search
|
|| type_state() == TypeAttributeState::Search
|
||||||
|
@ -903,22 +903,22 @@ DeprecatedFlyString HTMLInputElement::default_role() const
|
||||||
|| type_state() == TypeAttributeState::URL
|
|| type_state() == TypeAttributeState::URL
|
||||||
|| type_state() == TypeAttributeState::Email)
|
|| type_state() == TypeAttributeState::Email)
|
||||||
&& !attribute("list").is_null())
|
&& !attribute("list").is_null())
|
||||||
return DOM::ARIARoleNames::combobox;
|
return DOM::ARIARoles::Role::combobox;
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-search
|
// https://www.w3.org/TR/html-aria/#el-input-search
|
||||||
if (type_state() == TypeAttributeState::Search && attribute("list").is_null())
|
if (type_state() == TypeAttributeState::Search && attribute("list").is_null())
|
||||||
return DOM::ARIARoleNames::textbox;
|
return DOM::ARIARoles::Role::textbox;
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-submit
|
// https://www.w3.org/TR/html-aria/#el-input-submit
|
||||||
if (type_state() == TypeAttributeState::SubmitButton)
|
if (type_state() == TypeAttributeState::SubmitButton)
|
||||||
return DOM::ARIARoleNames::button;
|
return DOM::ARIARoles::Role::button;
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-tel
|
// https://www.w3.org/TR/html-aria/#el-input-tel
|
||||||
if (type_state() == TypeAttributeState::Telephone)
|
if (type_state() == TypeAttributeState::Telephone)
|
||||||
return DOM::ARIARoleNames::textbox;
|
return DOM::ARIARoles::Role::textbox;
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-text
|
// https://www.w3.org/TR/html-aria/#el-input-text
|
||||||
if (type_state() == TypeAttributeState::Text && attribute("list").is_null())
|
if (type_state() == TypeAttributeState::Text && attribute("list").is_null())
|
||||||
return DOM::ARIARoleNames::textbox;
|
return DOM::ARIARoles::Role::textbox;
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-url
|
// https://www.w3.org/TR/html-aria/#el-input-url
|
||||||
if (type_state() == TypeAttributeState::URL && attribute("list").is_null())
|
if (type_state() == TypeAttributeState::URL && attribute("list").is_null())
|
||||||
return DOM::ARIARoleNames::textbox;
|
return DOM::ARIARoles::Role::textbox;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-color
|
// https://www.w3.org/TR/html-aria/#el-input-color
|
||||||
// https://www.w3.org/TR/html-aria/#el-input-date
|
// https://www.w3.org/TR/html-aria/#el-input-date
|
||||||
|
|
|
@ -120,7 +120,7 @@ public:
|
||||||
// https://html.spec.whatwg.org/multipage/forms.html#category-label
|
// https://html.spec.whatwg.org/multipage/forms.html#category-label
|
||||||
virtual bool is_labelable() const override { return type_state() != TypeAttributeState::Hidden; }
|
virtual bool is_labelable() const override { return type_state() != TypeAttributeState::Hidden; }
|
||||||
|
|
||||||
virtual DeprecatedFlyString default_role() const override;
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLInputElement(DOM::Document&, DOM::QualifiedName);
|
HTMLInputElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -18,7 +18,7 @@ public:
|
||||||
virtual ~HTMLLIElement() override;
|
virtual ~HTMLLIElement() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-li
|
// https://www.w3.org/TR/html-aria/#el-li
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::listitem; };
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::listitem; };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLLIElement(DOM::Document&, DOM::QualifiedName);
|
HTMLLIElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -18,7 +18,7 @@ public:
|
||||||
virtual ~HTMLMenuElement() override;
|
virtual ~HTMLMenuElement() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-menu
|
// https://www.w3.org/TR/html-aria/#el-menu
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::list; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::list; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLMenuElement(DOM::Document&, DOM::QualifiedName);
|
HTMLMenuElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -23,7 +23,7 @@ public:
|
||||||
virtual bool is_labelable() const override { return true; }
|
virtual bool is_labelable() const override { return true; }
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-meter
|
// https://www.w3.org/TR/html-aria/#el-meter
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::meter; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::meter; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLMeterElement(DOM::Document&, DOM::QualifiedName);
|
HTMLMeterElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -23,14 +23,14 @@ void HTMLModElement::initialize(JS::Realm& realm)
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::HTMLModElementPrototype>(realm, "HTMLModElement"));
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::HTMLModElementPrototype>(realm, "HTMLModElement"));
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedFlyString HTMLModElement::default_role() const
|
Optional<DOM::ARIARoles::Role> HTMLModElement::default_role() const
|
||||||
{
|
{
|
||||||
// https://www.w3.org/TR/html-aria/#el-del
|
// https://www.w3.org/TR/html-aria/#el-del
|
||||||
if (local_name() == TagNames::del)
|
if (local_name() == TagNames::del)
|
||||||
return DOM::ARIARoleNames::deletion;
|
return DOM::ARIARoles::Role::deletion;
|
||||||
// https://www.w3.org/TR/html-aria/#el-ins
|
// https://www.w3.org/TR/html-aria/#el-ins
|
||||||
if (local_name() == TagNames::ins)
|
if (local_name() == TagNames::ins)
|
||||||
return DOM::ARIARoleNames::insertion;
|
return DOM::ARIARoles::Role::insertion;
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -17,7 +17,7 @@ class HTMLModElement final : public HTMLElement {
|
||||||
public:
|
public:
|
||||||
virtual ~HTMLModElement() override;
|
virtual ~HTMLModElement() override;
|
||||||
|
|
||||||
virtual DeprecatedFlyString default_role() const override;
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLModElement(DOM::Document&, DOM::QualifiedName);
|
HTMLModElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -18,7 +18,7 @@ public:
|
||||||
virtual ~HTMLOListElement() override;
|
virtual ~HTMLOListElement() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-ol
|
// https://www.w3.org/TR/html-aria/#el-ol
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::list; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::list; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLOListElement(DOM::Document&, DOM::QualifiedName);
|
HTMLOListElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -18,7 +18,7 @@ public:
|
||||||
virtual ~HTMLOptGroupElement() override;
|
virtual ~HTMLOptGroupElement() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-optgroup
|
// https://www.w3.org/TR/html-aria/#el-optgroup
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::group; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::group; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLOptGroupElement(DOM::Document&, DOM::QualifiedName);
|
HTMLOptGroupElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#include <AK/StringBuilder.h>
|
#include <AK/StringBuilder.h>
|
||||||
#include <LibWeb/Bindings/Intrinsics.h>
|
#include <LibWeb/Bindings/Intrinsics.h>
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/DOM/Node.h>
|
#include <LibWeb/DOM/Node.h>
|
||||||
#include <LibWeb/DOM/Text.h>
|
#include <LibWeb/DOM/Text.h>
|
||||||
#include <LibWeb/HTML/HTMLOptGroupElement.h>
|
#include <LibWeb/HTML/HTMLOptGroupElement.h>
|
||||||
|
@ -146,11 +146,11 @@ bool HTMLOptionElement::disabled() const
|
||||||
|| (parent() && is<HTMLOptGroupElement>(parent()) && static_cast<HTMLOptGroupElement const&>(*parent()).has_attribute(AttributeNames::disabled));
|
|| (parent() && is<HTMLOptGroupElement>(parent()) && static_cast<HTMLOptGroupElement const&>(*parent()).has_attribute(AttributeNames::disabled));
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedFlyString HTMLOptionElement::default_role() const
|
Optional<DOM::ARIARoles::Role> HTMLOptionElement::default_role() const
|
||||||
{
|
{
|
||||||
// https://www.w3.org/TR/html-aria/#el-option
|
// https://www.w3.org/TR/html-aria/#el-option
|
||||||
// TODO: Only an option element that is in a list of options or that represents a suggestion in a datalist should return option
|
// TODO: Only an option element that is in a list of options or that represents a suggestion in a datalist should return option
|
||||||
return DOM::ARIARoleNames::option;
|
return DOM::ARIARoles::Role::option;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ public:
|
||||||
|
|
||||||
bool disabled() const;
|
bool disabled() const;
|
||||||
|
|
||||||
virtual DeprecatedFlyString default_role() const override;
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class Bindings::OptionConstructor;
|
friend class Bindings::OptionConstructor;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/FormAssociatedElement.h>
|
#include <LibWeb/HTML/FormAssociatedElement.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ public:
|
||||||
virtual void reset_algorithm() override;
|
virtual void reset_algorithm() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-output
|
// https://www.w3.org/TR/html-aria/#el-output
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::status; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::status; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLOutputElement(DOM::Document&, DOM::QualifiedName);
|
HTMLOutputElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -20,7 +20,7 @@ public:
|
||||||
virtual void apply_presentational_hints(CSS::StyleProperties&) const override;
|
virtual void apply_presentational_hints(CSS::StyleProperties&) const override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-p
|
// https://www.w3.org/TR/html-aria/#el-p
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::paragraph; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::paragraph; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLParagraphElement(DOM::Document&, DOM::QualifiedName);
|
HTMLParagraphElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -18,7 +18,7 @@ public:
|
||||||
virtual ~HTMLPreElement() override;
|
virtual ~HTMLPreElement() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-pre
|
// https://www.w3.org/TR/html-aria/#el-pre
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::generic; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::generic; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLPreElement(DOM::Document&, DOM::QualifiedName);
|
HTMLPreElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -34,7 +34,7 @@ public:
|
||||||
bool using_system_appearance() const;
|
bool using_system_appearance() const;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-progress
|
// https://www.w3.org/TR/html-aria/#el-progress
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::progressbar; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::progressbar; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLProgressElement(DOM::Document&, DOM::QualifiedName);
|
HTMLProgressElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#include <AK/Assertions.h>
|
#include <AK/Assertions.h>
|
||||||
#include <LibWeb/Bindings/Intrinsics.h>
|
#include <LibWeb/Bindings/Intrinsics.h>
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLQuoteElement.h>
|
#include <LibWeb/HTML/HTMLQuoteElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -24,14 +24,14 @@ void HTMLQuoteElement::initialize(JS::Realm& realm)
|
||||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::HTMLQuoteElementPrototype>(realm, "HTMLQuoteElement"));
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::HTMLQuoteElementPrototype>(realm, "HTMLQuoteElement"));
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedFlyString HTMLQuoteElement::default_role() const
|
Optional<DOM::ARIARoles::Role> HTMLQuoteElement::default_role() const
|
||||||
{
|
{
|
||||||
// https://www.w3.org/TR/html-aria/#el-blockquote
|
// https://www.w3.org/TR/html-aria/#el-blockquote
|
||||||
if (local_name() == TagNames::blockquote)
|
if (local_name() == TagNames::blockquote)
|
||||||
return DOM::ARIARoleNames::blockquote;
|
return DOM::ARIARoles::Role::blockquote;
|
||||||
// https://www.w3.org/TR/html-aria/#el-q
|
// https://www.w3.org/TR/html-aria/#el-q
|
||||||
if (local_name() == TagNames::q)
|
if (local_name() == TagNames::q)
|
||||||
return DOM::ARIARoleNames::generic;
|
return DOM::ARIARoles::Role::generic;
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ class HTMLQuoteElement final : public HTMLElement {
|
||||||
public:
|
public:
|
||||||
virtual ~HTMLQuoteElement() override;
|
virtual ~HTMLQuoteElement() override;
|
||||||
|
|
||||||
virtual DeprecatedFlyString default_role() const override;
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLQuoteElement(DOM::Document&, DOM::QualifiedName);
|
HTMLQuoteElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -161,18 +161,18 @@ DeprecatedString const& HTMLSelectElement::type() const
|
||||||
return select_multiple;
|
return select_multiple;
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedFlyString HTMLSelectElement::default_role() const
|
Optional<DOM::ARIARoles::Role> HTMLSelectElement::default_role() const
|
||||||
{
|
{
|
||||||
// https://www.w3.org/TR/html-aria/#el-select-multiple-or-size-greater-1
|
// https://www.w3.org/TR/html-aria/#el-select-multiple-or-size-greater-1
|
||||||
if (has_attribute("multiple"))
|
if (has_attribute("multiple"))
|
||||||
return DOM::ARIARoleNames::listbox;
|
return DOM::ARIARoles::Role::listbox;
|
||||||
if (has_attribute("size")) {
|
if (has_attribute("size")) {
|
||||||
auto size_attribute = attribute("size").to_int();
|
auto size_attribute = attribute("size").to_int();
|
||||||
if (size_attribute.has_value() && size_attribute.value() > 1)
|
if (size_attribute.has_value() && size_attribute.value() > 1)
|
||||||
return DOM::ARIARoleNames::listbox;
|
return DOM::ARIARoles::Role::listbox;
|
||||||
}
|
}
|
||||||
// https://www.w3.org/TR/html-aria/#el-select
|
// https://www.w3.org/TR/html-aria/#el-select
|
||||||
return DOM::ARIARoleNames::combobox;
|
return DOM::ARIARoles::Role::combobox;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ public:
|
||||||
|
|
||||||
DeprecatedString const& type() const;
|
DeprecatedString const& type() const;
|
||||||
|
|
||||||
virtual DeprecatedFlyString default_role() const override;
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLSelectElement(DOM::Document&, DOM::QualifiedName);
|
HTMLSelectElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -18,7 +18,7 @@ public:
|
||||||
virtual ~HTMLSpanElement() override;
|
virtual ~HTMLSpanElement() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-span
|
// https://www.w3.org/TR/html-aria/#el-span
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::generic; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::generic; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLSpanElement(DOM::Document&, DOM::QualifiedName);
|
HTMLSpanElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -20,7 +20,7 @@ public:
|
||||||
virtual void apply_presentational_hints(CSS::StyleProperties&) const override;
|
virtual void apply_presentational_hints(CSS::StyleProperties&) const override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-caption
|
// https://www.w3.org/TR/html-aria/#el-caption
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::caption; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::caption; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLTableCaptionElement(DOM::Document&, DOM::QualifiedName);
|
HTMLTableCaptionElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -74,7 +74,7 @@ void HTMLTableCellElement::set_row_span(unsigned int value)
|
||||||
MUST(set_attribute(HTML::AttributeNames::rowspan, DeprecatedString::number(value)));
|
MUST(set_attribute(HTML::AttributeNames::rowspan, DeprecatedString::number(value)));
|
||||||
}
|
}
|
||||||
|
|
||||||
DeprecatedFlyString HTMLTableCellElement::default_role() const
|
Optional<DOM::ARIARoles::Role> HTMLTableCellElement::default_role() const
|
||||||
{
|
{
|
||||||
// TODO: For td:
|
// TODO: For td:
|
||||||
// role=cell if the ancestor table element is exposed as a role=table
|
// role=cell if the ancestor table element is exposed as a role=table
|
||||||
|
|
|
@ -22,7 +22,7 @@ public:
|
||||||
void set_col_span(unsigned);
|
void set_col_span(unsigned);
|
||||||
void set_row_span(unsigned);
|
void set_row_span(unsigned);
|
||||||
|
|
||||||
virtual DeprecatedFlyString default_role() const override;
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLTableCellElement(DOM::Document&, DOM::QualifiedName);
|
HTMLTableCellElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -43,7 +43,7 @@ public:
|
||||||
WebIDL::ExceptionOr<void> delete_row(long index);
|
WebIDL::ExceptionOr<void> delete_row(long index);
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-table
|
// https://www.w3.org/TR/html-aria/#el-table
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::table; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::table; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLTableElement(DOM::Document&, DOM::QualifiedName);
|
HTMLTableElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -25,7 +25,7 @@ public:
|
||||||
WebIDL::ExceptionOr<void> delete_cell(i32 index);
|
WebIDL::ExceptionOr<void> delete_cell(i32 index);
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-tr
|
// https://www.w3.org/TR/html-aria/#el-tr
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::row; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::row; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLTableRowElement(DOM::Document&, DOM::QualifiedName);
|
HTMLTableRowElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -25,7 +25,7 @@ public:
|
||||||
// https://www.w3.org/TR/html-aria/#el-tbody
|
// https://www.w3.org/TR/html-aria/#el-tbody
|
||||||
// https://www.w3.org/TR/html-aria/#el-tfoot
|
// https://www.w3.org/TR/html-aria/#el-tfoot
|
||||||
// https://www.w3.org/TR/html-aria/#el-thead
|
// https://www.w3.org/TR/html-aria/#el-thead
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::rowgroup; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::rowgroup; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLTableSectionElement(DOM::Document&, DOM::QualifiedName);
|
HTMLTableSectionElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/FormAssociatedElement.h>
|
#include <LibWeb/HTML/FormAssociatedElement.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ public:
|
||||||
virtual void reset_algorithm() override;
|
virtual void reset_algorithm() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-textarea
|
// https://www.w3.org/TR/html-aria/#el-textarea
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::textbox; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::textbox; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLTextAreaElement(DOM::Document&, DOM::QualifiedName);
|
HTMLTextAreaElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -18,7 +18,7 @@ public:
|
||||||
virtual ~HTMLTimeElement() override;
|
virtual ~HTMLTimeElement() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-time
|
// https://www.w3.org/TR/html-aria/#el-time
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::time; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::time; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLTimeElement(DOM::Document&, DOM::QualifiedName);
|
HTMLTimeElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibWeb/DOM/ARIARoleNames.h>
|
#include <LibWeb/DOM/ARIARoles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
@ -18,7 +18,7 @@ public:
|
||||||
virtual ~HTMLUListElement() override;
|
virtual ~HTMLUListElement() override;
|
||||||
|
|
||||||
// https://www.w3.org/TR/html-aria/#el-ul
|
// https://www.w3.org/TR/html-aria/#el-ul
|
||||||
virtual DeprecatedFlyString default_role() const override { return DOM::ARIARoleNames::list; }
|
virtual Optional<DOM::ARIARoles::Role> default_role() const override { return DOM::ARIARoles::Role::list; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLUListElement(DOM::Document&, DOM::QualifiedName);
|
HTMLUListElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
|
@ -1253,7 +1253,9 @@ Messages::WebDriverClient::GetComputedRoleResponse WebDriverConnection::get_comp
|
||||||
auto role = element->role_or_default();
|
auto role = element->role_or_default();
|
||||||
|
|
||||||
// 5. Return success with data role.
|
// 5. Return success with data role.
|
||||||
return DeprecatedString { role };
|
if (role.has_value())
|
||||||
|
return Web::DOM::ARIARoles::role_name(*role);
|
||||||
|
return ""sv;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 12.5.1 Element Click, https://w3c.github.io/webdriver/#element-click
|
// 12.5.1 Element Click, https://w3c.github.io/webdriver/#element-click
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue