/* * Copyright (c) 2024, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #include "StyleSheetIdentifier.h" #include #include namespace Web::CSS { StringView style_sheet_identifier_type_to_string(StyleSheetIdentifier::Type type) { switch (type) { case StyleSheetIdentifier::Type::StyleElement: return "StyleElement"sv; case StyleSheetIdentifier::Type::LinkElement: return "LinkElement"sv; case StyleSheetIdentifier::Type::ImportRule: return "ImportRule"sv; case StyleSheetIdentifier::Type::UserAgent: return "UserAgent"sv; case StyleSheetIdentifier::Type::UserStyle: return "UserStyle"sv; } VERIFY_NOT_REACHED(); } Optional style_sheet_identifier_type_from_string(StringView string) { if (string == "StyleElement"sv) return StyleSheetIdentifier::Type::StyleElement; if (string == "LinkElement"sv) return StyleSheetIdentifier::Type::LinkElement; if (string == "ImportRule"sv) return StyleSheetIdentifier::Type::ImportRule; if (string == "UserAgent"sv) return StyleSheetIdentifier::Type::UserAgent; if (string == "UserStyle"sv) return StyleSheetIdentifier::Type::UserStyle; return {}; } } namespace IPC { template<> ErrorOr encode(Encoder& encoder, Web::CSS::StyleSheetIdentifier const& style_sheet_source) { TRY(encoder.encode(style_sheet_source.type)); TRY(encoder.encode(style_sheet_source.dom_element_unique_id)); TRY(encoder.encode(style_sheet_source.url)); return {}; } template<> ErrorOr decode(Decoder& decoder) { auto type = TRY(decoder.decode()); auto dom_element_unique_id = TRY(decoder.decode>()); auto url = TRY(decoder.decode>()); return Web::CSS::StyleSheetIdentifier { .type = type, .dom_element_unique_id = move(dom_element_unique_id), .url = move(url), }; } }