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