From 00b44ab1489332d33e60979d7688145f097bd6e6 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 28 May 2020 18:52:32 +0200 Subject: [PATCH] LibWeb: Implement more of the "after body" insertion mode --- .../LibWeb/Parser/HTMLDocumentParser.cpp | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp b/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp index 8c37753d67..9a85af72a4 100644 --- a/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp +++ b/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp @@ -482,6 +482,25 @@ void HTMLDocumentParser::handle_after_body(HTMLToken& token) return; } + if (token.is_comment()) { + TODO(); + } + + if (token.is_doctype()) { + PARSE_ERROR(); + return; + } + + if (token.is_start_tag() && token.tag_name() == "html") { + process_using_the_rules_for(InsertionMode::InBody, token); + return; + } + + if (token.is_end_of_file()) { + // FIXME: Stop parsing! + TODO(); + } + if (token.is_end_tag() && token.tag_name() == "html") { if (m_parsing_fragment) { ASSERT_NOT_REACHED(); @@ -489,7 +508,10 @@ void HTMLDocumentParser::handle_after_body(HTMLToken& token) m_insertion_mode = InsertionMode::AfterAfterBody; return; } - ASSERT_NOT_REACHED(); + + PARSE_ERROR(); + m_insertion_mode = InsertionMode::InBody; + process_using_the_rules_for(InsertionMode::InBody, token); } void HTMLDocumentParser::handle_after_after_body(HTMLToken& token)