/* * Copyright (c) 2025, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include template<> ErrorOr IPC::encode(Encoder& encoder, WebView::AttributeMutation const& mutation) { TRY(encoder.encode(mutation.attribute_name)); TRY(encoder.encode(mutation.new_value)); return {}; } template<> ErrorOr IPC::decode(Decoder& decoder) { auto attribute_name = TRY(decoder.decode()); auto new_value = TRY(decoder.decode>()); return WebView::AttributeMutation { move(attribute_name), move(new_value) }; } template<> ErrorOr IPC::encode(Encoder& encoder, WebView::CharacterDataMutation const& mutation) { TRY(encoder.encode(mutation.new_value)); return {}; } template<> ErrorOr IPC::decode(Decoder& decoder) { auto new_value = TRY(decoder.decode()); return WebView::CharacterDataMutation { move(new_value) }; } template<> ErrorOr IPC::encode(Encoder& encoder, WebView::ChildListMutation const& mutation) { TRY(encoder.encode(mutation.added)); TRY(encoder.encode(mutation.removed)); TRY(encoder.encode(mutation.target_child_count)); return {}; } template<> ErrorOr IPC::decode(Decoder& decoder) { auto added = TRY(decoder.decode>()); auto removed = TRY(decoder.decode>()); auto target_child_count = TRY(decoder.decode()); return WebView::ChildListMutation { move(added), move(removed), target_child_count }; } template<> ErrorOr IPC::encode(Encoder& encoder, WebView::Mutation const& mutation) { TRY(encoder.encode(mutation.type)); TRY(encoder.encode(mutation.target)); TRY(encoder.encode(mutation.serialized_target)); TRY(encoder.encode(mutation.mutation)); return {}; } template<> ErrorOr IPC::decode(Decoder& decoder) { auto type = TRY(decoder.decode()); auto target = TRY(decoder.decode()); auto serialized_target = TRY(decoder.decode()); auto mutation = TRY(decoder.decode()); return WebView::Mutation { move(type), target, move(serialized_target), move(mutation) }; }