summaryrefslogtreecommitdiffstats
path: root/WebCore/html/HTMLToken.h
diff options
context:
space:
mode:
authorLeon Clarke <leonclarke@google.com>2010-07-15 12:03:35 +0100
committerLeon Clarke <leonclarke@google.com>2010-07-20 16:57:23 +0100
commite458d70a0d18538346f41b503114c9ebe6b2ce12 (patch)
tree86f1637deca2c524432a822e5fcedd4bef221091 /WebCore/html/HTMLToken.h
parentf43eabc081f7ce6af24b9df4953498a3cd6ca24d (diff)
downloadexternal_webkit-e458d70a0d18538346f41b503114c9ebe6b2ce12.zip
external_webkit-e458d70a0d18538346f41b503114c9ebe6b2ce12.tar.gz
external_webkit-e458d70a0d18538346f41b503114c9ebe6b2ce12.tar.bz2
Merge WebKit at r63173 : Initial merge by git.
Change-Id: Ife5af0c7c6261fbbc8ae6bc08c390efa9ef10b44
Diffstat (limited to 'WebCore/html/HTMLToken.h')
-rw-r--r--WebCore/html/HTMLToken.h49
1 files changed, 44 insertions, 5 deletions
diff --git a/WebCore/html/HTMLToken.h b/WebCore/html/HTMLToken.h
index 741f5cd..c2db87d 100644
--- a/WebCore/html/HTMLToken.h
+++ b/WebCore/html/HTMLToken.h
@@ -28,6 +28,7 @@
#include "NamedNodeMap.h"
#include <wtf/Noncopyable.h>
+#include <wtf/PassOwnPtr.h>
#include <wtf/Vector.h>
namespace WebCore {
@@ -173,6 +174,12 @@ public:
return m_selfClosing;
}
+ void setSelfClosing()
+ {
+ ASSERT(m_type == HTMLToken::StartTag || m_type == HTMLToken::EndTag);
+ m_selfClosing = true;
+ }
+
const AttributeList& attributes() const
{
ASSERT(m_type == StartTag || m_type == EndTag);
@@ -306,7 +313,7 @@ public:
break;
case HTMLToken::DOCTYPE:
m_name = AtomicString(token.name().data(), token.name().size());
- m_doctypeData.set(token.m_doctypeData.release());
+ m_doctypeData = token.m_doctypeData.release();
break;
case HTMLToken::EndOfFile:
break;
@@ -337,9 +344,17 @@ public:
}
}
- AtomicHTMLToken(HTMLToken::Type type, AtomicString name)
+ AtomicHTMLToken(HTMLToken::Type type, AtomicString name, PassRefPtr<NamedNodeMap> attributes = 0)
: m_type(type)
, m_name(name)
+ , m_attributes(attributes)
+ {
+ ASSERT(usesName());
+ }
+
+ explicit AtomicHTMLToken(const String& characters)
+ : m_type(HTMLToken::Character)
+ , m_data(characters)
{
}
@@ -347,13 +362,13 @@ public:
const AtomicString& name() const
{
- ASSERT(m_type == HTMLToken::StartTag || m_type == HTMLToken::EndTag || m_type == HTMLToken::DOCTYPE);
+ ASSERT(usesName());
return m_name;
}
void setName(const AtomicString& name)
{
- ASSERT(m_type == HTMLToken::StartTag || m_type == HTMLToken::EndTag || m_type == HTMLToken::DOCTYPE);
+ ASSERT(usesName());
m_name = name;
}
@@ -363,12 +378,26 @@ public:
return m_selfClosing;
}
+ Attribute* getAttributeItem(const QualifiedName& attributeName)
+ {
+ ASSERT(usesAttributes());
+ if (!m_attributes)
+ return 0;
+ return m_attributes->getAttributeItem(attributeName);
+ }
+
NamedNodeMap* attributes() const
{
- ASSERT(m_type == HTMLToken::StartTag || m_type == HTMLToken::EndTag);
+ ASSERT(usesAttributes());
return m_attributes.get();
}
+ PassRefPtr<NamedNodeMap> takeAtributes()
+ {
+ ASSERT(usesAttributes());
+ return m_attributes.release();
+ }
+
const String& characters() const
{
ASSERT(m_type == HTMLToken::Character);
@@ -404,6 +433,16 @@ public:
private:
HTMLToken::Type m_type;
+ bool usesName() const
+ {
+ return m_type == HTMLToken::StartTag || m_type == HTMLToken::EndTag || m_type == HTMLToken::DOCTYPE;
+ }
+
+ bool usesAttributes() const
+ {
+ return m_type == HTMLToken::StartTag || m_type == HTMLToken::EndTag;
+ }
+
// "name" for DOCTYPE, StartTag, and EndTag
AtomicString m_name;