Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. | 3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 141 StyleResolver(Document*, bool matchAuthorAndUserStyles); | 141 StyleResolver(Document*, bool matchAuthorAndUserStyles); |
| 142 ~StyleResolver(); | 142 ~StyleResolver(); |
| 143 | 143 |
| 144 // Using these during tree walk will allow style selector to optimize child and descendant selector lookups. | 144 // Using these during tree walk will allow style selector to optimize child and descendant selector lookups. |
| 145 void pushParentElement(Element*); | 145 void pushParentElement(Element*); |
| 146 void popParentElement(Element*); | 146 void popParentElement(Element*); |
| 147 void pushParentShadowRoot(const ShadowRoot*); | 147 void pushParentShadowRoot(const ShadowRoot*); |
| 148 void popParentShadowRoot(const ShadowRoot*); | 148 void popParentShadowRoot(const ShadowRoot*); |
| 149 | 149 |
| 150 PassRefPtr<RenderStyle> styleForElement(Element*, RenderStyle* parentStyle = 0, StyleSharingBehavior = AllowStyleSharing, | 150 PassRefPtr<RenderStyle> styleForElement(Element*, RenderStyle* parentStyle = 0, StyleSharingBehavior = AllowStyleSharing, |
| 151 RuleMatchingBehavior = MatchAllRules, RenderRegion* regionForStyling = 0 ); | 151 RuleMatchingBehavior = MatchAllRules, RenderRegion* regionForStyling = 0 , int childIndex = 0); |
| 152 | |
| 153 // childIndex's origin is 1, and avoids unnecessary tree walks to resolve nt h/nth-last selectors. | |
| 154 PassRefPtr<RenderStyle> styleForElement(Element* element, int childIndex) | |
| 155 { | |
| 156 return styleForElement(element, 0, AllowStyleSharing, MatchAllRules, 0, childIndex); | |
| 157 } | |
| 152 | 158 |
| 153 void keyframeStylesForAnimation(Element*, const RenderStyle*, KeyframeList&) ; | 159 void keyframeStylesForAnimation(Element*, const RenderStyle*, KeyframeList&) ; |
| 154 | 160 |
| 155 PassRefPtr<RenderStyle> pseudoStyleForElement(Element*, const PseudoStyleReq uest&, RenderStyle* parentStyle); | 161 PassRefPtr<RenderStyle> pseudoStyleForElement(Element*, const PseudoStyleReq uest&, RenderStyle* parentStyle); |
| 156 | 162 |
| 157 PassRefPtr<RenderStyle> styleForPage(int pageIndex); | 163 PassRefPtr<RenderStyle> styleForPage(int pageIndex); |
| 158 PassRefPtr<RenderStyle> defaultStyleForElement(); | 164 PassRefPtr<RenderStyle> defaultStyleForElement(); |
| 159 PassRefPtr<RenderStyle> styleForText(Text*); | 165 PassRefPtr<RenderStyle> styleForText(Text*); |
| 160 | 166 |
| 161 static PassRefPtr<RenderStyle> styleForDocument(Document*, CSSFontSelector* = 0); | 167 static PassRefPtr<RenderStyle> styleForDocument(Document*, CSSFontSelector* = 0); |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 179 DocumentRuleSets& ruleSets() { return m_ruleSets; } | 185 DocumentRuleSets& ruleSets() { return m_ruleSets; } |
| 180 const DocumentRuleSets& ruleSets() const { return m_ruleSets; } | 186 const DocumentRuleSets& ruleSets() const { return m_ruleSets; } |
| 181 SelectorFilter& selectorFilter() { return m_selectorFilter; } | 187 SelectorFilter& selectorFilter() { return m_selectorFilter; } |
| 182 | 188 |
| 183 ScopedStyleResolver* ensureScopedStyleResolver(const ContainerNode* scope) | 189 ScopedStyleResolver* ensureScopedStyleResolver(const ContainerNode* scope) |
| 184 { | 190 { |
| 185 return m_styleTree.ensureScopedStyleResolver(scope ? scope : document()) ; | 191 return m_styleTree.ensureScopedStyleResolver(scope ? scope : document()) ; |
| 186 } | 192 } |
| 187 | 193 |
| 188 private: | 194 private: |
| 189 void initElement(Element*); | 195 void initElement(Element*, int childIndex = 0); |
|
eseidel
2013/06/04 06:29:35
This method is so horrible and must die. StyleRes
eseidel
2013/06/04 06:29:35
Why 0? isn't that the firstChild?
| |
| 190 RenderStyle* locateSharedStyle(); | 196 RenderStyle* locateSharedStyle(); |
| 191 bool styleSharingCandidateMatchesRuleSet(RuleSet*); | 197 bool styleSharingCandidateMatchesRuleSet(RuleSet*); |
| 192 Node* locateCousinList(Element* parent, unsigned& visitedNodeCount) const; | 198 Node* locateCousinList(Element* parent, unsigned& visitedNodeCount) const; |
| 193 StyledElement* findSiblingForStyleSharing(Node*, unsigned& count) const; | 199 StyledElement* findSiblingForStyleSharing(Node*, unsigned& count) const; |
| 194 bool canShareStyleWithElement(StyledElement*) const; | 200 bool canShareStyleWithElement(StyledElement*) const; |
| 195 | 201 |
| 196 PassRefPtr<RenderStyle> styleForKeyframe(const RenderStyle*, const StyleKeyf rame*, KeyframeValue&); | 202 PassRefPtr<RenderStyle> styleForKeyframe(const RenderStyle*, const StyleKeyf rame*, KeyframeValue&); |
| 197 | 203 |
| 198 public: | 204 public: |
| 199 // These methods will give back the set of rules that matched for a given el ement (or a pseudo-element). | 205 // These methods will give back the set of rules that matched for a given el ement (or a pseudo-element). |
| (...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 475 PseudoId ignoreDynamicPseudo = NOPSEUDO; | 481 PseudoId ignoreDynamicPseudo = NOPSEUDO; |
| 476 if (selectorChecker.match(selectorCheckingContext, ignoreDynamicPseudo, DOMSiblingTraversalStrategy()) == SelectorChecker::SelectorMatches) | 482 if (selectorChecker.match(selectorCheckingContext, ignoreDynamicPseudo, DOMSiblingTraversalStrategy()) == SelectorChecker::SelectorMatches) |
| 477 return true; | 483 return true; |
| 478 } | 484 } |
| 479 return false; | 485 return false; |
| 480 } | 486 } |
| 481 | 487 |
| 482 } // namespace WebCore | 488 } // namespace WebCore |
| 483 | 489 |
| 484 #endif // StyleResolver_h | 490 #endif // StyleResolver_h |
| OLD | NEW |