1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /*
- * Copyright (c) 2024, Sam Atkins <sam@ladybird.org>
- *
- * SPDX-License-Identifier: BSD-2-Clause
- */
- #include "StyleSheetIdentifier.h"
- #include <LibIPC/Decoder.h>
- #include <LibIPC/Encoder.h>
- 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<StyleSheetIdentifier::Type> 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<void> encode(Encoder& encoder, Web::CSS::StyleSheetIdentifier const& style_sheet_source)
- {
- TRY(encoder.encode(style_sheet_source.type));
- Optional<i64> dom_element_unique_id = style_sheet_source.dom_element_unique_id.has_value() ? Optional<i64>(style_sheet_source.dom_element_unique_id.value()) : Optional<i64> {};
- TRY(encoder.encode(dom_element_unique_id));
- TRY(encoder.encode(style_sheet_source.url));
- return {};
- }
- template<>
- ErrorOr<Web::CSS::StyleSheetIdentifier> decode(Decoder& decoder)
- {
- auto type = TRY(decoder.decode<Web::CSS::StyleSheetIdentifier::Type>());
- auto dom_element_unique_id = TRY(decoder.decode<Optional<i64>>());
- auto url = TRY(decoder.decode<Optional<String>>());
- return Web::CSS::StyleSheetIdentifier {
- .type = type,
- .dom_element_unique_id = dom_element_unique_id.has_value() ? Web::UniqueNodeID(dom_element_unique_id.value()) : Optional<Web::UniqueNodeID> {},
- .url = move(url),
- };
- }
- }
|