Title: [139523] trunk/Source/WebCore
Revision
139523
Author
[email protected]
Date
2013-01-11 17:28:40 -0800 (Fri, 11 Jan 2013)

Log Message

Move constructTreeFromHTMLToken into HTMLDocumentParser
https://bugs.webkit.org/show_bug.cgi?id=106694

Reviewed by Adam Barth.

This way it will sit parallel to a new constructTreeFromCompactHTMLToken method.

No new tests because no new functionality.

* html/parser/HTMLDocumentParser.cpp:
(WebCore::HTMLDocumentParser::pumpTokenizer):
(WebCore::HTMLDocumentParser::constructTreeFromHTMLToken):
(WebCore):
* html/parser/HTMLDocumentParser.h:
* html/parser/HTMLTreeBuilder.cpp:
* html/parser/HTMLTreeBuilder.h:
(HTMLTreeBuilder):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (139522 => 139523)


--- trunk/Source/WebCore/ChangeLog	2013-01-12 00:41:48 UTC (rev 139522)
+++ trunk/Source/WebCore/ChangeLog	2013-01-12 01:28:40 UTC (rev 139523)
@@ -1,3 +1,23 @@
+2013-01-11  Tony Gentilcore  <[email protected]>
+
+        Move constructTreeFromHTMLToken into HTMLDocumentParser
+        https://bugs.webkit.org/show_bug.cgi?id=106694
+
+        Reviewed by Adam Barth.
+
+        This way it will sit parallel to a new constructTreeFromCompactHTMLToken method.
+
+        No new tests because no new functionality.
+
+        * html/parser/HTMLDocumentParser.cpp:
+        (WebCore::HTMLDocumentParser::pumpTokenizer):
+        (WebCore::HTMLDocumentParser::constructTreeFromHTMLToken):
+        (WebCore):
+        * html/parser/HTMLDocumentParser.h:
+        * html/parser/HTMLTreeBuilder.cpp:
+        * html/parser/HTMLTreeBuilder.h:
+        (HTMLTreeBuilder):
+
 2013-01-11  Robert Iannucci  <[email protected]>
 
         Explicitly set msvs_cygwin_shell to true for actions in WebKit

Modified: trunk/Source/WebCore/html/parser/HTMLDocumentParser.cpp (139522 => 139523)


--- trunk/Source/WebCore/html/parser/HTMLDocumentParser.cpp	2013-01-12 00:41:48 UTC (rev 139522)
+++ trunk/Source/WebCore/html/parser/HTMLDocumentParser.cpp	2013-01-12 01:28:40 UTC (rev 139523)
@@ -273,7 +273,7 @@
             m_xssAuditor.filterToken(m_token);
         }
 
-        m_treeBuilder->constructTreeFromToken(m_token);
+        constructTreeFromHTMLToken(m_token);
         ASSERT(m_token.isUninitialized());
     }
 
@@ -299,6 +299,37 @@
     InspectorInstrumentation::didWriteHTML(cookie, m_input.current().currentLine().zeroBasedInt());
 }
 
+void HTMLDocumentParser::constructTreeFromHTMLToken(HTMLToken& rawToken)
+{
+    RefPtr<AtomicHTMLToken> token = AtomicHTMLToken::create(rawToken);
+
+    // We clear the rawToken in case constructTreeFromAtomicToken
+    // synchronously re-enters the parser. We don't clear the token immedately
+    // for Character tokens because the AtomicHTMLToken avoids copying the
+    // characters by keeping a pointer to the underlying buffer in the
+    // HTMLToken. Fortunately, Character tokens can't cause us to re-enter
+    // the parser.
+    //
+    // FIXME: Stop clearing the rawToken once we start running the parser off
+    // the main thread or once we stop allowing synchronous _javascript_
+    // execution from parseAttribute.
+    if (rawToken.type() != HTMLTokenTypes::Character)
+        rawToken.clear();
+
+    m_treeBuilder->constructTree(token.get());
+
+    // AtomicHTMLToken keeps a pointer to the HTMLToken's buffer instead
+    // of copying the characters for performance.
+    // Clear the external characters pointer before the raw token is cleared
+    // to make sure that we won't have a dangling pointer.
+    token->clearExternalCharacters();
+
+    if (!rawToken.isUninitialized()) {
+        ASSERT(rawToken.type() == HTMLTokenTypes::Character);
+        rawToken.clear();
+    }
+}
+
 bool HTMLDocumentParser::hasInsertionPoint()
 {
     // FIXME: The wasCreatedByScript() branch here might not be fully correct.

Modified: trunk/Source/WebCore/html/parser/HTMLDocumentParser.h (139522 => 139523)


--- trunk/Source/WebCore/html/parser/HTMLDocumentParser.h	2013-01-12 00:41:48 UTC (rev 139522)
+++ trunk/Source/WebCore/html/parser/HTMLDocumentParser.h	2013-01-12 01:28:40 UTC (rev 139523)
@@ -121,6 +121,7 @@
     bool canTakeNextToken(SynchronousMode, PumpSession&);
     void pumpTokenizer(SynchronousMode);
     void pumpTokenizerIfPossible(SynchronousMode);
+    void constructTreeFromHTMLToken(HTMLToken&);
 
     void runScriptsForPausedTreeBuilder();
     void resumeParsingAfterScriptExecution();

Modified: trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp (139522 => 139523)


--- trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp	2013-01-12 00:41:48 UTC (rev 139522)
+++ trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp	2013-01-12 01:28:40 UTC (rev 139523)
@@ -359,39 +359,8 @@
     return m_scriptToProcess.release();
 }
 
-void HTMLTreeBuilder::constructTreeFromToken(HTMLToken& rawToken)
+void HTMLTreeBuilder::constructTree(AtomicHTMLToken* token)
 {
-    RefPtr<AtomicHTMLToken> token = AtomicHTMLToken::create(rawToken);
-
-    // We clear the rawToken in case constructTreeFromAtomicToken
-    // synchronously re-enters the parser. We don't clear the token immedately
-    // for Character tokens because the AtomicHTMLToken avoids copying the
-    // characters by keeping a pointer to the underlying buffer in the
-    // HTMLToken. Fortunately, Character tokens can't cause use to re-enter
-    // the parser.
-    //
-    // FIXME: Stop clearing the rawToken once we start running the parser off
-    // the main thread or once we stop allowing synchronous _javascript_
-    // execution from parseAttribute.
-    if (rawToken.type() != HTMLTokenTypes::Character)
-        rawToken.clear();
-
-    constructTreeFromAtomicToken(token.get());
-
-    // AtomicHTMLToken keeps a pointer to the HTMLToken's buffer instead
-    // of copying the characters for performance.
-    // Clear the external characters pointer before the raw token is cleared
-    // to make sure that we won't have a dangling pointer.
-    token->clearExternalCharacters();
-
-    if (!rawToken.isUninitialized()) {
-        ASSERT(rawToken.type() == HTMLTokenTypes::Character);
-        rawToken.clear();
-    }
-}
-
-void HTMLTreeBuilder::constructTreeFromAtomicToken(AtomicHTMLToken* token)
-{
     if (shouldProcessTokenInForeignContent(token))
         processTokenInForeignContent(token);
     else

Modified: trunk/Source/WebCore/html/parser/HTMLTreeBuilder.h (139522 => 139523)


--- trunk/Source/WebCore/html/parser/HTMLTreeBuilder.h	2013-01-12 00:41:48 UTC (rev 139522)
+++ trunk/Source/WebCore/html/parser/HTMLTreeBuilder.h	2013-01-12 01:28:40 UTC (rev 139523)
@@ -78,9 +78,7 @@
 
     void detach();
 
-    // The token really should be passed as a const& since it's never modified.
-    void constructTreeFromToken(HTMLToken&);
-    void constructTreeFromAtomicToken(AtomicHTMLToken*);
+    void constructTree(AtomicHTMLToken*);
 
     bool hasParserBlockingScript() const { return !!m_scriptToProcess; }
     // Must be called to take the parser-blocking script before calling the parser again.

Modified: trunk/Source/WebCore/html/parser/TextDocumentParser.cpp (139522 => 139523)


--- trunk/Source/WebCore/html/parser/TextDocumentParser.cpp	2013-01-12 00:41:48 UTC (rev 139522)
+++ trunk/Source/WebCore/html/parser/TextDocumentParser.cpp	2013-01-12 01:28:40 UTC (rev 139523)
@@ -64,7 +64,7 @@
     attributes.append(Attribute(styleAttr, "word-wrap: break-word; white-space: pre-wrap;"));
     RefPtr<AtomicHTMLToken> fakePre = AtomicHTMLToken::create(HTMLTokenTypes::StartTag, preTag.localName(), attributes);
 
-    treeBuilder()->constructTreeFromAtomicToken(fakePre.get());
+    treeBuilder()->constructTree(fakePre.get());
     // Normally we would skip the first \n after a <pre> element, but we don't
     // want to skip the first \n for text documents!
     treeBuilder()->setShouldSkipLeadingNewline(false);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to