Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(780)

Unified Diff: Source/core/html/HTMLElement.h

Issue 406843002: Optimize hasTagName when called on an HTMLElement / SVGElement (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/html/HTMLCollection.cpp ('k') | Source/core/html/HTMLElement.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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); } \
« no previous file with comments | « Source/core/html/HTMLCollection.cpp ('k') | Source/core/html/HTMLElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698