Index: Source/core/html/parser/HTMLToken.h |
diff --git a/Source/core/html/parser/HTMLToken.h b/Source/core/html/parser/HTMLToken.h |
index e2b67fc33aa0894ad2f202b7a7e5fbda7455279b..ca56fc249843559aa963106ec21b3d6b3caa65bd 100644 |
--- a/Source/core/html/parser/HTMLToken.h |
+++ b/Source/core/html/parser/HTMLToken.h |
@@ -27,6 +27,7 @@ |
#define HTMLToken_h |
#include "core/dom/Attribute.h" |
+#include "core/html/parser/HTMLParserIdioms.h" |
#include "wtf/PassOwnPtr.h" |
#include "wtf/RefCounted.h" |
#include "wtf/RefPtr.h" |
@@ -43,11 +44,10 @@ public: |
{ |
} |
- // FIXME: This should use String instead of Vector<UChar>. |
bool m_hasPublicIdentifier; |
bool m_hasSystemIdentifier; |
- WTF::Vector<UChar> m_publicIdentifier; |
- WTF::Vector<UChar> m_systemIdentifier; |
+ String m_publicIdentifier; |
+ String m_systemIdentifier; |
bool m_forceQuirks; |
}; |
@@ -112,6 +112,18 @@ public: |
m_orAllData = 0; |
} |
+ void finalizeDoctypePublicIdentifier() |
+ { |
+ m_doctypeData->m_publicIdentifier = attemptStaticStringCreation(m_identifierBuffer, Likely8Bit); |
+ m_identifierBuffer.clear(); |
+ } |
+ |
+ void finalizeDoctypeSystemIdentifier() |
+ { |
+ m_doctypeData->m_systemIdentifier = StringImpl::create8BitIfPossible(m_identifierBuffer); |
+ m_identifierBuffer.clear(); |
+ } |
+ |
bool isUninitialized() { return m_type == Uninitialized; } |
Type type() const { return m_type; } |
@@ -190,14 +202,14 @@ public: |
} |
// FIXME: Distinguish between a missing public identifer and an empty one. |
- const WTF::Vector<UChar>& publicIdentifier() const |
+ const String& publicIdentifier() const |
{ |
ASSERT(m_type == DOCTYPE); |
return m_doctypeData->m_publicIdentifier; |
} |
// FIXME: Distinguish between a missing system identifer and an empty one. |
- const WTF::Vector<UChar>& systemIdentifier() const |
+ const String& systemIdentifier() const |
{ |
ASSERT(m_type == DOCTYPE); |
return m_doctypeData->m_systemIdentifier; |
@@ -207,14 +219,12 @@ public: |
{ |
ASSERT(m_type == DOCTYPE); |
m_doctypeData->m_hasPublicIdentifier = true; |
- m_doctypeData->m_publicIdentifier.clear(); |
} |
void setSystemIdentifierToEmptyString() |
{ |
ASSERT(m_type == DOCTYPE); |
m_doctypeData->m_hasSystemIdentifier = true; |
- m_doctypeData->m_systemIdentifier.clear(); |
} |
void appendToPublicIdentifier(UChar character) |
@@ -222,7 +232,7 @@ public: |
ASSERT(character); |
ASSERT(m_type == DOCTYPE); |
ASSERT(m_doctypeData->m_hasPublicIdentifier); |
- m_doctypeData->m_publicIdentifier.append(character); |
+ m_identifierBuffer.append(character); |
} |
void appendToSystemIdentifier(UChar character) |
@@ -230,7 +240,7 @@ public: |
ASSERT(character); |
ASSERT(m_type == DOCTYPE); |
ASSERT(m_doctypeData->m_hasSystemIdentifier); |
- m_doctypeData->m_systemIdentifier.append(character); |
+ m_identifierBuffer.append(character); |
} |
PassOwnPtr<DoctypeData> releaseDoctypeData() |
@@ -442,6 +452,7 @@ private: |
int m_baseOffset; |
DataVector m_data; |
UChar m_orAllData; |
+ Vector<UChar> m_identifierBuffer; |
abarth-chromium
2014/06/19 16:07:02
You haven't actually improved anything because you
|
// For StartTag and EndTag |
bool m_selfClosing; |