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)