1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 19:38:12 +00:00

LibWeb: Add spec comments to Event

This commit is contained in:
stelar7 2022-04-19 23:58:24 +02:00 committed by Andreas Kling
parent 6b859db2e0
commit 8055b0a9b9

View file

@ -12,21 +12,30 @@
namespace Web::DOM {
// https://dom.spec.whatwg.org/#concept-event-path-append
void Event::append_to_path(EventTarget& invocation_target, RefPtr<EventTarget> shadow_adjusted_target, RefPtr<EventTarget> related_target, TouchTargetList& touch_targets, bool slot_in_closed_tree)
{
// 1. Let invocationTargetInShadowTree be false.
bool invocation_target_in_shadow_tree = false;
// 3. Let root-of-closed-tree be false.
bool root_of_closed_tree = false;
// 2. If invocationTarget is a node and its root is a shadow root, then set invocationTargetInShadowTree to true.
if (is<Node>(invocation_target)) {
auto& invocation_target_node = verify_cast<Node>(invocation_target);
if (is<ShadowRoot>(invocation_target_node.root()))
invocation_target_in_shadow_tree = true;
if (is<ShadowRoot>(invocation_target_node)) {
auto& invocation_target_shadow_root = verify_cast<ShadowRoot>(invocation_target_node);
// 4. If invocationTarget is a shadow root whose mode is "closed", then set root-of-closed-tree to true.
root_of_closed_tree = invocation_target_shadow_root.closed();
}
}
// 5. Append a new struct to events path whose invocation target is invocationTarget, invocation-target-in-shadow-tree is invocationTargetInShadowTree,
// shadow-adjusted target is shadowAdjustedTarget, relatedTarget is relatedTarget, touch target list is touchTargets, root-of-closed-tree is root-of-closed-tree,
// and slot-in-closed-tree is slot-in-closed-tree.
m_path.append({ invocation_target, invocation_target_in_shadow_tree, shadow_adjusted_target, related_target, touch_targets, root_of_closed_tree, slot_in_closed_tree, m_path.size() });
}
@ -39,23 +48,38 @@ void Event::set_cancelled_flag()
// https://dom.spec.whatwg.org/#concept-event-initialize
void Event::initialize(String const& type, bool bubbles, bool cancelable)
{
// 1. Set events initialized flag.
m_initialized = true;
// 2. Unset events stop propagation flag, stop immediate propagation flag, and canceled flag.
m_stop_propagation = false;
m_stop_immediate_propagation = false;
m_cancelled = false;
// 3. Set events isTrusted attribute to false.
m_is_trusted = false;
// 4. Set events target to null.
m_target = nullptr;
// 5. Set events type attribute to type.
m_type = type;
// 6. Set events bubbles attribute to bubbles.
m_bubbles = bubbles;
// 8. Set events cancelable attribute to cancelable.
m_cancelable = cancelable;
}
// https://dom.spec.whatwg.org/#dom-event-initevent
void Event::init_event(String const& type, bool bubbles, bool cancelable)
{
// 1. If thiss dispatch flag is set, then return.
if (m_dispatch)
return;
// 2. Initialize this with type, bubbles, and cancelable.
initialize(type, bubbles, cancelable);
}