/src/serenity/Userland/Libraries/LibWeb/CSS/StyleSheetIdentifier.cpp
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 2024, Sam Atkins <sam@ladybird.org> |
3 | | * |
4 | | * SPDX-License-Identifier: BSD-2-Clause |
5 | | */ |
6 | | |
7 | | #include "StyleSheetIdentifier.h" |
8 | | #include <LibIPC/Decoder.h> |
9 | | #include <LibIPC/Encoder.h> |
10 | | |
11 | | namespace Web::CSS { |
12 | | |
13 | | StringView style_sheet_identifier_type_to_string(StyleSheetIdentifier::Type type) |
14 | 0 | { |
15 | 0 | switch (type) { |
16 | 0 | case StyleSheetIdentifier::Type::StyleElement: |
17 | 0 | return "StyleElement"sv; |
18 | 0 | case StyleSheetIdentifier::Type::LinkElement: |
19 | 0 | return "LinkElement"sv; |
20 | 0 | case StyleSheetIdentifier::Type::ImportRule: |
21 | 0 | return "ImportRule"sv; |
22 | 0 | case StyleSheetIdentifier::Type::UserAgent: |
23 | 0 | return "UserAgent"sv; |
24 | 0 | case StyleSheetIdentifier::Type::UserStyle: |
25 | 0 | return "UserStyle"sv; |
26 | 0 | } |
27 | 0 | VERIFY_NOT_REACHED(); |
28 | 0 | } |
29 | | |
30 | | Optional<StyleSheetIdentifier::Type> style_sheet_identifier_type_from_string(StringView string) |
31 | 0 | { |
32 | 0 | if (string == "StyleElement"sv) |
33 | 0 | return StyleSheetIdentifier::Type::StyleElement; |
34 | 0 | if (string == "LinkElement"sv) |
35 | 0 | return StyleSheetIdentifier::Type::LinkElement; |
36 | 0 | if (string == "ImportRule"sv) |
37 | 0 | return StyleSheetIdentifier::Type::ImportRule; |
38 | 0 | if (string == "UserAgent"sv) |
39 | 0 | return StyleSheetIdentifier::Type::UserAgent; |
40 | 0 | if (string == "UserStyle"sv) |
41 | 0 | return StyleSheetIdentifier::Type::UserStyle; |
42 | 0 | return {}; |
43 | 0 | } |
44 | | |
45 | | } |
46 | | |
47 | | namespace IPC { |
48 | | |
49 | | template<> |
50 | | ErrorOr<void> encode(Encoder& encoder, Web::CSS::StyleSheetIdentifier const& style_sheet_source) |
51 | 0 | { |
52 | 0 | TRY(encoder.encode(style_sheet_source.type)); |
53 | 0 | TRY(encoder.encode(style_sheet_source.dom_element_unique_id)); |
54 | 0 | TRY(encoder.encode(style_sheet_source.url)); |
55 | |
|
56 | 0 | return {}; |
57 | 0 | } |
58 | | |
59 | | template<> |
60 | | ErrorOr<Web::CSS::StyleSheetIdentifier> decode(Decoder& decoder) |
61 | 0 | { |
62 | 0 | auto type = TRY(decoder.decode<Web::CSS::StyleSheetIdentifier::Type>()); |
63 | 0 | auto dom_element_unique_id = TRY(decoder.decode<Optional<i32>>()); |
64 | 0 | auto url = TRY(decoder.decode<Optional<String>>()); |
65 | |
|
66 | 0 | return Web::CSS::StyleSheetIdentifier { |
67 | 0 | .type = type, |
68 | 0 | .dom_element_unique_id = move(dom_element_unique_id), |
69 | 0 | .url = move(url), |
70 | 0 | }; |
71 | 0 | } |
72 | | |
73 | | } |