1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-02 22:02:12 +00:00

LibWeb: Implement HTMLDetailsElement's open attribute closer to the spec

The spec now has a "toggle task tracker" to coalesce rapid changes to
this attribute. It also now has an explicit ToggleEvent to encapsulate
the old and new state of the element.

This further handles the attribute being added/removed using a override
of Element::attribute_changed(), rather than being the only element to
instead override Element::set/remove__attribute().
This commit is contained in:
Timothy Flynn 2023-08-31 13:53:17 -04:00 committed by Andreas Kling
parent 153ae93f9c
commit 8bb5652835
4 changed files with 92 additions and 40 deletions

View file

@ -0,0 +1,25 @@
/*
* Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/Optional.h>
#include <AK/String.h>
#include <LibWeb/HTML/EventLoop/Task.h>
namespace Web::HTML {
// https://html.spec.whatwg.org/multipage/interaction.html#toggle-task-tracker
struct ToggleTaskTracker {
// https://html.spec.whatwg.org/multipage/interaction.html#toggle-task-task
// NOTE: We store the task's ID rather than the task itself to avoid ownership issues.
Optional<int> task_id;
// https://html.spec.whatwg.org/multipage/interaction.html#toggle-task-old-state
String old_state;
};
}