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

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

Issue 1496533003: Implement a simple version of SelectorQuery. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert change to SelectorFilter.h Created 5 years 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: third_party/WebKit/Source/core/dom/SelectorQuery.h
diff --git a/third_party/WebKit/Source/core/dom/SelectorQuery.h b/third_party/WebKit/Source/core/dom/SelectorQuery.h
index 172fecdda138ec62d3e9558a6e082c906a1ca356..7c6ea13c45c6d6e520c82aac5c0d1b15e21fb0b5 100644
--- a/third_party/WebKit/Source/core/dom/SelectorQuery.h
+++ b/third_party/WebKit/Source/core/dom/SelectorQuery.h
@@ -35,71 +35,29 @@
namespace blink {
-class CSSSelector;
class ContainerNode;
class Document;
class Element;
class ExceptionState;
+class SelectorMatcher;
template <typename NodeType> class StaticNodeTypeList;
typedef StaticNodeTypeList<Element> StaticElementList;
-class SelectorDataList {
- DISALLOW_NEW();
-public:
- void initialize(const CSSSelectorList&);
- bool matches(Element&) const;
- Element* closest(Element&) const;
- PassRefPtrWillBeRawPtr<StaticElementList> queryAll(ContainerNode& rootNode) const;
- PassRefPtrWillBeRawPtr<Element> queryFirst(ContainerNode& rootNode) const;
-
-private:
- bool canUseFastQuery(const ContainerNode& rootNode) const;
- bool selectorMatches(const CSSSelector&, Element&, const ContainerNode&) const;
-
- template <typename SelectorQueryTrait>
- void collectElementsByClassName(ContainerNode& rootNode, const AtomicString& className, typename SelectorQueryTrait::OutputType&) const;
- template <typename SelectorQueryTrait>
- void collectElementsByTagName(ContainerNode& rootNode, const QualifiedName& tagName, typename SelectorQueryTrait::OutputType&) const;
-
- template <typename SelectorQueryTrait>
- void findTraverseRootsAndExecute(ContainerNode& rootNode, typename SelectorQueryTrait::OutputType&) const;
-
- enum MatchTraverseRootState { DoesNotMatchTraverseRoots, MatchesTraverseRoots };
- template <typename SelectorQueryTrait>
- void executeForTraverseRoot(const CSSSelector&, ContainerNode* traverseRoot, MatchTraverseRootState, ContainerNode& rootNode, typename SelectorQueryTrait::OutputType&) const;
- template <typename SelectorQueryTrait, typename SimpleElementListType>
- void executeForTraverseRoots(const CSSSelector&, SimpleElementListType& traverseRoots, MatchTraverseRootState, ContainerNode& rootNode, typename SelectorQueryTrait::OutputType&) const;
-
- template <typename SelectorQueryTrait>
- bool selectorListMatches(ContainerNode& rootNode, Element&, typename SelectorQueryTrait::OutputType&) const;
- template <typename SelectorQueryTrait>
- void executeSlow(ContainerNode& rootNode, typename SelectorQueryTrait::OutputType&) const;
- template <typename SelectorQueryTrait>
- void executeSlowTraversingShadowTree(ContainerNode& rootNode, typename SelectorQueryTrait::OutputType&) const;
- template <typename SelectorQueryTrait>
- void execute(ContainerNode& rootNode, typename SelectorQueryTrait::OutputType&) const;
- const CSSSelector* selectorForIdLookup(const CSSSelector&) const;
-
- Vector<const CSSSelector*> m_selectors;
- bool m_usesDeepCombinatorOrShadowPseudo : 1;
- bool m_needsUpdatedDistribution : 1;
-};
-
class SelectorQuery {
WTF_MAKE_NONCOPYABLE(SelectorQuery);
USING_FAST_MALLOC(SelectorQuery);
public:
static PassOwnPtr<SelectorQuery> adopt(CSSSelectorList&);
+ ~SelectorQuery();
bool matches(Element&) const;
Element* closest(Element&) const;
PassRefPtrWillBeRawPtr<StaticElementList> queryAll(ContainerNode& rootNode) const;
- PassRefPtrWillBeRawPtr<Element> queryFirst(ContainerNode& rootNode) const;
+ Element* queryFirst(ContainerNode& rootNode) const;
private:
explicit SelectorQuery(CSSSelectorList&);
- SelectorDataList m_selectors;
- CSSSelectorList m_selectorList;
+ OwnPtr<SelectorMatcher> m_matcher;
};
class SelectorQueryCache {
« no previous file with comments | « third_party/WebKit/Source/core/css/SelectorChecker.cpp ('k') | third_party/WebKit/Source/core/dom/SelectorQuery.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698