Title: [139953] trunk/Source/WebCore
- Revision
- 139953
- Author
- [email protected]
- Date
- 2013-01-16 19:36:48 -0800 (Wed, 16 Jan 2013)
Log Message
Introduce a method to build the tree from a CompactHTMLToken
https://bugs.webkit.org/show_bug.cgi?id=107082
Reviewed by Adam Barth.
No new tests because covered by existing fast/parser tests.
* html/parser/HTMLDocumentParser.cpp:
(WebCore):
(WebCore::HTMLDocumentParser::constructTreeFromCompactHTMLToken):
* html/parser/HTMLDocumentParser.h:
* html/parser/HTMLToken.h:
(AtomicHTMLToken):
(WebCore::AtomicHTMLToken::create):
(WebCore::AtomicHTMLToken::AtomicHTMLToken):
* xml/parser/MarkupTokenBase.h:
(WebCore::AtomicMarkupTokenBase::AtomicMarkupTokenBase):
(AtomicMarkupTokenBase):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (139952 => 139953)
--- trunk/Source/WebCore/ChangeLog 2013-01-17 03:25:53 UTC (rev 139952)
+++ trunk/Source/WebCore/ChangeLog 2013-01-17 03:36:48 UTC (rev 139953)
@@ -1,3 +1,24 @@
+2013-01-16 Tony Gentilcore <[email protected]>
+
+ Introduce a method to build the tree from a CompactHTMLToken
+ https://bugs.webkit.org/show_bug.cgi?id=107082
+
+ Reviewed by Adam Barth.
+
+ No new tests because covered by existing fast/parser tests.
+
+ * html/parser/HTMLDocumentParser.cpp:
+ (WebCore):
+ (WebCore::HTMLDocumentParser::constructTreeFromCompactHTMLToken):
+ * html/parser/HTMLDocumentParser.h:
+ * html/parser/HTMLToken.h:
+ (AtomicHTMLToken):
+ (WebCore::AtomicHTMLToken::create):
+ (WebCore::AtomicHTMLToken::AtomicHTMLToken):
+ * xml/parser/MarkupTokenBase.h:
+ (WebCore::AtomicMarkupTokenBase::AtomicMarkupTokenBase):
+ (AtomicMarkupTokenBase):
+
2013-01-16 Roger Fong <[email protected]>
Unreviewed build fix following r139918.
Modified: trunk/Source/WebCore/html/parser/HTMLDocumentParser.cpp (139952 => 139953)
--- trunk/Source/WebCore/html/parser/HTMLDocumentParser.cpp 2013-01-17 03:25:53 UTC (rev 139952)
+++ trunk/Source/WebCore/html/parser/HTMLDocumentParser.cpp 2013-01-17 03:36:48 UTC (rev 139953)
@@ -340,6 +340,16 @@
}
}
+#if ENABLE(THREADED_HTML_PARSER)
+
+void HTMLDocumentParser::constructTreeFromCompactHTMLToken(const CompactHTMLToken& compactToken)
+{
+ RefPtr<AtomicHTMLToken> token = AtomicHTMLToken::create(compactToken);
+ m_treeBuilder->constructTree(token.get());
+}
+
+#endif
+
bool HTMLDocumentParser::hasInsertionPoint()
{
// FIXME: The wasCreatedByScript() branch here might not be fully correct.
Modified: trunk/Source/WebCore/html/parser/HTMLDocumentParser.h (139952 => 139953)
--- trunk/Source/WebCore/html/parser/HTMLDocumentParser.h 2013-01-17 03:25:53 UTC (rev 139952)
+++ trunk/Source/WebCore/html/parser/HTMLDocumentParser.h 2013-01-17 03:36:48 UTC (rev 139953)
@@ -127,6 +127,9 @@
void pumpTokenizer(SynchronousMode);
void pumpTokenizerIfPossible(SynchronousMode);
void constructTreeFromHTMLToken(HTMLToken&);
+#if ENABLE(THREADED_HTML_PARSER)
+ void constructTreeFromCompactHTMLToken(const CompactHTMLToken&);
+#endif
void runScriptsForPausedTreeBuilder();
void resumeParsingAfterScriptExecution();
Modified: trunk/Source/WebCore/html/parser/HTMLToken.h (139952 => 139953)
--- trunk/Source/WebCore/html/parser/HTMLToken.h 2013-01-17 03:25:53 UTC (rev 139952)
+++ trunk/Source/WebCore/html/parser/HTMLToken.h 2013-01-17 03:36:48 UTC (rev 139953)
@@ -26,6 +26,7 @@
#ifndef HTMLToken_h
#define HTMLToken_h
+#include "CompactHTMLToken.h"
#include "HTMLTokenTypes.h"
#include "MarkupTokenBase.h"
#include <wtf/RefCounted.h>
@@ -68,6 +69,15 @@
return adoptRef(new AtomicHTMLToken(token));
}
+#if ENABLE(THREADED_HTML_PARSER)
+
+ static PassRefPtr<AtomicHTMLToken> create(const CompactHTMLToken& token)
+ {
+ return adoptRef(new AtomicHTMLToken(token));
+ }
+
+#endif
+
static PassRefPtr<AtomicHTMLToken> create(HTMLTokenTypes::Type type, const AtomicString& name, const Vector<Attribute>& attributes = Vector<Attribute>())
{
return adoptRef(new AtomicHTMLToken(type, name, attributes));
@@ -84,6 +94,48 @@
{
}
+#if ENABLE(THREADED_HTML_PARSER)
+
+ explicit AtomicHTMLToken(const CompactHTMLToken& token)
+ : AtomicMarkupTokenBase<HTMLToken>(token.type())
+ {
+ switch (m_type) {
+ case HTMLTokenTypes::Uninitialized:
+ ASSERT_NOT_REACHED();
+ break;
+ case HTMLTokenTypes::DOCTYPE:
+ m_name = token.data();
+ m_doctypeData = adoptPtr(new HTMLToken::DoctypeData());
+ m_doctypeData->m_hasPublicIdentifier = true;
+ m_doctypeData->m_publicIdentifier.append(token.publicIdentifier().characters(), token.publicIdentifier().length());
+ m_doctypeData->m_hasSystemIdentifier = true;
+ m_doctypeData->m_systemIdentifier.append(token.systemIdentifier().characters(), token.systemIdentifier().length());
+ break;
+ case HTMLTokenTypes::EndOfFile:
+ break;
+ case HTMLTokenTypes::StartTag:
+ m_attributes.reserveInitialCapacity(token.attributes().size());
+ for (Vector<CompactAttribute>::const_iterator it = token.attributes().begin(); it != token.attributes().end(); ++it)
+ m_attributes.append(Attribute(QualifiedName(nullAtom, it->name(), nullAtom), it->value()));
+ // Fall through!
+ case HTMLTokenTypes::EndTag:
+ m_selfClosing = token.selfClosing();
+ m_name = AtomicString(token.data());
+ break;
+ case HTMLTokenTypes::Comment:
+ m_data = token.data();
+ break;
+ case HTMLTokenTypes::Character:
+ m_externalCharacters = token.data().characters();
+ m_externalCharactersLength = token.data().length();
+ break;
+ default:
+ break;
+ }
+ }
+
+#endif
+
AtomicHTMLToken(HTMLTokenTypes::Type type, const AtomicString& name, const Vector<Attribute>& attributes = Vector<Attribute>())
: AtomicMarkupTokenBase<HTMLToken>(type, name, attributes)
{
Modified: trunk/Source/WebCore/xml/parser/MarkupTokenBase.h (139952 => 139953)
--- trunk/Source/WebCore/xml/parser/MarkupTokenBase.h 2013-01-17 03:25:53 UTC (rev 139952)
+++ trunk/Source/WebCore/xml/parser/MarkupTokenBase.h 2013-01-17 03:36:48 UTC (rev 139953)
@@ -473,6 +473,15 @@
}
}
+ explicit AtomicMarkupTokenBase(typename Token::Type::Type type)
+ : m_type(type)
+ , m_externalCharacters(0)
+ , m_externalCharactersLength(0)
+ , m_isAll8BitData(false)
+ , m_selfClosing(false)
+ {
+ }
+
AtomicMarkupTokenBase(typename Token::Type::Type type, const AtomicString& name, const Vector<Attribute>& attributes = Vector<Attribute>())
: m_type(type)
, m_name(name)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes