1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 03:57:43 +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:
Luke Wilde 2021-10-14 16:53:39 +01:00 committed by Andreas Kling
parent dc42ca37bd
commit 11eedc309a
5 changed files with 98 additions and 0 deletions

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