Просмотр исходного кода

LibWeb: Add Animation event handler attributes

Matthew Olsson 1 год назад
Родитель
Сommit
d2cfea5acc

+ 36 - 0
Userland/Libraries/LibWeb/Animations/Animation.cpp

@@ -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()
 {

+ 7 - 0
Userland/Libraries/LibWeb/Animations/Animation.h

@@ -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,

+ 3 - 3
Userland/Libraries/LibWeb/Animations/Animation.idl

@@ -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();