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

LibWeb: Add Animation event handler attributes

This commit is contained in:
Matthew Olsson 2024-02-10 20:51:54 -07:00 committed by Andreas Kling
parent 2dd5d0c310
commit d2cfea5acc
3 changed files with 46 additions and 3 deletions

View file

@ -359,6 +359,42 @@ void Animation::set_replace_state(Bindings::AnimationReplaceState value)
}
}
// https://www.w3.org/TR/web-animations-1/#dom-animation-onfinish
JS::GCPtr<WebIDL::CallbackType> Animation::onfinish()
{
return event_handler_attribute(HTML::EventNames::finish);
}
// https://www.w3.org/TR/web-animations-1/#dom-animation-onfinish
void Animation::set_onfinish(JS::GCPtr<WebIDL::CallbackType> event_handler)
{
set_event_handler_attribute(HTML::EventNames::finish, event_handler);
}
// https://www.w3.org/TR/web-animations-1/#dom-animation-oncancel
JS::GCPtr<WebIDL::CallbackType> Animation::oncancel()
{
return event_handler_attribute(HTML::EventNames::cancel);
}
// https://www.w3.org/TR/web-animations-1/#dom-animation-oncancel
void Animation::set_oncancel(JS::GCPtr<WebIDL::CallbackType> event_handler)
{
set_event_handler_attribute(HTML::EventNames::cancel, event_handler);
}
// https://www.w3.org/TR/web-animations-1/#dom-animation-onremove
JS::GCPtr<WebIDL::CallbackType> Animation::onremove()
{
return event_handler_attribute(HTML::EventNames::remove);
}
// https://www.w3.org/TR/web-animations-1/#dom-animation-onremove
void Animation::set_onremove(JS::GCPtr<WebIDL::CallbackType> event_handler)
{
set_event_handler_attribute(HTML::EventNames::remove, event_handler);
}
// https://www.w3.org/TR/web-animations-1/#dom-animation-cancel
void Animation::cancel()
{

View file

@ -66,6 +66,13 @@ public:
JS::NonnullGCPtr<JS::Object> finished() const { return *current_finished_promise()->promise(); }
bool is_finished() const { return m_is_finished; }
JS::GCPtr<WebIDL::CallbackType> onfinish();
void set_onfinish(JS::GCPtr<WebIDL::CallbackType>);
JS::GCPtr<WebIDL::CallbackType> oncancel();
void set_oncancel(JS::GCPtr<WebIDL::CallbackType>);
JS::GCPtr<WebIDL::CallbackType> onremove();
void set_onremove(JS::GCPtr<WebIDL::CallbackType>);
enum class AutoRewind {
Yes,
No,

View file

@ -20,9 +20,9 @@ interface Animation : EventTarget {
readonly attribute Promise<Animation> ready;
readonly attribute Promise<Animation> finished;
// FIXME: attribute EventHandler onfinish;
// FIXME: attribute EventHandler oncancel;
// FIXME: attribute EventHandler onremove;
attribute EventHandler onfinish;
attribute EventHandler oncancel;
attribute EventHandler onremove;
undefined cancel();
undefined finish();