[webkit-reviews] review granted: [Bug 19002] Optimize id selectors in querySelector/querySelectorAll : [Attachment 21940] Now with tests and less bugs

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Jun 26 19:33:29 PDT 2008

Sam Weinig <sam at webkit.org> has granted David Smith <catfish.man at gmail.com>'s
request for review:
Bug 19002: Optimize id selectors in querySelector/querySelectorAll

Attachment 21940: Now with tests and less bugs

------- Additional Comments from Sam Weinig <sam at webkit.org>
Please include the speedup and on what test you tested it on.

You can probably put this with the other Id related methods (getElementById,
and hasElementWithId).
+    bool containsMultipleElementsWithId(const AtomicString& elementId) {
return m_duplicateIds.contains(elementId.impl()); }

The parens around (querySelector->next()) are not needed.
+    if (!(querySelector->next()) && querySelector->m_match == CSSSelector::Id)

Here too.
+    if (!(querySelector->next()) && querySelector->m_match == CSSSelector::Id
&& !document->containsMultipleElementsWithId(selectorValue)) {

You can remove the else here and and just return 0.
+	 if (element && (isDocumentNode() || element->isDescendantOf(this)))
+	     return element;
+    } else {
+	 // FIXME: We can speed this up by implementing caching similar to the
one use by getElementById


More information about the webkit-reviews mailing list