Title: [118748] trunk/Source/WebCore
Revision
118748
Author
[email protected]
Date
2012-05-29 03:42:47 -0700 (Tue, 29 May 2012)

Log Message

Remove m_rootNode and m_selectorChecker from SelectorQuery.h
https://bugs.webkit.org/show_bug.cgi?id=87650

Reviewed by Antti Koivisto.

To avoid parsing CSS selectors every time, I am planning to cache
SelectorQuery objects into a HashMap, which will be defined in
Node::querySelector(). To make the size of SelectorQuery small,
this patch removes m_rootNode and m_selectorChecker from SelectorQuery.h.

Tests: fast/dom/SelectorAPI/*. No change in test results.

* dom/Node.cpp:
(WebCore::Node::querySelector):
(WebCore::Node::querySelectorAll):
* dom/SelectorQuery.cpp:
(WebCore::SelectorQuery::SelectorQuery):
(WebCore):
(WebCore::SelectorQuery::queryAll):
(WebCore::SelectorQuery::queryFirst):
* dom/SelectorQuery.h:
(SelectorQuery):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (118747 => 118748)


--- trunk/Source/WebCore/ChangeLog	2012-05-29 10:06:05 UTC (rev 118747)
+++ trunk/Source/WebCore/ChangeLog	2012-05-29 10:42:47 UTC (rev 118748)
@@ -1,3 +1,28 @@
+2012-05-29  Kentaro Hara  <[email protected]>
+
+        Remove m_rootNode and m_selectorChecker from SelectorQuery.h
+        https://bugs.webkit.org/show_bug.cgi?id=87650
+
+        Reviewed by Antti Koivisto.
+
+        To avoid parsing CSS selectors every time, I am planning to cache
+        SelectorQuery objects into a HashMap, which will be defined in
+        Node::querySelector(). To make the size of SelectorQuery small,
+        this patch removes m_rootNode and m_selectorChecker from SelectorQuery.h.
+
+        Tests: fast/dom/SelectorAPI/*. No change in test results.
+
+        * dom/Node.cpp:
+        (WebCore::Node::querySelector):
+        (WebCore::Node::querySelectorAll):
+        * dom/SelectorQuery.cpp:
+        (WebCore::SelectorQuery::SelectorQuery):
+        (WebCore):
+        (WebCore::SelectorQuery::queryAll):
+        (WebCore::SelectorQuery::queryFirst):
+        * dom/SelectorQuery.h:
+        (SelectorQuery):
+
 2012-05-29  Eugene Klyuchnikov  <[email protected]>
 
         Web Inspector: Tabbed Settings Screen

Modified: trunk/Source/WebCore/dom/Node.cpp (118747 => 118748)


--- trunk/Source/WebCore/dom/Node.cpp	2012-05-29 10:06:05 UTC (rev 118747)
+++ trunk/Source/WebCore/dom/Node.cpp	2012-05-29 10:42:47 UTC (rev 118748)
@@ -1693,8 +1693,8 @@
         return 0;
     }
     
-    SelectorQuery selectorQuery(this, querySelectorList);
-    return selectorQuery.queryFirst();
+    SelectorQuery selectorQuery(querySelectorList);
+    return selectorQuery.queryFirst(this);
 }
 
 PassRefPtr<NodeList> Node::querySelectorAll(const String& selectors, ExceptionCode& ec)
@@ -1718,8 +1718,8 @@
         return 0;
     }
 
-    SelectorQuery selectorQuery(this, querySelectorList);
-    return selectorQuery.queryAll();
+    SelectorQuery selectorQuery(querySelectorList);
+    return selectorQuery.queryAll(this);
 }
 
 Document *Node::ownerDocument() const

Modified: trunk/Source/WebCore/dom/SelectorQuery.cpp (118747 => 118748)


--- trunk/Source/WebCore/dom/SelectorQuery.cpp	2012-05-29 10:06:05 UTC (rev 118747)
+++ trunk/Source/WebCore/dom/SelectorQuery.cpp	2012-05-29 10:42:47 UTC (rev 118748)
@@ -146,22 +146,24 @@
     }
 }
 
-SelectorQuery::SelectorQuery(Node* rootNode, const CSSSelectorList& selectorList)
-    : m_rootNode(rootNode)
-    , m_selectorChecker(rootNode->document(), !rootNode->document()->inQuirksMode())
-    , m_selectors(selectorList)
+SelectorQuery::SelectorQuery(const CSSSelectorList& selectorList)
+    : m_selectors(selectorList)
 {
-    m_selectorChecker.setMode(SelectorChecker::QueryingRules);
 }
 
-PassRefPtr<NodeList> SelectorQuery::queryAll() const
+
+PassRefPtr<NodeList> SelectorQuery::queryAll(Node* rootNode) const
 {
-    return m_selectors.queryAll(m_selectorChecker, m_rootNode);
+    SelectorChecker selectorChecker(rootNode->document(), !rootNode->document()->inQuirksMode());
+    selectorChecker.setMode(SelectorChecker::QueryingRules);
+    return m_selectors.queryAll(selectorChecker, rootNode);
 }
 
-PassRefPtr<Element> SelectorQuery::queryFirst() const
+PassRefPtr<Element> SelectorQuery::queryFirst(Node* rootNode) const
 {
-    return m_selectors.queryFirst(m_selectorChecker, m_rootNode);
+    SelectorChecker selectorChecker(rootNode->document(), !rootNode->document()->inQuirksMode());
+    selectorChecker.setMode(SelectorChecker::QueryingRules);
+    return m_selectors.queryFirst(selectorChecker, rootNode);
 }
 
 }

Modified: trunk/Source/WebCore/dom/SelectorQuery.h (118747 => 118748)


--- trunk/Source/WebCore/dom/SelectorQuery.h	2012-05-29 10:06:05 UTC (rev 118747)
+++ trunk/Source/WebCore/dom/SelectorQuery.h	2012-05-29 10:42:47 UTC (rev 118748)
@@ -67,13 +67,11 @@
 class SelectorQuery {
     WTF_MAKE_NONCOPYABLE(SelectorQuery);
 public:
-    SelectorQuery(Node* rootNode, const CSSSelectorList&);
+    SelectorQuery(const CSSSelectorList&);
 
-    PassRefPtr<NodeList> queryAll() const;
-    PassRefPtr<Element> queryFirst() const;
+    PassRefPtr<NodeList> queryAll(Node* rootNode) const;
+    PassRefPtr<Element> queryFirst(Node* rootNode) const;
 private:
-    Node* m_rootNode;
-    SelectorChecker m_selectorChecker;
     SelectorDataList m_selectors;
 };
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to