mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:17:34 +00:00
LibWeb: Implement ErrorEvent
This will be used by the new EventTarget to check if it needs to do special error event handling. Currently it isn't used for anything else.
This commit is contained in:
parent
dc42ca37bd
commit
11eedc309a
5 changed files with 98 additions and 0 deletions
|
@ -56,6 +56,8 @@
|
||||||
#include <LibWeb/Bindings/DocumentTypePrototype.h>
|
#include <LibWeb/Bindings/DocumentTypePrototype.h>
|
||||||
#include <LibWeb/Bindings/ElementConstructor.h>
|
#include <LibWeb/Bindings/ElementConstructor.h>
|
||||||
#include <LibWeb/Bindings/ElementPrototype.h>
|
#include <LibWeb/Bindings/ElementPrototype.h>
|
||||||
|
#include <LibWeb/Bindings/ErrorEventConstructor.h>
|
||||||
|
#include <LibWeb/Bindings/ErrorEventPrototype.h>
|
||||||
#include <LibWeb/Bindings/EventConstructor.h>
|
#include <LibWeb/Bindings/EventConstructor.h>
|
||||||
#include <LibWeb/Bindings/EventPrototype.h>
|
#include <LibWeb/Bindings/EventPrototype.h>
|
||||||
#include <LibWeb/Bindings/EventTargetConstructor.h>
|
#include <LibWeb/Bindings/EventTargetConstructor.h>
|
||||||
|
@ -325,6 +327,7 @@
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(DOMRectReadOnly) \
|
ADD_WINDOW_OBJECT_INTERFACE(DOMRectReadOnly) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(DOMStringMap) \
|
ADD_WINDOW_OBJECT_INTERFACE(DOMStringMap) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(Element) \
|
ADD_WINDOW_OBJECT_INTERFACE(Element) \
|
||||||
|
ADD_WINDOW_OBJECT_INTERFACE(ErrorEvent) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(Event) \
|
ADD_WINDOW_OBJECT_INTERFACE(Event) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(EventTarget) \
|
ADD_WINDOW_OBJECT_INTERFACE(EventTarget) \
|
||||||
ADD_WINDOW_OBJECT_INTERFACE(History) \
|
ADD_WINDOW_OBJECT_INTERFACE(History) \
|
||||||
|
|
|
@ -413,6 +413,7 @@ libweb_js_wrapper(HTML/CanvasRenderingContext2D)
|
||||||
libweb_js_wrapper(HTML/CloseEvent)
|
libweb_js_wrapper(HTML/CloseEvent)
|
||||||
libweb_js_wrapper(HTML/DOMParser)
|
libweb_js_wrapper(HTML/DOMParser)
|
||||||
libweb_js_wrapper(HTML/DOMStringMap)
|
libweb_js_wrapper(HTML/DOMStringMap)
|
||||||
|
libweb_js_wrapper(HTML/ErrorEvent)
|
||||||
libweb_js_wrapper(HTML/History)
|
libweb_js_wrapper(HTML/History)
|
||||||
libweb_js_wrapper(HTML/HTMLAnchorElement)
|
libweb_js_wrapper(HTML/HTMLAnchorElement)
|
||||||
libweb_js_wrapper(HTML/HTMLAreaElement)
|
libweb_js_wrapper(HTML/HTMLAreaElement)
|
||||||
|
|
|
@ -128,6 +128,7 @@ class CanvasRenderingContext2D;
|
||||||
class CloseEvent;
|
class CloseEvent;
|
||||||
class DOMParser;
|
class DOMParser;
|
||||||
class DOMStringMap;
|
class DOMStringMap;
|
||||||
|
class ErrorEvent;
|
||||||
struct EventHandler;
|
struct EventHandler;
|
||||||
class EventLoop;
|
class EventLoop;
|
||||||
class HTMLAnchorElement;
|
class HTMLAnchorElement;
|
||||||
|
@ -330,6 +331,7 @@ class DOMRectWrapper;
|
||||||
class DOMStringMapWrapper;
|
class DOMStringMapWrapper;
|
||||||
class DOMTokenListWrapper;
|
class DOMTokenListWrapper;
|
||||||
class ElementWrapper;
|
class ElementWrapper;
|
||||||
|
class ErrorEventWrapper;
|
||||||
class EventListenerWrapper;
|
class EventListenerWrapper;
|
||||||
class EventTargetWrapper;
|
class EventTargetWrapper;
|
||||||
class EventWrapper;
|
class EventWrapper;
|
||||||
|
|
72
Userland/Libraries/LibWeb/HTML/ErrorEvent.h
Normal file
72
Userland/Libraries/LibWeb/HTML/ErrorEvent.h
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <LibWeb/DOM/Event.h>
|
||||||
|
|
||||||
|
namespace Web::HTML {
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/webappapis.html#erroreventinit
|
||||||
|
struct ErrorEventInit : public DOM::EventInit {
|
||||||
|
String message { "" };
|
||||||
|
String filename { "" }; // FIXME: This should be a USVString.
|
||||||
|
u32 lineno { 0 };
|
||||||
|
u32 colno { 0 };
|
||||||
|
JS::Value error { JS::js_null() };
|
||||||
|
};
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/webappapis.html#errorevent
|
||||||
|
class ErrorEvent final : public DOM::Event {
|
||||||
|
public:
|
||||||
|
using WrapperType = Bindings::ErrorEventWrapper;
|
||||||
|
|
||||||
|
static NonnullRefPtr<ErrorEvent> create(FlyString const& event_name, ErrorEventInit const& event_init = {})
|
||||||
|
{
|
||||||
|
return adopt_ref(*new ErrorEvent(event_name, event_init));
|
||||||
|
}
|
||||||
|
|
||||||
|
static NonnullRefPtr<ErrorEvent> create_with_global_object(Bindings::WindowObject&, FlyString const& event_name, ErrorEventInit const& event_init)
|
||||||
|
{
|
||||||
|
return ErrorEvent::create(event_name, event_init);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~ErrorEvent() override = default;
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/webappapis.html#dom-errorevent-message
|
||||||
|
String const& message() const { return m_message; }
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/webappapis.html#dom-errorevent-filename
|
||||||
|
String const& filename() const { return m_filename; }
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/webappapis.html#dom-errorevent-lineno
|
||||||
|
u32 lineno() const { return m_lineno; }
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/webappapis.html#dom-errorevent-colno
|
||||||
|
u32 colno() const { return m_colno; }
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/webappapis.html#dom-errorevent-error
|
||||||
|
JS::Value error() const { return m_error.value(); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
ErrorEvent(FlyString const& event_name, ErrorEventInit const& event_init)
|
||||||
|
: DOM::Event(event_name)
|
||||||
|
, m_message(event_init.message)
|
||||||
|
, m_filename(event_init.filename)
|
||||||
|
, m_lineno(event_init.lineno)
|
||||||
|
, m_colno(event_init.colno)
|
||||||
|
, m_error(JS::make_handle(event_init.error))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
String m_message { "" };
|
||||||
|
String m_filename { "" }; // FIXME: This should be a USVString.
|
||||||
|
u32 m_lineno { 0 };
|
||||||
|
u32 m_colno { 0 };
|
||||||
|
JS::Handle<JS::Value> m_error;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
20
Userland/Libraries/LibWeb/HTML/ErrorEvent.idl
Normal file
20
Userland/Libraries/LibWeb/HTML/ErrorEvent.idl
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#import <DOM/Event.idl>
|
||||||
|
|
||||||
|
[Exposed=(Window,Worker)]
|
||||||
|
interface ErrorEvent : Event {
|
||||||
|
constructor(DOMString type, optional ErrorEventInit eventInitDict = {});
|
||||||
|
|
||||||
|
readonly attribute DOMString message;
|
||||||
|
readonly attribute USVString filename;
|
||||||
|
readonly attribute unsigned long lineno;
|
||||||
|
readonly attribute unsigned long colno;
|
||||||
|
readonly attribute any error;
|
||||||
|
};
|
||||||
|
|
||||||
|
dictionary ErrorEventInit : EventInit {
|
||||||
|
DOMString message = "";
|
||||||
|
USVString filename = "";
|
||||||
|
unsigned long lineno = 0;
|
||||||
|
unsigned long colno = 0;
|
||||||
|
any error = null;
|
||||||
|
};
|
Loading…
Add table
Add a link
Reference in a new issue