diff --git a/ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_select.c b/ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_select.c index 359d3b28f130b..b4eed2c5d3a84 100644 --- a/ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_select.c +++ b/ext/dom/lexbor/lexbor/html/tree/insertion_mode/in_select.c @@ -125,6 +125,37 @@ lxb_html_tree_insertion_mode_in_select_optgroup(lxb_html_tree_t *tree, return true; } +lxb_inline bool +lxb_html_tree_insertion_mode_in_select_hr(lxb_html_tree_t *tree, + lxb_html_token_t *token) +{ + lxb_html_element_t *element; + lxb_dom_node_t *node = lxb_html_tree_current_node(tree); + + if (lxb_html_tree_node_is(node, LXB_TAG_OPTION)) { + lxb_html_tree_open_elements_pop(tree); + } + + node = lxb_html_tree_current_node(tree); + + if (lxb_html_tree_node_is(node, LXB_TAG_OPTGROUP)) { + lxb_html_tree_open_elements_pop(tree); + } + + element = lxb_html_tree_insert_html_element(tree, token); + if (element == NULL) { + tree->status = LXB_STATUS_ERROR_MEMORY_ALLOCATION; + + return lxb_html_tree_process_abort(tree); + } + + lxb_html_tree_open_elements_pop(tree); + + lxb_html_tree_acknowledge_token_self_closing(tree, token); + + return true; +} + lxb_inline bool lxb_html_tree_insertion_mode_in_select_optgroup_closed(lxb_html_tree_t *tree, lxb_html_token_t *token) @@ -319,6 +350,9 @@ lxb_html_tree_insertion_mode_in_select(lxb_html_tree_t *tree, case LXB_TAG_OPTGROUP: return lxb_html_tree_insertion_mode_in_select_optgroup(tree, token); + case LXB_TAG_HR: + return lxb_html_tree_insertion_mode_in_select_hr(tree, token); + case LXB_TAG_SELECT: return lxb_html_tree_insertion_mode_in_select_select(tree, token);