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

Side by Side Diff: Source/core/css/SelectorChecker.cpp

Issue 1099963003: Support type selector for camel-cased SVG elements in HTML. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix performance regression. tagMatches() became too big to be inlined on Linux. Created 5 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
(...skipping 11 matching lines...) Expand all
22 * You should have received a copy of the GNU Library General Public License 22 * You should have received a copy of the GNU Library General Public License
23 * along with this library; see the file COPYING.LIB. If not, write to 23 * along with this library; see the file COPYING.LIB. If not, write to
24 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 24 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
25 * Boston, MA 02110-1301, USA. 25 * Boston, MA 02110-1301, USA.
26 */ 26 */
27 27
28 #include "config.h" 28 #include "config.h"
29 #include "core/css/SelectorChecker.h" 29 #include "core/css/SelectorChecker.h"
30 30
31 #include "core/HTMLNames.h" 31 #include "core/HTMLNames.h"
32 #include "core/css/CSSLocalNameToLowerMaps.h"
32 #include "core/css/CSSSelectorList.h" 33 #include "core/css/CSSSelectorList.h"
33 #include "core/css/SiblingTraversalStrategies.h" 34 #include "core/css/SiblingTraversalStrategies.h"
34 #include "core/dom/Document.h" 35 #include "core/dom/Document.h"
35 #include "core/dom/ElementTraversal.h" 36 #include "core/dom/ElementTraversal.h"
36 #include "core/dom/Fullscreen.h" 37 #include "core/dom/Fullscreen.h"
37 #include "core/dom/NodeComputedStyle.h" 38 #include "core/dom/NodeComputedStyle.h"
38 #include "core/dom/StyleEngine.h" 39 #include "core/dom/StyleEngine.h"
39 #include "core/dom/Text.h" 40 #include "core/dom/Text.h"
40 #include "core/dom/shadow/ComposedTreeTraversal.h" 41 #include "core/dom/shadow/ComposedTreeTraversal.h"
41 #include "core/dom/shadow/InsertionPoint.h" 42 #include "core/dom/shadow/InsertionPoint.h"
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 bool elementIsHostInItsShadowTree = isHostInItsShadowTree(element, context.s cope); 544 bool elementIsHostInItsShadowTree = isHostInItsShadowTree(element, context.s cope);
544 545
545 // Only :host and :host-context() should match the host: http://drafts.csswg .org/css-scoping/#host-element 546 // Only :host and :host-context() should match the host: http://drafts.csswg .org/css-scoping/#host-element
546 if (elementIsHostInItsShadowTree && (!selector.isHostPseudoClass() 547 if (elementIsHostInItsShadowTree && (!selector.isHostPseudoClass()
547 && !context.treatShadowHostAsNormalScope 548 && !context.treatShadowHostAsNormalScope
548 && selector.match() != CSSSelector::PseudoElement)) 549 && selector.match() != CSSSelector::PseudoElement))
549 return false; 550 return false;
550 551
551 switch (selector.match()) { 552 switch (selector.match()) {
552 case CSSSelector::Tag: 553 case CSSSelector::Tag:
553 return SelectorChecker::tagMatches(element, selector.tagQName()); 554 return SelectorChecker::tagMatches(element, selector);
554 case CSSSelector::Class: 555 case CSSSelector::Class:
555 return element.hasClass() && element.classNames().contains(selector.valu e()); 556 return element.hasClass() && element.classNames().contains(selector.valu e());
556 case CSSSelector::Id: 557 case CSSSelector::Id:
557 return element.hasID() && element.idForStyleResolution() == selector.val ue(); 558 return element.hasID() && element.idForStyleResolution() == selector.val ue();
558 559
559 // Attribute selectors 560 // Attribute selectors
560 case CSSSelector::AttributeExact: 561 case CSSSelector::AttributeExact:
561 case CSSSelector::AttributeSet: 562 case CSSSelector::AttributeSet:
562 case CSSSelector::AttributeHyphen: 563 case CSSSelector::AttributeHyphen:
563 case CSSSelector::AttributeList: 564 case CSSSelector::AttributeList:
(...skipping 606 matching lines...) Expand 10 before | Expand all | Expand 10 after
1170 bool SelectorChecker::matchesSpatialNavigationFocusPseudoClass(const Element& el ement) 1171 bool SelectorChecker::matchesSpatialNavigationFocusPseudoClass(const Element& el ement)
1171 { 1172 {
1172 return isHTMLOptionElement(element) && toHTMLOptionElement(element).spatialN avigationFocused() && isFrameFocused(element); 1173 return isHTMLOptionElement(element) && toHTMLOptionElement(element).spatialN avigationFocused() && isFrameFocused(element);
1173 } 1174 }
1174 1175
1175 bool SelectorChecker::matchesListBoxPseudoClass(const Element& element) 1176 bool SelectorChecker::matchesListBoxPseudoClass(const Element& element)
1176 { 1177 {
1177 return isHTMLSelectElement(element) && !toHTMLSelectElement(element).usesMen uList(); 1178 return isHTMLSelectElement(element) && !toHTMLSelectElement(element).usesMen uList();
1178 } 1179 }
1179 1180
1181 bool SelectorChecker::localNameMatchesLower(const AtomicString& elementName, con st AtomicString& camelCasedType)
1182 {
1183 return elementName != CSSLocalNameToLowerMaps::elementToLower(camelCasedType );
1184 }
1185
1180 template 1186 template
1181 SelectorChecker::Match SelectorChecker::match(const SelectorCheckingContext&, co nst DOMSiblingTraversalStrategy&, MatchResult*) const; 1187 SelectorChecker::Match SelectorChecker::match(const SelectorCheckingContext&, co nst DOMSiblingTraversalStrategy&, MatchResult*) const;
1182 1188
1183 template 1189 template
1184 SelectorChecker::Match SelectorChecker::match(const SelectorCheckingContext&, co nst ShadowDOMSiblingTraversalStrategy&, MatchResult*) const; 1190 SelectorChecker::Match SelectorChecker::match(const SelectorCheckingContext&, co nst ShadowDOMSiblingTraversalStrategy&, MatchResult*) const;
1185 1191
1186 } 1192 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698