浏览代码

LibWeb: User getter and setter for Comment type HTMLTokens

Max Wipfli 4 年之前
父节点
当前提交
e8e9426b4f

+ 6 - 8
Userland/Libraries/LibWeb/HTML/Parser/HTMLDocumentParser.cpp

@@ -317,7 +317,7 @@ void HTMLDocumentParser::handle_initial(HTMLToken& token)
     }
 
     if (token.is_comment()) {
-        auto comment = adopt_ref(*new DOM::Comment(document(), token.m_comment_or_character.data));
+        auto comment = adopt_ref(*new DOM::Comment(document(), token.comment()));
         document().append_child(move(comment));
         return;
     }
@@ -347,7 +347,7 @@ void HTMLDocumentParser::handle_before_html(HTMLToken& token)
     }
 
     if (token.is_comment()) {
-        auto comment = adopt_ref(*new DOM::Comment(document(), token.m_comment_or_character.data));
+        auto comment = adopt_ref(*new DOM::Comment(document(), token.comment()));
         document().append_child(move(comment));
         return;
     }
@@ -520,9 +520,8 @@ AnythingElse:
 
 void HTMLDocumentParser::insert_comment(HTMLToken& token)
 {
-    auto data = token.m_comment_or_character.data;
     auto adjusted_insertion_location = find_appropriate_place_for_inserting_node();
-    adjusted_insertion_location.parent->insert_before(adopt_ref(*new DOM::Comment(document(), data)), adjusted_insertion_location.insert_before_sibling);
+    adjusted_insertion_location.parent->insert_before(adopt_ref(*new DOM::Comment(document(), token.comment())), adjusted_insertion_location.insert_before_sibling);
 }
 
 void HTMLDocumentParser::handle_in_head(HTMLToken& token)
@@ -832,9 +831,8 @@ void HTMLDocumentParser::handle_after_body(HTMLToken& token)
     }
 
     if (token.is_comment()) {
-        auto data = token.m_comment_or_character.data;
         auto& insertion_location = m_stack_of_open_elements.first();
-        insertion_location.append_child(adopt_ref(*new DOM::Comment(document(), data)));
+        insertion_location.append_child(adopt_ref(*new DOM::Comment(document(), token.comment())));
         return;
     }
 
@@ -870,7 +868,7 @@ void HTMLDocumentParser::handle_after_body(HTMLToken& token)
 void HTMLDocumentParser::handle_after_after_body(HTMLToken& token)
 {
     if (token.is_comment()) {
-        auto comment = adopt_ref(*new DOM::Comment(document(), token.m_comment_or_character.data));
+        auto comment = adopt_ref(*new DOM::Comment(document(), token.comment()));
         document().append_child(move(comment));
         return;
     }
@@ -2751,7 +2749,7 @@ void HTMLDocumentParser::handle_after_frameset(HTMLToken& token)
 void HTMLDocumentParser::handle_after_after_frameset(HTMLToken& token)
 {
     if (token.is_comment()) {
-        auto comment = adopt_ref(*new DOM::Comment(document(), token.m_comment_or_character.data));
+        auto comment = adopt_ref(*new DOM::Comment(document(), token.comment()));
         document().append_child(move(comment));
         return;
     }

+ 12 - 0
Userland/Libraries/LibWeb/HTML/Parser/HTMLToken.h

@@ -97,6 +97,18 @@ public:
         }
     }
 
+    String const& comment() const
+    {
+        VERIFY(is_comment());
+        return m_comment_or_character.data;
+    }
+
+    void set_comment(String comment)
+    {
+        VERIFY(is_comment());
+        m_comment_or_character.data = move(comment);
+    }
+
     String tag_name() const
     {
         VERIFY(is_start_tag() || is_end_tag());

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

@@ -406,7 +406,7 @@ _StartOfFunction:
             {
                 ON('>')
                 {
-                    m_current_token.m_comment_or_character.data = consume_current_builder();
+                    m_current_token.set_comment(consume_current_builder());
                     SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
                 }
                 ON_EOF
@@ -1392,7 +1392,7 @@ _StartOfFunction:
                 ON_EOF
                 {
                     log_parse_error();
-                    m_current_token.m_comment_or_character.data = consume_current_builder();
+                    m_current_token.set_comment(consume_current_builder());
                     EMIT_CURRENT_TOKEN;
                     EMIT_EOF;
                 }
@@ -1408,7 +1408,7 @@ _StartOfFunction:
             {
                 ON('>')
                 {
-                    m_current_token.m_comment_or_character.data = consume_current_builder();
+                    m_current_token.set_comment(consume_current_builder());
                     SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
                 }
                 ON('!')
@@ -1423,7 +1423,7 @@ _StartOfFunction:
                 ON_EOF
                 {
                     log_parse_error();
-                    m_current_token.m_comment_or_character.data = consume_current_builder();
+                    m_current_token.set_comment(consume_current_builder());
                     EMIT_CURRENT_TOKEN;
                     EMIT_EOF;
                 }
@@ -1445,13 +1445,13 @@ _StartOfFunction:
                 ON('>')
                 {
                     log_parse_error();
-                    m_current_token.m_comment_or_character.data = consume_current_builder();
+                    m_current_token.set_comment(consume_current_builder());
                     SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
                 }
                 ON_EOF
                 {
                     log_parse_error();
-                    m_current_token.m_comment_or_character.data = consume_current_builder();
+                    m_current_token.set_comment(consume_current_builder());
                     EMIT_CURRENT_TOKEN;
                     EMIT_EOF;
                 }
@@ -1472,7 +1472,7 @@ _StartOfFunction:
                 ON_EOF
                 {
                     log_parse_error();
-                    m_current_token.m_comment_or_character.data = consume_current_builder();
+                    m_current_token.set_comment(consume_current_builder());
                     EMIT_CURRENT_TOKEN;
                     EMIT_EOF;
                 }