summaryrefslogtreecommitdiff
path: root/Libraries
diff options
context:
space:
mode:
Diffstat (limited to 'Libraries')
-rw-r--r--Libraries/LibWeb/Parser/HTMLDocumentParser.cpp11
-rw-r--r--Libraries/LibWeb/Parser/HTMLDocumentParser.h3
2 files changed, 11 insertions, 3 deletions
diff --git a/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp b/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp
index 9a85af72a4..323b25919f 100644
--- a/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp
+++ b/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp
@@ -76,6 +76,11 @@ void HTMLDocumentParser::run(const URL& url)
dbg() << "[" << insertion_mode_name() << "] " << token.to_string();
#endif
process_using_the_rules_for(m_insertion_mode, token);
+
+ if (m_stop_parsing) {
+ dbg() << "Stop parsing! :^)";
+ break;
+ }
}
// "The end"
@@ -497,8 +502,8 @@ void HTMLDocumentParser::handle_after_body(HTMLToken& token)
}
if (token.is_end_of_file()) {
- // FIXME: Stop parsing!
- TODO();
+ stop_parsing();
+ return;
}
if (token.is_end_tag() && token.tag_name() == "html") {
@@ -522,7 +527,7 @@ void HTMLDocumentParser::handle_after_after_body(HTMLToken& token)
}
if (token.is_end_of_file()) {
- dbg() << "Stop parsing! :^)";
+ stop_parsing();
return;
}
ASSERT_NOT_REACHED();
diff --git a/Libraries/LibWeb/Parser/HTMLDocumentParser.h b/Libraries/LibWeb/Parser/HTMLDocumentParser.h
index de4c817efb..df98658e4c 100644
--- a/Libraries/LibWeb/Parser/HTMLDocumentParser.h
+++ b/Libraries/LibWeb/Parser/HTMLDocumentParser.h
@@ -94,6 +94,8 @@ private:
void handle_in_row(HTMLToken&);
void handle_in_cell(HTMLToken&);
+ void stop_parsing() { m_stop_parsing = true; }
+
void generate_implied_end_tags(const FlyString& exception = {});
bool stack_of_open_elements_has_element_with_tag_name_in_scope(const FlyString& tag_name);
NonnullRefPtr<Element> create_element_for(HTMLToken&);
@@ -131,6 +133,7 @@ private:
bool m_invoked_via_document_write { false };
bool m_aborted { false };
bool m_parser_pause_flag { false };
+ bool m_stop_parsing { false };
size_t m_script_nesting_level { 0 };
RefPtr<Document> m_document;