1From c19debb4d26f731b39860f27073b69927aa611f0 Mon Sep 17 00:00:00 2001
2From: Niels Dossche <7771979+nielsdos@users.noreply.github.com>
3Date: Wed, 23 Aug 2023 21:48:12 +0200
4Subject: [PATCH] Patch out CSS parser
5
6---
7 source/lexbor/css/rule.h                      |  2 ++
8 source/lexbor/html/interfaces/document.c      | 16 ++++++++++
9 source/lexbor/html/interfaces/element.c       | 29 +++++++++++++++++++
10 source/lexbor/html/interfaces/style_element.c |  6 ++++
11 4 files changed, 53 insertions(+)
12
13diff --git a/source/lexbor/css/rule.h b/source/lexbor/css/rule.h
14index 7cc4f0b..f68491e 100644
15--- a/source/lexbor/css/rule.h
16+++ b/source/lexbor/css/rule.h
17@@ -344,7 +344,9 @@ lxb_css_rule_ref_dec_destroy(lxb_css_rule_t *rule)
18     }
19
20     if (rule->ref_count == 0) {
21+#if 0
22         (void) lxb_css_rule_destroy(rule, true);
23+#endif
24     }
25 }
26
27diff --git a/source/lexbor/html/interfaces/document.c b/source/lexbor/html/interfaces/document.c
28index 73184f0..b4de5b8 100755
29--- a/source/lexbor/html/interfaces/document.c
30+++ b/source/lexbor/html/interfaces/document.c
31@@ -72,8 +72,10 @@ static lxb_status_t
32 lxb_html_document_style_cb(lxb_dom_node_t *node,
33                            lxb_css_selector_specificity_t spec, void *ctx);
34
35+#if 0
36 static lxb_status_t
37 lxb_html_document_done(lxb_html_document_t *document);
38+#endif
39
40
41 lxb_status_t
42@@ -86,6 +88,7 @@ lxb_html_document_parser_prepare(lxb_html_document_t *document);
43 static lexbor_action_t
44 lxb_html_document_title_walker(lxb_dom_node_t *node, void *ctx);
45
46+#if 0
47 static lxb_status_t
48 lxb_html_document_event_insert(lxb_dom_node_t *node);
49
50@@ -112,6 +115,7 @@ lxb_html_document_event_destroy(lxb_dom_node_t *node);
51 static lxb_status_t
52 lxb_html_document_event_set_value(lxb_dom_node_t *node,
53                                   const lxb_char_t *value, size_t length);
54+#endif
55
56
57 lxb_html_document_t *
58@@ -171,7 +175,9 @@ lxb_html_document_interface_destroy(lxb_html_document_t *document)
59
60     if (doc->node.owner_document == doc) {
61         (void) lxb_html_parser_unref(doc->parser);
62+#if 0
63         lxb_html_document_css_destroy(document);
64+#endif
65     }
66
67     (void) lxb_dom_document_destroy(doc);
68@@ -193,11 +199,14 @@ lxb_html_document_clean(lxb_html_document_t *document)
69     document->iframe_srcdoc = NULL;
70     document->ready_state = LXB_HTML_DOCUMENT_READY_STATE_UNDEF;
71
72+#if 0
73     lxb_html_document_css_clean(document);
74+#endif
75
76     lxb_dom_document_clean(lxb_dom_interface_document(document));
77 }
78
79+#if 0
80 lxb_status_t
81 lxb_html_document_css_init(lxb_html_document_t *document)
82 {
83@@ -330,6 +339,7 @@ lxb_html_document_css_clean(lxb_html_document_t *document)
84         lexbor_dobject_clean(css->weak);
85     }
86 }
87+#endif
88
89 void
90 lxb_html_document_css_parser_attach(lxb_html_document_t *document,
91@@ -575,6 +585,7 @@ void
92 lxb_html_document_stylesheet_destroy_all(lxb_html_document_t *document,
93                                          bool destroy_memory)
94 {
95+#if 0
96     size_t length;
97     lxb_css_stylesheet_t *sst;
98     lxb_html_document_css_t *css = &document->css;
99@@ -586,6 +597,7 @@ lxb_html_document_stylesheet_destroy_all(lxb_html_document_t *document,
100
101         (void) lxb_css_stylesheet_destroy(sst, destroy_memory);
102     }
103+#endif
104 }
105
106 lxb_status_t
107@@ -849,6 +861,7 @@ lxb_html_document_parser_prepare(lxb_html_document_t *document)
108     return LXB_STATUS_OK;
109 }
110
111+#if 0
112 static lxb_status_t
113 lxb_html_document_done(lxb_html_document_t *document)
114 {
115@@ -873,6 +886,7 @@ lxb_html_document_done(lxb_html_document_t *document)
116
117     return LXB_STATUS_OK;
118 }
119+#endif
120
121 const lxb_char_t *
122 lxb_html_document_title(lxb_html_document_t *document, size_t *len)
123@@ -960,6 +974,7 @@ lxb_html_document_import_node(lxb_html_document_t *doc, lxb_dom_node_t *node,
124     return lxb_dom_document_import_node(&doc->dom_document, node, deep);
125 }
126
127+#if 0
128 static lxb_status_t
129 lxb_html_document_event_insert(lxb_dom_node_t *node)
130 {
131@@ -1231,6 +1246,7 @@ lxb_html_document_event_set_value(lxb_dom_node_t *node,
132     return lxb_html_element_style_parse(lxb_html_interface_element(node),
133                                         value, length);
134 }
135+#endif
136
137 /*
138  * No inline functions for ABI.
139diff --git a/source/lexbor/html/interfaces/element.c b/source/lexbor/html/interfaces/element.c
140index 229d3d7..363040c 100755
141--- a/source/lexbor/html/interfaces/element.c
142+++ b/source/lexbor/html/interfaces/element.c
143@@ -38,9 +38,11 @@ static lxb_status_t
144 lxb_html_element_style_serialize_cb(lexbor_avl_t *avl, lexbor_avl_node_t **root,
145                                     lexbor_avl_node_t *node, void *ctx);
146
147+#if 0
148 static lxb_status_t
149 lxb_html_element_style_serialize_str_cb(const lxb_char_t *data,
150                                         size_t len, void *ctx);
151+#endif
152
153
154 lxb_html_element_t *
155@@ -102,6 +104,7 @@ const lxb_css_rule_declaration_t *
156 lxb_html_element_style_by_name(lxb_html_element_t *element,
157                                const lxb_char_t *name, size_t size)
158 {
159+#if 0
160     uintptr_t id;
161     lxb_html_style_node_t *node;
162     lxb_dom_document_t *ddoc = lxb_dom_interface_node(element)->owner_document;
163@@ -115,11 +118,14 @@ lxb_html_element_style_by_name(lxb_html_element_t *element,
164     node = (void *) lexbor_avl_search(doc->css.styles, element->style, id);
165
166     return (node != NULL) ? node->entry.value : NULL;
167+#endif
168+    return NULL;
169 }
170
171 const lxb_css_rule_declaration_t *
172 lxb_html_element_style_by_id(lxb_html_element_t *element, uintptr_t id)
173 {
174+#if 0
175     const lxb_html_style_node_t *node;
176
177     node = lxb_html_element_style_node_by_id(element, id);
178@@ -128,6 +134,8 @@ lxb_html_element_style_by_id(lxb_html_element_t *element, uintptr_t id)
179     }
180
181     return node->entry.value;
182+#endif
183+    return NULL;
184 }
185
186 const lxb_html_style_node_t *
187@@ -144,6 +152,7 @@ const lxb_html_style_node_t *
188 lxb_html_element_style_node_by_name(lxb_html_element_t *element,
189                                     const lxb_char_t *name, size_t size)
190 {
191+#if 0
192     uintptr_t id;
193     lxb_dom_document_t *ddoc = lxb_dom_interface_node(element)->owner_document;
194     lxb_html_document_t *doc = lxb_html_interface_document(ddoc);
195@@ -155,11 +164,14 @@ lxb_html_element_style_node_by_name(lxb_html_element_t *element,
196
197     return (lxb_html_style_node_t *) lexbor_avl_search(doc->css.styles,
198                                                        element->style, id);
199+#endif
200+    return NULL;
201 }
202
203 const void *
204 lxb_html_element_css_property_by_id(lxb_html_element_t *element, uintptr_t id)
205 {
206+#if 0
207     lxb_css_rule_declaration_t *declr;
208     const lxb_html_style_node_t *node;
209
210@@ -171,6 +183,8 @@ lxb_html_element_css_property_by_id(lxb_html_element_t *element, uintptr_t id)
211     declr = node->entry.value;
212
213     return declr->u.user;
214+#endif
215+    return NULL;
216 }
217
218 lxb_status_t
219@@ -224,6 +238,7 @@ lxb_status_t
220 lxb_html_element_style_parse(lxb_html_element_t *element,
221                              const lxb_char_t *style, size_t size)
222 {
223+#if 0
224     lxb_css_rule_declaration_list_t *list;
225
226     lxb_dom_document_t *ddoc = lxb_dom_interface_node(element)->owner_document;
227@@ -240,6 +255,8 @@ lxb_html_element_style_parse(lxb_html_element_t *element,
228
229     return lxb_html_element_style_list_append(element, list,
230                                               lxb_css_selector_sp_up_s(0));
231+#endif
232+    return LXB_STATUS_ERROR;
233 }
234
235 lxb_status_t
236@@ -393,6 +410,7 @@ void
237 lxb_html_element_style_remove_by_name(lxb_html_element_t *element,
238                                       const lxb_char_t *name, size_t size)
239 {
240+#if 0
241     uintptr_t id;
242     lxb_dom_document_t *ddoc = lxb_dom_interface_node(element)->owner_document;
243     lxb_html_document_t *doc = lxb_html_interface_document(ddoc);
244@@ -403,11 +421,13 @@ lxb_html_element_style_remove_by_name(lxb_html_element_t *element,
245     }
246
247     lxb_html_element_style_remove_by_id(element, id);
248+#endif
249 }
250
251 void
252 lxb_html_element_style_remove_by_id(lxb_html_element_t *element, uintptr_t id)
253 {
254+#if 0
255     lxb_html_style_node_t *node;
256     lxb_dom_document_t *ddoc = lxb_dom_interface_node(element)->owner_document;
257     lxb_html_document_t *doc = lxb_html_interface_document(ddoc);
258@@ -417,6 +437,7 @@ lxb_html_element_style_remove_by_id(lxb_html_element_t *element, uintptr_t id)
259     if (node != NULL) {
260         lxb_html_element_style_remove_all(doc, &element->style, node);
261     }
262+#endif
263 }
264
265 lxb_html_style_node_t *
266@@ -576,6 +597,7 @@ static lxb_status_t
267 lxb_html_element_style_serialize_cb(lexbor_avl_t *avl, lexbor_avl_node_t **root,
268                                     lexbor_avl_node_t *node, void *ctx)
269 {
270+#if 0
271     lxb_status_t status;
272     lexbor_serialize_ctx_t *context = ctx;
273
274@@ -589,6 +611,8 @@ lxb_html_element_style_serialize_cb(lexbor_avl_t *avl, lexbor_avl_node_t **root,
275     context->count = 1;
276
277     return lxb_css_rule_serialize(node->value, context->cb, context->ctx);
278+#endif
279+    return LXB_STATUS_ERROR;
280 }
281
282 lxb_status_t
283@@ -596,6 +620,7 @@ lxb_html_element_style_serialize_str(lxb_html_element_t *element,
284                                      lexbor_str_t *str,
285                                      lxb_html_element_style_opt_t opt)
286 {
287+#if 0
288     lxb_dom_document_t *doc;
289     lxb_html_element_style_ctx_t context;
290
291@@ -614,8 +639,11 @@ lxb_html_element_style_serialize_str(lxb_html_element_t *element,
292
293     return lxb_html_element_style_serialize(element, opt,
294                             lxb_html_element_style_serialize_str_cb, &context);
295+#endif
296+    return LXB_STATUS_ERROR;
297 }
298
299+#if 0
300 static lxb_status_t
301 lxb_html_element_style_serialize_str_cb(const lxb_char_t *data,
302                                         size_t len, void *ctx)
303@@ -630,3 +658,4 @@ lxb_html_element_style_serialize_str_cb(const lxb_char_t *data,
304
305     return LXB_STATUS_OK;
306 }
307+#endif
308diff --git a/source/lexbor/html/interfaces/style_element.c b/source/lexbor/html/interfaces/style_element.c
309index 66d55c4..9a402ef 100755
310--- a/source/lexbor/html/interfaces/style_element.c
311+++ b/source/lexbor/html/interfaces/style_element.c
312@@ -35,7 +35,9 @@ lxb_html_style_element_interface_destroy(lxb_html_style_element_t *style_element
313     (void) lxb_dom_node_interface_destroy(lxb_dom_interface_node(style_element));
314
315     if (sst != NULL) {
316+#if 0
317         (void) lxb_css_stylesheet_destroy(sst, true);
318+#endif
319     }
320
321     return NULL;
322@@ -44,8 +46,10 @@ lxb_html_style_element_interface_destroy(lxb_html_style_element_t *style_element
323 lxb_status_t
324 lxb_html_style_element_parse(lxb_html_style_element_t *element)
325 {
326+#if 0
327     lexbor_str_t *str;
328     lxb_dom_text_t *text;
329+#endif
330     lxb_dom_node_t *node;
331
332     lxb_dom_document_t *ddoc = lxb_dom_interface_node(element)->owner_document;
333@@ -61,11 +65,13 @@ lxb_html_style_element_parse(lxb_html_style_element_t *element)
334         return LXB_STATUS_OK;
335     }
336
337+#if 0
338     text = lxb_dom_interface_text(lxb_dom_interface_node(element)->first_child);
339     str = &text->char_data.data;
340
341     element->stylesheet = lxb_css_stylesheet_parse(css->parser, str->data,
342                                                    str->length);
343+#endif
344     if (element->stylesheet == NULL) {
345         return css->parser->status;
346     }
347--
3482.41.0
349
350