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;
};