summaryrefslogtreecommitdiffstats
path: root/WebCore/html/HTMLToken.h
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2010-07-22 15:37:06 +0100
committerBen Murdoch <benm@google.com>2010-07-27 10:20:25 +0100
commit967717af5423377c967781471ee106e2bb4e11c8 (patch)
tree1e701dc0a12f7f07cce1df4a7681717de77a211b /WebCore/html/HTMLToken.h
parentdcc30a9fca45f634b1d3a12b276d3a0ccce99fc3 (diff)
downloadexternal_webkit-967717af5423377c967781471ee106e2bb4e11c8.zip
external_webkit-967717af5423377c967781471ee106e2bb4e11c8.tar.gz
external_webkit-967717af5423377c967781471ee106e2bb4e11c8.tar.bz2
Merge WebKit at r63859 : Initial merge by git.
Change-Id: Ie8096c63ec7c991c9a9cba8bdd9c3b74a3b8ed62
Diffstat (limited to 'WebCore/html/HTMLToken.h')
-rw-r--r--WebCore/html/HTMLToken.h23
1 files changed, 13 insertions, 10 deletions
diff --git a/WebCore/html/HTMLToken.h b/WebCore/html/HTMLToken.h
index c2db87d..d2987f4 100644
--- a/WebCore/html/HTMLToken.h
+++ b/WebCore/html/HTMLToken.h
@@ -339,7 +339,7 @@ public:
m_data = String(token.comment().data(), token.comment().size());
break;
case HTMLToken::Character:
- m_data = String(token.characters().data(), token.characters().size());
+ m_externalCharacters = &token.characters();
break;
}
}
@@ -352,12 +352,6 @@ public:
ASSERT(usesName());
}
- explicit AtomicHTMLToken(const String& characters)
- : m_type(HTMLToken::Character)
- , m_data(characters)
- {
- }
-
HTMLToken::Type type() const { return m_type; }
const AtomicString& name() const
@@ -398,10 +392,10 @@ public:
return m_attributes.release();
}
- const String& characters() const
+ const HTMLToken::DataVector& characters() const
{
ASSERT(m_type == HTMLToken::Character);
- return m_data;
+ return *m_externalCharacters;
}
const String& comment() const
@@ -446,10 +440,19 @@ private:
// "name" for DOCTYPE, StartTag, and EndTag
AtomicString m_name;
- // "characters" for Character
// "data" for Comment
String m_data;
+ // "characters" for Character
+ //
+ // We don't want to copy the the characters out of the HTMLToken, so we
+ // keep a pointer to its buffer instead. This buffer is owned by the
+ // HTMLToken and causes a lifetime dependence between these objects.
+ //
+ // FIXME: Add a mechanism for "internalizing" the characters when the
+ // HTMLToken is destructed.
+ const HTMLToken::DataVector* m_externalCharacters;
+
// For DOCTYPE
OwnPtr<HTMLToken::DoctypeData> m_doctypeData;