summaryrefslogtreecommitdiff
path: root/Source/WebCore/xml/parser
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-10-23 10:25:11 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2012-10-23 10:25:11 +0200
commit5ea819f80c6840c492386bfafbffb059c7e2091f (patch)
tree42ad0b1d82eff090d14278a088ea0f4840a0f938 /Source/WebCore/xml/parser
parent43a42f108af6bcbd91f2672731c3047c26213af1 (diff)
downloadqtwebkit-5ea819f80c6840c492386bfafbffb059c7e2091f.tar.gz
Imported WebKit commit 20434eb8eb95065803473139d8794e98a7672f75 (http://svn.webkit.org/repository/webkit/trunk@132191)
New snapshot that should fix build with latest qtbase and the QPlastiqueStyle removal
Diffstat (limited to 'Source/WebCore/xml/parser')
-rw-r--r--Source/WebCore/xml/parser/MarkupTokenBase.h42
1 files changed, 33 insertions, 9 deletions
diff --git a/Source/WebCore/xml/parser/MarkupTokenBase.h b/Source/WebCore/xml/parser/MarkupTokenBase.h
index 896d1ff20..599f90cde 100644
--- a/Source/WebCore/xml/parser/MarkupTokenBase.h
+++ b/Source/WebCore/xml/parser/MarkupTokenBase.h
@@ -98,7 +98,6 @@ public:
m_baseOffset = 0;
m_data.clear();
m_orAllData = 0;
- m_convertTo8BitIfPossible = false;
}
bool isUninitialized() { return m_type == TypeSet::Uninitialized; }
@@ -132,10 +131,10 @@ public:
m_attributes.clear();
m_data.append(character);
+ m_orAllData |= character;
}
- template<typename T>
- void beginEndTag(T characters)
+ void beginEndTag(LChar character)
{
ASSERT(m_type == TypeSet::Uninitialized);
m_type = TypeSet::EndTag;
@@ -143,7 +142,18 @@ public:
m_currentAttribute = 0;
m_attributes.clear();
- m_data.append(characters);
+ m_data.append(character);
+ }
+
+ void beginEndTag(Vector<LChar, 32> characters)
+ {
+ ASSERT(m_type == TypeSet::Uninitialized);
+ m_type = TypeSet::EndTag;
+ m_selfClosing = false;
+ m_currentAttribute = 0;
+ m_attributes.clear();
+
+ m_data.appendVector(characters);
}
// Starting a character token works slightly differently than starting
@@ -172,6 +182,7 @@ public:
ASSERT(character);
beginDOCTYPE();
m_data.append(character);
+ m_orAllData |= character;
}
void appendToCharacter(char character)
@@ -198,6 +209,7 @@ public:
ASSERT(character);
ASSERT(m_type == TypeSet::Comment);
m_data.append(character);
+ m_orAllData |= character;
}
void addNewAttribute()
@@ -373,13 +385,23 @@ protected:
{
ASSERT(character);
m_data.append(character);
+ m_orAllData |= character;
}
-
+
inline const DataVector& name() const
{
return m_data;
}
+ inline const String nameString() const
+ {
+ if (!m_data.size())
+ return emptyString();
+ if (isAll8BitData())
+ return String::make8BitFrom16BitSource(m_data.data(), m_data.size());
+ return String(m_data.data(), m_data.size());
+ }
+
// FIXME: I'm not sure what the final relationship between MarkupTokenBase and
// AtomicMarkupTokenBase will be. I'm marking this a friend for now, but we'll
// want to end up with a cleaner interface between the two classes.
@@ -391,7 +413,6 @@ protected:
int m_baseOffset;
DataVector m_data;
UChar m_orAllData;
- bool m_convertTo8BitIfPossible;
// For DOCTYPE
OwnPtr<DoctypeData> m_doctypeData;
@@ -418,7 +439,7 @@ public:
ASSERT_NOT_REACHED();
break;
case Token::Type::DOCTYPE:
- m_name = AtomicString(token->name().data(), token->name().size());
+ m_name = AtomicString(token->nameString());
m_doctypeData = token->m_doctypeData.release();
break;
case Token::Type::EndOfFile:
@@ -426,12 +447,15 @@ public:
case Token::Type::StartTag:
case Token::Type::EndTag: {
m_selfClosing = token->selfClosing();
- m_name = AtomicString(token->name().data(), token->name().size());
+ m_name = AtomicString(token->nameString());
initializeAttributes(token->attributes());
break;
}
case Token::Type::Comment:
- m_data = String(token->comment().data(), token->comment().size());
+ if (token->isAll8BitData())
+ m_data = String::make8BitFrom16BitSource(token->comment().data(), token->comment().size());
+ else
+ m_data = String(token->comment().data(), token->comment().size());
break;
case Token::Type::Character:
m_externalCharacters = &token->characters();