Index: Source/core/html/HTMLElement.h |
diff --git a/Source/core/html/HTMLElement.h b/Source/core/html/HTMLElement.h |
index 8a572c556109ead9e4075d7b093518159614dddd..717a6085c2fa05e974f52bd1dff584fccb2440fc 100644 |
--- a/Source/core/html/HTMLElement.h |
+++ b/Source/core/html/HTMLElement.h |
@@ -1,7 +1,7 @@ |
/* |
* Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
* (C) 1999 Antti Koivisto (koivisto@kde.org) |
- * Copyright (C) 2004, 2005, 2006, 2007, 2009 Apple Inc. All rights reserved. |
+ * Copyright (C) 2004-2007, 2009, 2014 Apple Inc. All rights reserved. |
* |
* This library is free software; you can redistribute it and/or |
* modify it under the terms of the GNU Library General Public |
@@ -42,6 +42,8 @@ class HTMLElement : public Element { |
public: |
DECLARE_ELEMENT_FACTORY_WITH_TAGNAME(HTMLElement); |
+ bool hasTagName(const HTMLQualifiedName& name) const { return hasLocalName(name.localName()); } |
+ |
virtual String title() const OVERRIDE FINAL; |
virtual short tabIndex() const OVERRIDE; |
@@ -129,7 +131,6 @@ private: |
DEFINE_ELEMENT_TYPE_CASTS(HTMLElement, isHTMLElement()); |
-template <> inline bool isElementOfType<const HTMLElement>(const Node& node) { return node.isHTMLElement(); } |
template <typename T> bool isElementOfType(const HTMLElement&); |
template <> inline bool isElementOfType<const HTMLElement>(const HTMLElement&) { return true; } |
@@ -140,15 +141,20 @@ inline HTMLElement::HTMLElement(const QualifiedName& tagName, Document& document |
ScriptWrappable::init(this); |
} |
+inline bool Node::hasTagName(const HTMLQualifiedName& name) const |
+{ |
+ return isHTMLElement() && toHTMLElement(*this).hasTagName(name); |
+} |
+ |
// This requires isHTML*Element(const Element&) and isHTML*Element(const HTMLElement&). |
// When the input element is an HTMLElement, we don't need to check the namespace URI, just the local name. |
#define DEFINE_HTMLELEMENT_TYPE_CASTS_WITH_FUNCTION(thisType) \ |
inline bool is##thisType(const thisType* element); \ |
inline bool is##thisType(const thisType& element); \ |
inline bool is##thisType(const HTMLElement* element) { return element && is##thisType(*element); } \ |
+ inline bool is##thisType(const Node& node) { return node.isHTMLElement() ? is##thisType(toHTMLElement(node)) : false; } \ |
+ inline bool is##thisType(const Node* node) { return node && is##thisType(*node); } \ |
inline bool is##thisType(const Element* element) { return element && is##thisType(*element); } \ |
- inline bool is##thisType(const Node& node) { return node.isElementNode() ? is##thisType(toElement(node)) : false; } \ |
- inline bool is##thisType(const Node* node) { return node && node->isElementNode() ? is##thisType(*toElement(node)) : false; } \ |
template<typename T> inline bool is##thisType(const PassRefPtr<T>& node) { return is##thisType(node.get()); } \ |
template<typename T> inline bool is##thisType(const RefPtr<T>& node) { return is##thisType(node.get()); } \ |
template <> inline bool isElementOfType<const thisType>(const HTMLElement& element) { return is##thisType(element); } \ |