/* * Copyright (c) 2024, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include namespace Web { KeyEvent KeyEvent::clone_without_browser_data() const { return { type, key, modifiers, code_point, repeat, nullptr }; } MouseEvent MouseEvent::clone_without_browser_data() const { return { type, position, screen_position, button, buttons, modifiers, wheel_delta_x, wheel_delta_y, nullptr }; } DragEvent DragEvent::clone_without_browser_data() const { return { type, position, screen_position, button, buttons, modifiers, {}, nullptr }; } } template<> ErrorOr IPC::encode(Encoder& encoder, Web::KeyEvent const& event) { TRY(encoder.encode(event.type)); TRY(encoder.encode(event.key)); TRY(encoder.encode(event.modifiers)); TRY(encoder.encode(event.code_point)); TRY(encoder.encode(event.repeat)); return {}; } template<> ErrorOr IPC::decode(Decoder& decoder) { auto type = TRY(decoder.decode()); auto key = TRY(decoder.decode()); auto modifiers = TRY(decoder.decode()); auto code_point = TRY(decoder.decode()); auto repeat = TRY(decoder.decode()); return Web::KeyEvent { type, key, modifiers, code_point, repeat, nullptr }; } template<> ErrorOr IPC::encode(Encoder& encoder, Web::MouseEvent const& event) { TRY(encoder.encode(event.type)); TRY(encoder.encode(event.position)); TRY(encoder.encode(event.screen_position)); TRY(encoder.encode(event.button)); TRY(encoder.encode(event.buttons)); TRY(encoder.encode(event.modifiers)); TRY(encoder.encode(event.wheel_delta_x)); TRY(encoder.encode(event.wheel_delta_y)); return {}; } template<> ErrorOr IPC::decode(Decoder& decoder) { auto type = TRY(decoder.decode()); auto position = TRY(decoder.decode()); auto screen_position = TRY(decoder.decode()); auto button = TRY(decoder.decode()); auto buttons = TRY(decoder.decode()); auto modifiers = TRY(decoder.decode()); auto wheel_delta_x = TRY(decoder.decode()); auto wheel_delta_y = TRY(decoder.decode()); return Web::MouseEvent { type, position, screen_position, button, buttons, modifiers, wheel_delta_x, wheel_delta_y, nullptr }; } template<> ErrorOr IPC::encode(Encoder& encoder, Web::DragEvent const& event) { TRY(encoder.encode(event.type)); TRY(encoder.encode(event.position)); TRY(encoder.encode(event.screen_position)); TRY(encoder.encode(event.button)); TRY(encoder.encode(event.buttons)); TRY(encoder.encode(event.modifiers)); TRY(encoder.encode(event.files)); return {}; } template<> ErrorOr IPC::decode(Decoder& decoder) { auto type = TRY(decoder.decode()); auto position = TRY(decoder.decode()); auto screen_position = TRY(decoder.decode()); auto button = TRY(decoder.decode()); auto buttons = TRY(decoder.decode()); auto modifiers = TRY(decoder.decode()); auto files = TRY(decoder.decode>()); return Web::DragEvent { type, position, screen_position, button, buttons, modifiers, move(files), nullptr }; }