Title: [139760] trunk/Source/WebCore
- Revision
- 139760
- Author
- [email protected]
- Date
- 2013-01-15 11:06:25 -0800 (Tue, 15 Jan 2013)
Log Message
Make AtomicMarkupTokenBase use a bare UChar* for external characters
https://bugs.webkit.org/show_bug.cgi?id=106919
Reviewed by Eric Seidel.
This allows an arbitrary backing for external characters which is necessary for the threaded HTML parser.
No new tests because no new functionality.
* html/parser/HTMLTreeBuilder.cpp:
(WebCore::HTMLTreeBuilder::ExternalCharacterTokenBuffer::ExternalCharacterTokenBuffer):
(WebCore::HTMLTreeBuilder::processTokenInForeignContent):
* xml/parser/MarkupTokenBase.h:
(WebCore::AtomicMarkupTokenBase::AtomicMarkupTokenBase):
(WebCore::AtomicMarkupTokenBase::characters):
(AtomicMarkupTokenBase):
(WebCore::AtomicMarkupTokenBase::charactersLength):
(WebCore::AtomicMarkupTokenBase::clearExternalCharacters):
* xml/parser/XMLTreeBuilder.cpp:
(WebCore::XMLTreeBuilder::processCharacter):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (139759 => 139760)
--- trunk/Source/WebCore/ChangeLog 2013-01-15 19:00:28 UTC (rev 139759)
+++ trunk/Source/WebCore/ChangeLog 2013-01-15 19:06:25 UTC (rev 139760)
@@ -1,3 +1,26 @@
+2013-01-15 Tony Gentilcore <[email protected]>
+
+ Make AtomicMarkupTokenBase use a bare UChar* for external characters
+ https://bugs.webkit.org/show_bug.cgi?id=106919
+
+ Reviewed by Eric Seidel.
+
+ This allows an arbitrary backing for external characters which is necessary for the threaded HTML parser.
+
+ No new tests because no new functionality.
+
+ * html/parser/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::ExternalCharacterTokenBuffer::ExternalCharacterTokenBuffer):
+ (WebCore::HTMLTreeBuilder::processTokenInForeignContent):
+ * xml/parser/MarkupTokenBase.h:
+ (WebCore::AtomicMarkupTokenBase::AtomicMarkupTokenBase):
+ (WebCore::AtomicMarkupTokenBase::characters):
+ (AtomicMarkupTokenBase):
+ (WebCore::AtomicMarkupTokenBase::charactersLength):
+ (WebCore::AtomicMarkupTokenBase::clearExternalCharacters):
+ * xml/parser/XMLTreeBuilder.cpp:
+ (WebCore::XMLTreeBuilder::processCharacter):
+
2013-01-15 Arko Saha <[email protected]>
Microdata: propertiesCollection[name] should return undefined if item doesn't have a property named 'name'
Modified: trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp (139759 => 139760)
--- trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp 2013-01-15 19:00:28 UTC (rev 139759)
+++ trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp 2013-01-15 19:06:25 UTC (rev 139760)
@@ -149,8 +149,8 @@
WTF_MAKE_NONCOPYABLE(ExternalCharacterTokenBuffer);
public:
explicit ExternalCharacterTokenBuffer(AtomicHTMLToken* token)
- : m_current(token->characters().data())
- , m_end(m_current + token->characters().size())
+ : m_current(token->characters())
+ , m_end(m_current + token->charactersLength())
, m_isAll8BitData(token->isAll8BitData())
{
ASSERT(!isEmpty());
@@ -2854,7 +2854,7 @@
m_tree.insertComment(token);
return;
case HTMLTokenTypes::Character: {
- String characters = String(token->characters().data(), token->characters().size());
+ String characters = String(token->characters(), token->charactersLength());
m_tree.insertTextNode(characters);
if (m_framesetOk && !isAllWhitespaceOrReplacementCharacters(characters))
m_framesetOk = false;
Modified: trunk/Source/WebCore/xml/parser/MarkupTokenBase.h (139759 => 139760)
--- trunk/Source/WebCore/xml/parser/MarkupTokenBase.h 2013-01-15 19:00:28 UTC (rev 139759)
+++ trunk/Source/WebCore/xml/parser/MarkupTokenBase.h 2013-01-15 19:06:25 UTC (rev 139760)
@@ -458,7 +458,8 @@
m_data = String(token->comment().data(), token->comment().size());
break;
case Token::Type::Character:
- m_externalCharacters = &token->characters();
+ m_externalCharacters = token->characters().data();
+ m_externalCharactersLength = token->characters().size();
m_isAll8BitData = token->isAll8BitData();
break;
default:
@@ -470,6 +471,7 @@
: m_type(type)
, m_name(name)
, m_externalCharacters(0)
+ , m_externalCharactersLength(0)
, m_isAll8BitData(false)
, m_attributes(attributes)
{
@@ -514,12 +516,18 @@
return m_attributes;
}
- const typename Token::DataVector& characters() const
+ const UChar* characters() const
{
ASSERT(m_type == Token::Type::Character);
- return *m_externalCharacters;
+ return m_externalCharacters;
}
+ size_t charactersLength() const
+ {
+ ASSERT(m_type == Token::Type::Character);
+ return m_externalCharactersLength;
+ }
+
bool isAll8BitData() const
{
return m_isAll8BitData;
@@ -548,6 +556,7 @@
void clearExternalCharacters()
{
m_externalCharacters = 0;
+ m_externalCharactersLength = 0;
m_isAll8BitData = false;
}
@@ -575,7 +584,8 @@
//
// FIXME: Add a mechanism for "internalizing" the characters when the
// HTMLToken is destructed.
- const typename Token::DataVector* m_externalCharacters;
+ const UChar* m_externalCharacters;
+ size_t m_externalCharactersLength;
bool m_isAll8BitData;
// For DOCTYPE
Modified: trunk/Source/WebCore/xml/parser/XMLTreeBuilder.cpp (139759 => 139760)
--- trunk/Source/WebCore/xml/parser/XMLTreeBuilder.cpp 2013-01-15 19:00:28 UTC (rev 139759)
+++ trunk/Source/WebCore/xml/parser/XMLTreeBuilder.cpp 2013-01-15 19:06:25 UTC (rev 139760)
@@ -273,7 +273,7 @@
void XMLTreeBuilder::processCharacter(const AtomicXMLToken& token)
{
- appendToText(token.characters().data(), token.characters().size());
+ appendToText(token.characters(), token.charactersLength());
}
void XMLTreeBuilder::processCDATA(const AtomicXMLToken& token)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes