/* * Copyright (c) 2024, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include namespace Web { KeyEvent KeyEvent::clone_without_chrome_data() const { return { type, key, modifiers, code_point, nullptr }; } MouseEvent MouseEvent::clone_without_chrome_data() const { return { type, position, screen_position, button, buttons, modifiers, wheel_delta_x, wheel_delta_y, 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)); 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()); return Web::KeyEvent { type, key, modifiers, code_point, 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 }; }