diff --git a/Userland/Libraries/LibWeb/HTML/EventNames.h b/Userland/Libraries/LibWeb/HTML/EventNames.h
index 02990c5279..9f8c2f0cd8 100644
--- a/Userland/Libraries/LibWeb/HTML/EventNames.h
+++ b/Userland/Libraries/LibWeb/HTML/EventNames.h
@@ -24,6 +24,7 @@ namespace Web::HTML::EventNames {
__ENUMERATE_HTML_EVENT(afterprint) \
__ENUMERATE_HTML_EVENT(beforeprint) \
__ENUMERATE_HTML_EVENT(beforeunload) \
+ __ENUMERATE_HTML_EVENT(blocked) \
__ENUMERATE_HTML_EVENT(blur) \
__ENUMERATE_HTML_EVENT(cancel) \
__ENUMERATE_HTML_EVENT(canplay) \
diff --git a/Userland/Libraries/LibWeb/IndexedDB/IDBOpenDBRequest.cpp b/Userland/Libraries/LibWeb/IndexedDB/IDBOpenDBRequest.cpp
index ecb4f9a0ea..827bd70648 100644
--- a/Userland/Libraries/LibWeb/IndexedDB/IDBOpenDBRequest.cpp
+++ b/Userland/Libraries/LibWeb/IndexedDB/IDBOpenDBRequest.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 IDBOpenDBRequest::initialize(JS::Realm& realm)
WEB_SET_PROTOTYPE_FOR_INTERFACE(IDBOpenDBRequest);
}
+// https://w3c.github.io/IndexedDB/#dom-idbopendbrequest-onblocked
+void IDBOpenDBRequest::set_onblocked(WebIDL::CallbackType* event_handler)
+{
+ set_event_handler_attribute(HTML::EventNames::blocked, event_handler);
+}
+
+// https://w3c.github.io/IndexedDB/#dom-idbopendbrequest-onblocked
+WebIDL::CallbackType* IDBOpenDBRequest::onblocked()
+{
+ return event_handler_attribute(HTML::EventNames::blocked);
+}
+
}
diff --git a/Userland/Libraries/LibWeb/IndexedDB/IDBOpenDBRequest.h b/Userland/Libraries/LibWeb/IndexedDB/IDBOpenDBRequest.h
index 5fa6903f42..6055ff5d15 100644
--- a/Userland/Libraries/LibWeb/IndexedDB/IDBOpenDBRequest.h
+++ b/Userland/Libraries/LibWeb/IndexedDB/IDBOpenDBRequest.h
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2024, Shannon Booth
+ * Copyright (c) 2024, Jamie Mansfield
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -18,6 +19,9 @@ class IDBOpenDBRequest : public IDBRequest {
public:
virtual ~IDBOpenDBRequest();
+ void set_onblocked(WebIDL::CallbackType*);
+ WebIDL::CallbackType* onblocked();
+
protected:
explicit IDBOpenDBRequest(JS::Realm&);
diff --git a/Userland/Libraries/LibWeb/IndexedDB/IDBOpenDBRequest.idl b/Userland/Libraries/LibWeb/IndexedDB/IDBOpenDBRequest.idl
index dd1f05cb4f..51c7787cfb 100644
--- a/Userland/Libraries/LibWeb/IndexedDB/IDBOpenDBRequest.idl
+++ b/Userland/Libraries/LibWeb/IndexedDB/IDBOpenDBRequest.idl
@@ -4,6 +4,6 @@
[Exposed=(Window,Worker)]
interface IDBOpenDBRequest : IDBRequest {
// Event handlers:
- [FIXME] attribute EventHandler onblocked;
+ attribute EventHandler onblocked;
[FIXME] attribute EventHandler onupgradeneeded;
};