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

Unified Diff: Source/core/dom/SelectorQuery.h

Issue 18732004: Add fast path for querySelector(All) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 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
Index: Source/core/dom/SelectorQuery.h
diff --git a/Source/core/dom/SelectorQuery.h b/Source/core/dom/SelectorQuery.h
index c3bd41a27840db82d3e1c222baefbf4e375e69fd..f6950bb31c8a0a11b0c6a12f9db6db2504a44730 100644
--- a/Source/core/dom/SelectorQuery.h
+++ b/Source/core/dom/SelectorQuery.h
@@ -40,6 +40,8 @@ class Document;
class Element;
class Node;
class NodeList;
+class SimpleNodeList;
+class SpaceSplitString;
class SelectorDataList {
public:
@@ -55,10 +57,18 @@ private:
bool isFastCheckable;
};
+ bool canUseFastQuery(Node* rootNode) const;
bool selectorMatches(const SelectorData&, Element*, const Node*) const;
- std::pair<bool, Node*> findTraverseRoot(Node* traverseRoot) const;
- template <bool firstMatchOnly>
- void execute(Node* rootNode, Vector<RefPtr<Node> >&) const;
+ void collectElementsByClassName(Node* rootNode, const AtomicString& className, Vector<RefPtr<Node> >&) const;
+ Element* findElementByClassName(Node* rootNode, const AtomicString& className) const;
+ void collectElementsByTagName(Node* rootNode, const QualifiedName& tagName, Vector<RefPtr<Node> >&) const;
+ Element* findElementByTagName(Node* rootNode, const QualifiedName& tagName) const;
+ PassOwnPtr<SimpleNodeList> findTraverseRoots(Node* rootNode, bool& matchTraverseRoots) const;
+ void executeSlowQueryAll(Node* rootNode, Vector<RefPtr<Node> >& matchedElements) const;
+ void executeQueryAll(Node* rootNode, Vector<RefPtr<Node> >& matchedElements) const;
+ Node* findTraverseRoot(Node* rootNode, bool& matchTraverseRoot) const;
+ Element* executeSlowQueryFirst(Node* rootNode) const;
+ Element* executeQueryFirst(Node* rootNode) const;
Vector<SelectorData> m_selectors;
};

Powered by Google App Engine
This is Rietveld 408576698