diff --git a/Userland/Libraries/LibWeb/HTML/EventNames.h b/Userland/Libraries/LibWeb/HTML/EventNames.h index f9cb286a64..dda9ee49aa 100644 --- a/Userland/Libraries/LibWeb/HTML/EventNames.h +++ b/Userland/Libraries/LibWeb/HTML/EventNames.h @@ -105,6 +105,7 @@ namespace Web::HTML::EventNames { __ENUMERATE_HTML_EVENT(statechange) \ __ENUMERATE_HTML_EVENT(storage) \ __ENUMERATE_HTML_EVENT(submit) \ + __ENUMERATE_HTML_EVENT(success) \ __ENUMERATE_HTML_EVENT(suspend) \ __ENUMERATE_HTML_EVENT(timeupdate) \ __ENUMERATE_HTML_EVENT(toggle) \ diff --git a/Userland/Libraries/LibWeb/IndexedDB/IDBRequest.cpp b/Userland/Libraries/LibWeb/IndexedDB/IDBRequest.cpp index 1f8264eeb8..aeadb43745 100644 --- a/Userland/Libraries/LibWeb/IndexedDB/IDBRequest.cpp +++ b/Userland/Libraries/LibWeb/IndexedDB/IDBRequest.cpp @@ -1,11 +1,13 @@ /* * Copyright (c) 2024, Shannon Booth + * Copyright (c) 2024, Jamie Mansfield * * SPDX-License-Identifier: BSD-2-Clause */ #include #include +#include #include namespace Web::IndexedDB { @@ -25,4 +27,16 @@ void IDBRequest::initialize(JS::Realm& realm) WEB_SET_PROTOTYPE_FOR_INTERFACE(IDBRequest); } +// https://w3c.github.io/IndexedDB/#dom-idbrequest-onsuccess +void IDBRequest::set_onsuccess(WebIDL::CallbackType* event_handler) +{ + set_event_handler_attribute(HTML::EventNames::success, event_handler); +} + +// https://w3c.github.io/IndexedDB/#dom-idbrequest-onsuccess +WebIDL::CallbackType* IDBRequest::onsuccess() +{ + return event_handler_attribute(HTML::EventNames::success); +} + } diff --git a/Userland/Libraries/LibWeb/IndexedDB/IDBRequest.h b/Userland/Libraries/LibWeb/IndexedDB/IDBRequest.h index b740a299ba..858933c5fd 100644 --- a/Userland/Libraries/LibWeb/IndexedDB/IDBRequest.h +++ b/Userland/Libraries/LibWeb/IndexedDB/IDBRequest.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2024, Shannon Booth + * Copyright (c) 2024, Jamie Mansfield * * SPDX-License-Identifier: BSD-2-Clause */ @@ -17,6 +18,9 @@ class IDBRequest : public DOM::EventTarget { public: virtual ~IDBRequest() override; + void set_onsuccess(WebIDL::CallbackType*); + WebIDL::CallbackType* onsuccess(); + protected: explicit IDBRequest(JS::Realm&); diff --git a/Userland/Libraries/LibWeb/IndexedDB/IDBRequest.idl b/Userland/Libraries/LibWeb/IndexedDB/IDBRequest.idl index dc6b43edf5..934fb4ed62 100644 --- a/Userland/Libraries/LibWeb/IndexedDB/IDBRequest.idl +++ b/Userland/Libraries/LibWeb/IndexedDB/IDBRequest.idl @@ -10,7 +10,7 @@ interface IDBRequest : EventTarget { [FIXME] readonly attribute IDBRequestReadyState readyState; // Event handlers: - [FIXME] attribute EventHandler onsuccess; + attribute EventHandler onsuccess; [FIXME] attribute EventHandler onerror; };