mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 00:42:44 +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
					
				
					 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
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling