mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-30 00:31:14 +00:00
LibWeb: Implement AbortSignal.throwIfAborted
See: https://github.com/whatwg/dom/commit/cfe2f1e
This commit is contained in:
parent
64040c136e
commit
1a5bf15b4d
Notes:
sideshowbarker
2024-07-17 23:00:12 +09:00
Author: https://github.com/Lubrsi Commit: https://github.com/SerenityOS/serenity/commit/1a5bf15b4da Pull-request: https://github.com/SerenityOS/serenity/pull/11205 Reviewed-by: https://github.com/IdanHo ✅
|
@ -73,6 +73,22 @@ HTML::EventHandler AbortSignal::onabort()
|
|||
return event_handler_attribute(HTML::EventNames::abort);
|
||||
}
|
||||
|
||||
// https://dom.spec.whatwg.org/#dom-abortsignal-throwifaborted
|
||||
JS::ThrowCompletionOr<void> AbortSignal::throw_if_aborted() const
|
||||
{
|
||||
auto& global_object = wrapper()->global_object();
|
||||
auto& vm = global_object.vm();
|
||||
|
||||
// The throwIfAborted() method steps are to throw this’s abort reason, if this is aborted.
|
||||
if (!aborted())
|
||||
return {};
|
||||
|
||||
// FIXME: Remove this once VM::exception() has been removed.
|
||||
vm.throw_exception(global_object, m_abort_reason);
|
||||
|
||||
return JS::throw_completion(m_abort_reason);
|
||||
}
|
||||
|
||||
void AbortSignal::visit_edges(JS::Cell::Visitor& visitor)
|
||||
{
|
||||
visitor.visit(m_abort_reason);
|
||||
|
|
|
@ -53,6 +53,8 @@ public:
|
|||
// https://dom.spec.whatwg.org/#dom-abortsignal-reason
|
||||
JS::Value reason() const { return m_abort_reason; }
|
||||
|
||||
JS::ThrowCompletionOr<void> throw_if_aborted() const;
|
||||
|
||||
void visit_edges(JS::Cell::Visitor&);
|
||||
|
||||
// ^EventTarget
|
||||
|
|
|
@ -4,6 +4,7 @@ interface AbortSignal : EventTarget {
|
|||
|
||||
readonly attribute boolean aborted;
|
||||
readonly attribute any reason;
|
||||
undefined throwIfAborted();
|
||||
|
||||
attribute EventHandler onabort;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue