summaryrefslogtreecommitdiff
path: root/Source/WebCore/xml/parser
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-08-21 10:57:44 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-08-21 10:57:44 +0200
commit5ef7c8a6a70875d4430752d146bdcb069605d71d (patch)
treef6256640b6c46d7da221435803cae65326817ba2 /Source/WebCore/xml/parser
parentdecad929f578d8db641febc8740649ca6c574638 (diff)
downloadqtwebkit-5ef7c8a6a70875d4430752d146bdcb069605d71d.tar.gz
Imported WebKit commit 356d83016b090995d08ad568f2d2c243aa55e831 (http://svn.webkit.org/repository/webkit/trunk@126147)
New snapshot including various build fixes for newer Qt 5
Diffstat (limited to 'Source/WebCore/xml/parser')
-rw-r--r--Source/WebCore/xml/parser/MarkupTokenBase.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/Source/WebCore/xml/parser/MarkupTokenBase.h b/Source/WebCore/xml/parser/MarkupTokenBase.h
index 6bb0cb8b4..14914eeb1 100644
--- a/Source/WebCore/xml/parser/MarkupTokenBase.h
+++ b/Source/WebCore/xml/parser/MarkupTokenBase.h
@@ -97,6 +97,8 @@ public:
m_range.m_end = 0;
m_baseOffset = 0;
m_data.clear();
+ m_orAllData = 0;
+ m_convertTo8BitIfPossible = false;
}
bool isUninitialized() { return m_type == TypeSet::Uninitialized; }
@@ -172,6 +174,13 @@ public:
m_data.append(character);
}
+ void appendToCharacter(UChar character)
+ {
+ ASSERT(m_type == TypeSet::Character);
+ m_data.append(character);
+ m_orAllData |= character;
+ }
+
template<typename T>
void appendToCharacter(T characters)
{
@@ -274,6 +283,7 @@ public:
{
ASSERT(m_type == TypeSet::Character);
m_data.clear();
+ m_orAllData = 0;
}
void eraseValueOfAttribute(size_t i)
@@ -294,6 +304,16 @@ public:
return m_data;
}
+ void setConvertTo8BitIfPossible()
+ {
+ m_convertTo8BitIfPossible = true;
+ }
+
+ bool isAll8BitData() const
+ {
+ return m_convertTo8BitIfPossible && (m_orAllData <= 0xff);
+ }
+
// FIXME: Distinguish between a missing public identifer and an empty one.
const WTF::Vector<UChar>& publicIdentifier() const
{
@@ -370,6 +390,8 @@ protected:
typename Attribute::Range m_range; // Always starts at zero.
int m_baseOffset;
DataVector m_data;
+ UChar m_orAllData;
+ bool m_convertTo8BitIfPossible;
// For DOCTYPE
OwnPtr<DoctypeData> m_doctypeData;
@@ -413,6 +435,7 @@ public:
break;
case Token::Type::Character:
m_externalCharacters = &token->characters();
+ m_isAll8BitData = token->isAll8BitData();
break;
default:
break;
@@ -423,6 +446,7 @@ public:
: m_type(type)
, m_name(name)
, m_externalCharacters(0)
+ , m_isAll8BitData(false)
, m_attributes(attributes)
{
ASSERT(usesName());
@@ -472,6 +496,11 @@ public:
return *m_externalCharacters;
}
+ bool isAll8BitData() const
+ {
+ return m_isAll8BitData;
+ }
+
const String& comment() const
{
ASSERT(m_type == Token::Type::Comment);
@@ -495,6 +524,7 @@ public:
void clearExternalCharacters()
{
m_externalCharacters = 0;
+ m_isAll8BitData = false;
}
protected:
@@ -522,6 +552,7 @@ protected:
// FIXME: Add a mechanism for "internalizing" the characters when the
// HTMLToken is destructed.
const typename Token::DataVector* m_externalCharacters;
+ bool m_isAll8BitData;
// For DOCTYPE
OwnPtr<typename Token::DoctypeData> m_doctypeData;