mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-21 20:15:17 +00:00
LibWeb: Add a way to stop the new HTML parser
Some things are specced to "stop parsing", which basically just means to stop fetching tokens and jump to "The end"
This commit is contained in:
parent
00b44ab148
commit
68b1bdc234
Notes:
sideshowbarker
2024-07-19 06:01:32 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/68b1bdc2346
2 changed files with 11 additions and 3 deletions
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue