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