diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-08-23 17:03:15 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-08-23 17:03:15 +0200 |
commit | a73d1c176f2f3e0458861de8590dc20321a501ae (patch) | |
tree | d897fc5974797c3cb300d7f5916f258df765401f /Source/WebCore/html/parser/HTMLStackItem.h | |
parent | c311cf639cc1d6570d67b0a80a8ba04dc992a658 (diff) | |
download | qtwebkit-a73d1c176f2f3e0458861de8590dc20321a501ae.tar.gz |
Imported WebKit commit a5ae8a56a48e44ebfb9b81aaa5488affaffdb175 (http://svn.webkit.org/repository/webkit/trunk@126420)
New snapshot with OS X 10.6 build fix
Diffstat (limited to 'Source/WebCore/html/parser/HTMLStackItem.h')
-rw-r--r-- | Source/WebCore/html/parser/HTMLStackItem.h | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/Source/WebCore/html/parser/HTMLStackItem.h b/Source/WebCore/html/parser/HTMLStackItem.h index 371ac43f4..0a183bc26 100644 --- a/Source/WebCore/html/parser/HTMLStackItem.h +++ b/Source/WebCore/html/parser/HTMLStackItem.h @@ -29,6 +29,8 @@ #include "Element.h" #include "HTMLNames.h" #include "HTMLToken.h" +#include "MathMLNames.h" +#include "SVGNames.h" #include <wtf/RefCounted.h> #include <wtf/RefPtr.h> @@ -79,6 +81,123 @@ public: || hasTagName(HTMLNames::trTag); } + bool isInHTMLNamespace() const + { + // A DocumentFragment takes the place of the document element when parsing + // fragments and should be considered in the HTML namespace. + return namespaceURI() == HTMLNames::xhtmlNamespaceURI + || isDocumentFragmentNode(); // FIXME: Does this also apply to ShadowRoot? + } + + bool isNumberedHeaderElement() const + { + return hasTagName(HTMLNames::h1Tag) + || hasTagName(HTMLNames::h2Tag) + || hasTagName(HTMLNames::h3Tag) + || hasTagName(HTMLNames::h4Tag) + || hasTagName(HTMLNames::h5Tag) + || hasTagName(HTMLNames::h6Tag); + } + + bool isTableBodyContextElement() const + { + return hasTagName(HTMLNames::tbodyTag) + || hasTagName(HTMLNames::tfootTag) + || hasTagName(HTMLNames::theadTag); + } + + // http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#special + bool isSpecialNode() const + { + if (hasTagName(MathMLNames::miTag) + || hasTagName(MathMLNames::moTag) + || hasTagName(MathMLNames::mnTag) + || hasTagName(MathMLNames::msTag) + || hasTagName(MathMLNames::mtextTag) + || hasTagName(MathMLNames::annotation_xmlTag) + || hasTagName(SVGNames::foreignObjectTag) + || hasTagName(SVGNames::descTag) + || hasTagName(SVGNames::titleTag)) + return true; + if (isDocumentFragmentNode()) + return true; + if (!isInHTMLNamespace()) + return false; + const AtomicString& tagName = localName(); + return tagName == HTMLNames::addressTag + || tagName == HTMLNames::appletTag + || tagName == HTMLNames::areaTag + || tagName == HTMLNames::articleTag + || tagName == HTMLNames::asideTag + || tagName == HTMLNames::baseTag + || tagName == HTMLNames::basefontTag + || tagName == HTMLNames::bgsoundTag + || tagName == HTMLNames::blockquoteTag + || tagName == HTMLNames::bodyTag + || tagName == HTMLNames::brTag + || tagName == HTMLNames::buttonTag + || tagName == HTMLNames::captionTag + || tagName == HTMLNames::centerTag + || tagName == HTMLNames::colTag + || tagName == HTMLNames::colgroupTag + || tagName == HTMLNames::commandTag + || tagName == HTMLNames::ddTag + || tagName == HTMLNames::detailsTag + || tagName == HTMLNames::dirTag + || tagName == HTMLNames::divTag + || tagName == HTMLNames::dlTag + || tagName == HTMLNames::dtTag + || tagName == HTMLNames::embedTag + || tagName == HTMLNames::fieldsetTag + || tagName == HTMLNames::figcaptionTag + || tagName == HTMLNames::figureTag + || tagName == HTMLNames::footerTag + || tagName == HTMLNames::formTag + || tagName == HTMLNames::frameTag + || tagName == HTMLNames::framesetTag + || isNumberedHeaderElement() + || tagName == HTMLNames::headTag + || tagName == HTMLNames::headerTag + || tagName == HTMLNames::hgroupTag + || tagName == HTMLNames::hrTag + || tagName == HTMLNames::htmlTag + || tagName == HTMLNames::iframeTag + || tagName == HTMLNames::imgTag + || tagName == HTMLNames::inputTag + || tagName == HTMLNames::isindexTag + || tagName == HTMLNames::liTag + || tagName == HTMLNames::linkTag + || tagName == HTMLNames::listingTag + || tagName == HTMLNames::marqueeTag + || tagName == HTMLNames::menuTag + || tagName == HTMLNames::metaTag + || tagName == HTMLNames::navTag + || tagName == HTMLNames::noembedTag + || tagName == HTMLNames::noframesTag + || tagName == HTMLNames::noscriptTag + || tagName == HTMLNames::objectTag + || tagName == HTMLNames::olTag + || tagName == HTMLNames::pTag + || tagName == HTMLNames::paramTag + || tagName == HTMLNames::plaintextTag + || tagName == HTMLNames::preTag + || tagName == HTMLNames::scriptTag + || tagName == HTMLNames::sectionTag + || tagName == HTMLNames::selectTag + || tagName == HTMLNames::styleTag + || tagName == HTMLNames::summaryTag + || tagName == HTMLNames::tableTag + || isTableBodyContextElement() + || tagName == HTMLNames::tdTag + || tagName == HTMLNames::textareaTag + || tagName == HTMLNames::thTag + || tagName == HTMLNames::titleTag + || tagName == HTMLNames::trTag + || tagName == HTMLNames::ulTag + || tagName == HTMLNames::wbrTag + || tagName == HTMLNames::xmpTag; + } + private: HTMLStackItem(PassRefPtr<ContainerNode> node, ItemType type) : m_node(node) |