1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-16 18:05:07 +00:00

LibWeb: Handle an error condition for "a" start tag during "in body"

If we have an <a> element on the list of active formatting elements
when hitting another "a" start tag, that's a parse error. Recover by
using the AAA.
This commit is contained in:
Andreas Kling 2020-05-30 11:03:05 +02:00
parent c8e0426ab9
commit b9d5d45eff
2 changed files with 8 additions and 2 deletions

View file

@ -945,8 +945,13 @@ void HTMLDocumentParser::handle_in_body(HTMLToken& token)
}
if (token.is_start_tag() && token.tag_name() == "a") {
if (m_list_of_active_formatting_elements.last_element_with_tag_name_before_marker("a")) {
TODO();
if (auto* element = m_list_of_active_formatting_elements.last_element_with_tag_name_before_marker("a")) {
PARSE_ERROR();
run_the_adoption_agency_algorithm(token);
m_list_of_active_formatting_elements.remove(*element);
m_stack_of_open_elements.elements().remove_first_matching([&](auto& entry) {
return entry.ptr() == element;
});
}
reconstruct_the_active_formatting_elements();
auto element = insert_html_element(token);