1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-17 08:57:35 +00:00

LibWeb: Port CloseEvent to new String

This commit is contained in:
Kenneth Myhra 2023-03-05 09:54:17 +01:00 committed by Linus Groh
parent d0f904dd4c
commit e661f03ffa
4 changed files with 14 additions and 13 deletions

View file

@ -9,18 +9,18 @@
namespace Web::HTML { namespace Web::HTML {
WebIDL::ExceptionOr<JS::NonnullGCPtr<CloseEvent>> CloseEvent::create(JS::Realm& realm, DeprecatedFlyString const& event_name, CloseEventInit const& event_init) WebIDL::ExceptionOr<JS::NonnullGCPtr<CloseEvent>> CloseEvent::create(JS::Realm& realm, FlyString const& event_name, CloseEventInit const& event_init)
{ {
return MUST_OR_THROW_OOM(realm.heap().allocate<CloseEvent>(realm, realm, event_name, event_init)); return MUST_OR_THROW_OOM(realm.heap().allocate<CloseEvent>(realm, realm, event_name, event_init));
} }
WebIDL::ExceptionOr<JS::NonnullGCPtr<CloseEvent>> CloseEvent::construct_impl(JS::Realm& realm, DeprecatedFlyString const& event_name, CloseEventInit const& event_init) WebIDL::ExceptionOr<JS::NonnullGCPtr<CloseEvent>> CloseEvent::construct_impl(JS::Realm& realm, FlyString const& event_name, CloseEventInit const& event_init)
{ {
return create(realm, event_name, event_init); return create(realm, event_name, event_init);
} }
CloseEvent::CloseEvent(JS::Realm& realm, DeprecatedFlyString const& event_name, CloseEventInit const& event_init) CloseEvent::CloseEvent(JS::Realm& realm, FlyString const& event_name, CloseEventInit const& event_init)
: DOM::Event(realm, event_name, event_init) : DOM::Event(realm, event_name.to_deprecated_fly_string(), event_init)
, m_was_clean(event_init.was_clean) , m_was_clean(event_init.was_clean)
, m_code(event_init.code) , m_code(event_init.code)
, m_reason(event_init.reason) , m_reason(event_init.reason)

View file

@ -7,6 +7,7 @@
#pragma once #pragma once
#include <AK/FlyString.h>
#include <LibWeb/DOM/Event.h> #include <LibWeb/DOM/Event.h>
namespace Web::HTML { namespace Web::HTML {
@ -14,30 +15,30 @@ namespace Web::HTML {
struct CloseEventInit : public DOM::EventInit { struct CloseEventInit : public DOM::EventInit {
bool was_clean { false }; bool was_clean { false };
u16 code { 0 }; u16 code { 0 };
DeprecatedString reason { "" }; String reason;
}; };
class CloseEvent : public DOM::Event { class CloseEvent : public DOM::Event {
WEB_PLATFORM_OBJECT(CloseEvent, DOM::Event); WEB_PLATFORM_OBJECT(CloseEvent, DOM::Event);
public: public:
static WebIDL::ExceptionOr<JS::NonnullGCPtr<CloseEvent>> create(JS::Realm&, DeprecatedFlyString const& event_name, CloseEventInit const& event_init = {}); static WebIDL::ExceptionOr<JS::NonnullGCPtr<CloseEvent>> create(JS::Realm&, FlyString const& event_name, CloseEventInit const& event_init = {});
static WebIDL::ExceptionOr<JS::NonnullGCPtr<CloseEvent>> construct_impl(JS::Realm&, DeprecatedFlyString const& event_name, CloseEventInit const& event_init); static WebIDL::ExceptionOr<JS::NonnullGCPtr<CloseEvent>> construct_impl(JS::Realm&, FlyString const& event_name, CloseEventInit const& event_init);
virtual ~CloseEvent() override; virtual ~CloseEvent() override;
bool was_clean() const { return m_was_clean; } bool was_clean() const { return m_was_clean; }
u16 code() const { return m_code; } u16 code() const { return m_code; }
DeprecatedString reason() const { return m_reason; } String reason() const { return m_reason; }
private: private:
CloseEvent(JS::Realm&, DeprecatedFlyString const& event_name, CloseEventInit const& event_init); CloseEvent(JS::Realm&, FlyString const& event_name, CloseEventInit const& event_init);
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override; virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
bool m_was_clean { false }; bool m_was_clean { false };
u16 m_code { 0 }; u16 m_code { 0 };
DeprecatedString m_reason; String m_reason;
}; };
} }

View file

@ -1,6 +1,6 @@
#import <DOM/Event.idl> #import <DOM/Event.idl>
[Exposed=*] [Exposed=*, UseNewAKString]
interface CloseEvent : Event { interface CloseEvent : Event {
constructor(DOMString type, optional CloseEventInit eventInitDict = {}); constructor(DOMString type, optional CloseEventInit eventInitDict = {});

View file

@ -221,8 +221,8 @@ void WebSocket::on_close(u16 code, DeprecatedString reason, bool was_clean)
HTML::CloseEventInit event_init {}; HTML::CloseEventInit event_init {};
event_init.was_clean = was_clean; event_init.was_clean = was_clean;
event_init.code = code; event_init.code = code;
event_init.reason = move(reason); event_init.reason = String::from_deprecated_string(reason).release_value_but_fixme_should_propagate_errors();
dispatch_event(HTML::CloseEvent::create(realm(), HTML::EventNames::close, event_init).release_value_but_fixme_should_propagate_errors()); dispatch_event(HTML::CloseEvent::create(realm(), String::from_deprecated_string(HTML::EventNames::close.view()).release_value_but_fixme_should_propagate_errors(), event_init).release_value_but_fixme_should_propagate_errors());
} }
// https://websockets.spec.whatwg.org/#feedback-from-the-protocol // https://websockets.spec.whatwg.org/#feedback-from-the-protocol