mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 11:27:34 +00:00
LibWeb: Use is_ascii_case_insensitive_match() where the spec says to
This commit is contained in:
parent
f0b72b819e
commit
2026ea557e
10 changed files with 59 additions and 44 deletions
|
@ -63,6 +63,7 @@
|
|||
#include <LibWeb/HTML/Window.h>
|
||||
#include <LibWeb/HTML/WindowProxy.h>
|
||||
#include <LibWeb/HighResolutionTime/TimeOrigin.h>
|
||||
#include <LibWeb/Infra/Strings.h>
|
||||
#include <LibWeb/Layout/BlockFormattingContext.h>
|
||||
#include <LibWeb/Layout/InitialContainingBlock.h>
|
||||
#include <LibWeb/Layout/TreeBuilder.h>
|
||||
|
@ -1270,42 +1271,44 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Event>> Document::create_event(DeprecatedSt
|
|||
|
||||
// 2. If interface is an ASCII case-insensitive match for any of the strings in the first column in the following table,
|
||||
// then set constructor to the interface in the second column on the same row as the matching string:
|
||||
auto interface_lowercase = interface.to_lowercase();
|
||||
if (interface_lowercase == "beforeunloadevent") {
|
||||
if (Infra::is_ascii_case_insensitive_match(interface, "beforeunloadevent"sv)) {
|
||||
event = TRY(Event::create(realm, "")); // FIXME: Create BeforeUnloadEvent
|
||||
} else if (interface_lowercase == "compositionevent") {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "compositionevent"sv)) {
|
||||
event = TRY(Event::create(realm, "")); // FIXME: Create CompositionEvent
|
||||
} else if (interface_lowercase == "customevent") {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "customevent"sv)) {
|
||||
event = TRY(CustomEvent::create(realm, ""));
|
||||
} else if (interface_lowercase == "devicemotionevent") {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "devicemotionevent"sv)) {
|
||||
event = TRY(Event::create(realm, "")); // FIXME: Create DeviceMotionEvent
|
||||
} else if (interface_lowercase == "deviceorientationevent") {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "deviceorientationevent"sv)) {
|
||||
event = TRY(Event::create(realm, "")); // FIXME: Create DeviceOrientationEvent
|
||||
} else if (interface_lowercase == "dragevent") {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "dragevent"sv)) {
|
||||
event = TRY(Event::create(realm, "")); // FIXME: Create DragEvent
|
||||
} else if (interface_lowercase.is_one_of("event", "events")) {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "event"sv)
|
||||
|| Infra::is_ascii_case_insensitive_match(interface, "events"sv)) {
|
||||
event = TRY(Event::create(realm, ""));
|
||||
} else if (interface_lowercase == "focusevent") {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "focusevent"sv)) {
|
||||
event = UIEvents::FocusEvent::create(realm, "");
|
||||
} else if (interface_lowercase == "hashchangeevent") {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "hashchangeevent"sv)) {
|
||||
event = TRY(Event::create(realm, "")); // FIXME: Create HashChangeEvent
|
||||
} else if (interface_lowercase == "htmlevents") {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "htmlevents"sv)) {
|
||||
event = TRY(Event::create(realm, ""));
|
||||
} else if (interface_lowercase == "keyboardevent") {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "keyboardevent"sv)) {
|
||||
event = UIEvents::KeyboardEvent::create(realm, "");
|
||||
} else if (interface_lowercase == "messageevent") {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "messageevent"sv)) {
|
||||
event = TRY(HTML::MessageEvent::create(realm, ""));
|
||||
} else if (interface_lowercase.is_one_of("mouseevent", "mouseevents")) {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "mouseevent"sv)
|
||||
|| Infra::is_ascii_case_insensitive_match(interface, "mouseevents"sv)) {
|
||||
event = TRY(UIEvents::MouseEvent::create(realm, ""));
|
||||
} else if (interface_lowercase == "storageevent") {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "storageevent"sv)) {
|
||||
event = TRY(Event::create(realm, "")); // FIXME: Create StorageEvent
|
||||
} else if (interface_lowercase == "svgevents") {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "svgevents"sv)) {
|
||||
event = TRY(Event::create(realm, ""));
|
||||
} else if (interface_lowercase == "textevent") {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "textevent"sv)) {
|
||||
event = TRY(Event::create(realm, "")); // FIXME: Create CompositionEvent
|
||||
} else if (interface_lowercase == "touchevent") {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "touchevent"sv)) {
|
||||
event = TRY(Event::create(realm, "")); // FIXME: Create TouchEvent
|
||||
} else if (interface_lowercase.is_one_of("uievent", "uievents")) {
|
||||
} else if (Infra::is_ascii_case_insensitive_match(interface, "uievent"sv)
|
||||
|| Infra::is_ascii_case_insensitive_match(interface, "uievents"sv)) {
|
||||
event = UIEvents::UIEvent::create(realm, "");
|
||||
}
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include <LibWeb/HTML/HTMLTextAreaElement.h>
|
||||
#include <LibWeb/HTML/Parser/HTMLParser.h>
|
||||
#include <LibWeb/Infra/CharacterTypes.h>
|
||||
#include <LibWeb/Infra/Strings.h>
|
||||
#include <LibWeb/Layout/BlockContainer.h>
|
||||
#include <LibWeb/Layout/InitialContainingBlock.h>
|
||||
#include <LibWeb/Layout/InlineNode.h>
|
||||
|
@ -1121,7 +1122,8 @@ WebIDL::ExceptionOr<void> Element::insert_adjacent_html(DeprecatedString positio
|
|||
// 1. Use the first matching item from this list:
|
||||
// - If position is an ASCII case-insensitive match for the string "beforebegin"
|
||||
// - If position is an ASCII case-insensitive match for the string "afterend"
|
||||
if (position.equals_ignoring_case("beforebegin"sv) || position.equals_ignoring_case("afterend"sv)) {
|
||||
if (Infra::is_ascii_case_insensitive_match(position, "beforebegin"sv)
|
||||
|| Infra::is_ascii_case_insensitive_match(position, "afterend"sv)) {
|
||||
// Let context be the context object's parent.
|
||||
context = this->parent();
|
||||
|
||||
|
@ -1131,7 +1133,8 @@ WebIDL::ExceptionOr<void> Element::insert_adjacent_html(DeprecatedString positio
|
|||
}
|
||||
// - If position is an ASCII case-insensitive match for the string "afterbegin"
|
||||
// - If position is an ASCII case-insensitive match for the string "beforeend"
|
||||
else if (position.equals_ignoring_case("afterbegin"sv) || position.equals_ignoring_case("beforeend"sv)) {
|
||||
else if (Infra::is_ascii_case_insensitive_match(position, "afterbegin"sv)
|
||||
|| Infra::is_ascii_case_insensitive_match(position, "beforeend"sv)) {
|
||||
// Let context be the context object.
|
||||
context = this;
|
||||
}
|
||||
|
@ -1162,25 +1165,25 @@ WebIDL::ExceptionOr<void> Element::insert_adjacent_html(DeprecatedString positio
|
|||
// 4. Use the first matching item from this list:
|
||||
|
||||
// - If position is an ASCII case-insensitive match for the string "beforebegin"
|
||||
if (position.equals_ignoring_case("beforebegin"sv)) {
|
||||
if (Infra::is_ascii_case_insensitive_match(position, "beforebegin"sv)) {
|
||||
// Insert fragment into the context object's parent before the context object.
|
||||
parent()->insert_before(fragment, this);
|
||||
}
|
||||
|
||||
// - If position is an ASCII case-insensitive match for the string "afterbegin"
|
||||
else if (position.equals_ignoring_case("afterbegin"sv)) {
|
||||
else if (Infra::is_ascii_case_insensitive_match(position, "afterbegin"sv)) {
|
||||
// Insert fragment into the context object before its first child.
|
||||
insert_before(fragment, first_child());
|
||||
}
|
||||
|
||||
// - If position is an ASCII case-insensitive match for the string "beforeend"
|
||||
else if (position.equals_ignoring_case("beforeend"sv)) {
|
||||
else if (Infra::is_ascii_case_insensitive_match(position, "beforeend"sv)) {
|
||||
// Append fragment to the context object.
|
||||
TRY(append_child(fragment));
|
||||
}
|
||||
|
||||
// - If position is an ASCII case-insensitive match for the string "afterend"
|
||||
else if (position.equals_ignoring_case("afterend"sv)) {
|
||||
else if (Infra::is_ascii_case_insensitive_match(position, "afterend"sv)) {
|
||||
// Insert fragment into the context object's parent before the context object's next sibling.
|
||||
parent()->insert_before(fragment, next_sibling());
|
||||
}
|
||||
|
@ -1191,7 +1194,7 @@ WebIDL::ExceptionOr<void> Element::insert_adjacent_html(DeprecatedString positio
|
|||
WebIDL::ExceptionOr<JS::GCPtr<Node>> Element::insert_adjacent(DeprecatedString const& where, JS::NonnullGCPtr<Node> node)
|
||||
{
|
||||
// To insert adjacent, given an element element, string where, and a node node, run the steps associated with the first ASCII case-insensitive match for where:
|
||||
if (where.equals_ignoring_case("beforebegin"sv)) {
|
||||
if (Infra::is_ascii_case_insensitive_match(where, "beforebegin"sv)) {
|
||||
// -> "beforebegin"
|
||||
// If element’s parent is null, return null.
|
||||
if (!parent())
|
||||
|
@ -1201,19 +1204,19 @@ WebIDL::ExceptionOr<JS::GCPtr<Node>> Element::insert_adjacent(DeprecatedString c
|
|||
return JS::GCPtr<Node> { TRY(parent()->pre_insert(move(node), this)) };
|
||||
}
|
||||
|
||||
if (where.equals_ignoring_case("afterbegin"sv)) {
|
||||
if (Infra::is_ascii_case_insensitive_match(where, "afterbegin"sv)) {
|
||||
// -> "afterbegin"
|
||||
// Return the result of pre-inserting node into element before element’s first child.
|
||||
return JS::GCPtr<Node> { TRY(pre_insert(move(node), first_child())) };
|
||||
}
|
||||
|
||||
if (where.equals_ignoring_case("beforeend"sv)) {
|
||||
if (Infra::is_ascii_case_insensitive_match(where, "beforeend"sv)) {
|
||||
// -> "beforeend"
|
||||
// Return the result of pre-inserting node into element before null.
|
||||
return JS::GCPtr<Node> { TRY(pre_insert(move(node), nullptr)) };
|
||||
}
|
||||
|
||||
if (where.equals_ignoring_case("afterend"sv)) {
|
||||
if (Infra::is_ascii_case_insensitive_match(where, "afterend"sv)) {
|
||||
// -> "afterend"
|
||||
// If element’s parent is null, return null.
|
||||
if (!parent())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue