Browse Source

LibWeb: Use an Optional<String> to track the last HTML start tag

Using an HTMLToken object here is unnecessary because the only
attribute we're interested in is the tag_name.
Gunnar Beutner 4 năm trước cách đây
mục cha
commit
d9e52997e2

+ 3 - 3
Userland/Libraries/LibWeb/HTML/Parser/HTMLTokenizer.cpp

@@ -2649,16 +2649,16 @@ void HTMLTokenizer::switch_to(Badge<HTMLDocumentParser>, State new_state)
 void HTMLTokenizer::will_emit(HTMLToken& token)
 {
     if (token.is_start_tag())
-        m_last_emitted_start_tag = token;
+        m_last_emitted_start_tag_name = token.tag_name();
     token.m_end_position = nth_last_position(0);
 }
 
 bool HTMLTokenizer::current_end_tag_token_is_appropriate() const
 {
     VERIFY(m_current_token.is_end_tag());
-    if (!m_last_emitted_start_tag.is_start_tag())
+    if (!m_last_emitted_start_tag_name.has_value())
         return false;
-    return m_current_token.tag_name() == m_last_emitted_start_tag.tag_name();
+    return m_current_token.tag_name() == m_last_emitted_start_tag_name.value();
 }
 
 bool HTMLTokenizer::consumed_as_part_of_an_attribute() const

+ 1 - 1
Userland/Libraries/LibWeb/HTML/Parser/HTMLTokenizer.h

@@ -164,7 +164,7 @@ private:
 
     HTMLToken m_current_token;
 
-    HTMLToken m_last_emitted_start_tag;
+    Optional<String> m_last_emitted_start_tag_name;
 
     bool m_has_emitted_eof { false };