diff --git a/Userland/Libraries/LibWeb/HTML/WebSocket.cpp b/Userland/Libraries/LibWeb/HTML/WebSocket.cpp index 5076ce96270..f3aabe91cf0 100644 --- a/Userland/Libraries/LibWeb/HTML/WebSocket.cpp +++ b/Userland/Libraries/LibWeb/HTML/WebSocket.cpp @@ -226,49 +226,9 @@ JS::Object* WebSocket::create_wrapper(JS::GlobalObject& global_object) } \ HTML::EventHandler WebSocket::attribute_name() \ { \ - return get_event_handler_attribute(event_name); \ + return event_handler_attribute(event_name); \ } ENUMERATE_WEBSOCKET_EVENT_HANDLERS(__ENUMERATE) #undef __ENUMERATE -// FIXME: This is copied from GlobalEventHandlers.cpp. Find a way to deduplicate it. -void WebSocket::set_event_handler_attribute(const FlyString& name, HTML::EventHandler value) -{ - RefPtr listener; - if (!value.callback.is_null()) { - listener = adopt_ref(*new DOM::EventListener(move(value.callback))); - } else { - StringBuilder builder; - builder.appendff("function {}(event) {{\n{}\n}}", name, value.string); - auto parser = JS::Parser(JS::Lexer(builder.string_view())); - auto program = parser.parse_function_node(); - if (parser.has_errors()) { - dbgln("Failed to parse script in event handler attribute '{}'", name); - return; - } - auto* function = JS::OrdinaryFunctionObject::create(script_execution_context()->interpreter().global_object(), name, program->body(), program->parameters(), program->function_length(), nullptr, JS::FunctionKind::Regular, false, false); - VERIFY(function); - listener = adopt_ref(*new DOM::EventListener(JS::make_handle(static_cast(function)))); - } - if (listener) { - for (auto& registered_listener : listeners()) { - if (registered_listener.event_name == name && registered_listener.listener->is_attribute()) { - remove_event_listener(name, registered_listener.listener); - break; - } - } - add_event_listener(name, listener.release_nonnull()); - } -} - -HTML::EventHandler WebSocket::get_event_handler_attribute(const FlyString& name) -{ - for (auto& listener : listeners()) { - if (listener.event_name == name && listener.listener->is_attribute()) - return HTML::EventHandler { JS::make_handle(&listener.listener->function()) }; - } - - return {}; -} - } diff --git a/Userland/Libraries/LibWeb/HTML/WebSocket.h b/Userland/Libraries/LibWeb/HTML/WebSocket.h index d2f6e0b46fd..6491739dcd9 100644 --- a/Userland/Libraries/LibWeb/HTML/WebSocket.h +++ b/Userland/Libraries/LibWeb/HTML/WebSocket.h @@ -78,9 +78,6 @@ public: ENUMERATE_WEBSOCKET_EVENT_HANDLERS(__ENUMERATE) #undef __ENUMERATE - void set_event_handler_attribute(const FlyString& name, HTML::EventHandler); - HTML::EventHandler get_event_handler_attribute(const FlyString& name); - ReadyState ready_state() const; String extensions() const; String protocol() const;