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

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: Patch for landing (rebased) 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
« no previous file with comments | « PerformanceTests/Parser/query-selector-all-last.html ('k') | Source/core/dom/SelectorQuery.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/dom/SelectorQuery.h
diff --git a/Source/core/dom/SelectorQuery.h b/Source/core/dom/SelectorQuery.h
index 22063039ce3aeae1625aa9acfc91a051fe1a7dc1..2e3bbe47a2bc5f55d7407abbfc4b25b486e300d3 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;
};
« no previous file with comments | « PerformanceTests/Parser/query-selector-all-last.html ('k') | Source/core/dom/SelectorQuery.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698