diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-23 10:25:11 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-23 10:25:11 +0200 |
commit | 5ea819f80c6840c492386bfafbffb059c7e2091f (patch) | |
tree | 42ad0b1d82eff090d14278a088ea0f4840a0f938 /Source/WebCore/xml/parser | |
parent | 43a42f108af6bcbd91f2672731c3047c26213af1 (diff) | |
download | qtwebkit-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.h | 42 |
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(); |