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

Unified Diff: Source/core/css/resolver/StyleResolver.cpp

Issue 18139007: Remove StyleResolverState::styledElement() since we can just check isHTMLElement() or isSVGElement() (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Add a comment Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/css/ElementRuleCollector.cpp ('k') | Source/core/css/resolver/StyleResolverState.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/css/resolver/StyleResolver.cpp
diff --git a/Source/core/css/resolver/StyleResolver.cpp b/Source/core/css/resolver/StyleResolver.cpp
index 34d2c0cf5422282725e5ad8e52e2b78e3ab7c928..73bc77ba1b99a34e70e16e6efa8eaa560ae4419e 100644
--- a/Source/core/css/resolver/StyleResolver.cpp
+++ b/Source/core/css/resolver/StyleResolver.cpp
@@ -456,17 +456,17 @@ void StyleResolver::matchAllRules(ElementRuleCollector& collector, bool matchAut
matchUserRules(collector, false);
// Now check author rules, beginning first with presentational attributes mapped from HTML.
- if (m_state.styledElement()) {
- collector.addElementStyleProperties(m_state.styledElement()->presentationAttributeStyle());
+ if (m_state.element()->isStyledElement()) {
+ collector.addElementStyleProperties(m_state.element()->presentationAttributeStyle());
// Now we check additional mapped declarations.
// Tables and table cells share an additional mapped rule that must be applied
// after all attributes, since their mapped style depends on the values of multiple attributes.
- collector.addElementStyleProperties(m_state.styledElement()->additionalPresentationAttributeStyle());
+ collector.addElementStyleProperties(m_state.element()->additionalPresentationAttributeStyle());
- if (m_state.styledElement()->isHTMLElement()) {
+ if (m_state.element()->isHTMLElement()) {
bool isAuto;
- TextDirection textDirection = toHTMLElement(m_state.styledElement())->directionalityIfhasDirAutoAttribute(isAuto);
+ TextDirection textDirection = toHTMLElement(m_state.element())->directionalityIfhasDirAutoAttribute(isAuto);
if (isAuto)
collector.matchedResult().addMatchedProperties(textDirection == LTR ? leftToRightDeclaration() : rightToLeftDeclaration());
}
@@ -476,21 +476,23 @@ void StyleResolver::matchAllRules(ElementRuleCollector& collector, bool matchAut
if (matchAuthorAndUserStyles)
matchAuthorRules(collector, false);
- // Now check our inline style attribute.
- if (matchAuthorAndUserStyles && m_state.styledElement() && m_state.styledElement()->inlineStyle()) {
- // Inline style is immutable as long as there is no CSSOM wrapper.
- // FIXME: Media control shadow trees seem to have problems with caching.
- bool isInlineStyleCacheable = !m_state.styledElement()->inlineStyle()->isMutable() && !m_state.styledElement()->isInShadowTree();
- // FIXME: Constify.
- collector.addElementStyleProperties(m_state.styledElement()->inlineStyle(), isInlineStyleCacheable);
- }
+ if (m_state.element()->isStyledElement()) {
+ // Now check our inline style attribute.
+ if (matchAuthorAndUserStyles && m_state.element()->inlineStyle()) {
+ // Inline style is immutable as long as there is no CSSOM wrapper.
+ // FIXME: Media control shadow trees seem to have problems with caching.
+ bool isInlineStyleCacheable = !m_state.element()->inlineStyle()->isMutable() && !m_state.element()->isInShadowTree();
+ // FIXME: Constify.
+ collector.addElementStyleProperties(m_state.element()->inlineStyle(), isInlineStyleCacheable);
+ }
- // Now check SMIL animation override style.
- if (includeSMILProperties && matchAuthorAndUserStyles && m_state.styledElement() && m_state.styledElement()->isSVGElement())
- collector.addElementStyleProperties(toSVGElement(m_state.styledElement())->animatedSMILStyleProperties(), false /* isCacheable */);
+ // Now check SMIL animation override style.
+ if (includeSMILProperties && matchAuthorAndUserStyles && m_state.element()->isSVGElement())
+ collector.addElementStyleProperties(toSVGElement(m_state.element())->animatedSMILStyleProperties(), false /* isCacheable */);
- if (m_state.styledElement() && m_state.styledElement()->hasActiveAnimations())
- collector.matchedResult().isCacheable = false;
+ if (m_state.element()->hasActiveAnimations())
+ collector.matchedResult().isCacheable = false;
+ }
}
static const unsigned cStyleSearchThreshold = 10;
@@ -635,7 +637,7 @@ bool StyleResolver::sharingCandidateHasIdenticalStyleAffectingAttributes(const E
return false;
}
- if (context.styledElement()->presentationAttributeStyle() != sharingCandidate->presentationAttributeStyle())
+ if (context.element()->presentationAttributeStyle() != sharingCandidate->presentationAttributeStyle())
return false;
if (context.element()->hasTagName(progressTag)) {
@@ -677,7 +679,7 @@ bool StyleResolver::canShareStyleWithElement(const ElementResolveContext& contex
return false;
if (!sharingCandidateHasIdenticalStyleAffectingAttributes(context, element))
return false;
- if (element->additionalPresentationAttributeStyle() != context.styledElement()->additionalPresentationAttributeStyle())
+ if (element->additionalPresentationAttributeStyle() != context.element()->additionalPresentationAttributeStyle())
return false;
if (element->hasID() && m_features.idsInRules.contains(element->idForStyleResolution().impl()))
@@ -746,29 +748,29 @@ inline Element* StyleResolver::findSiblingForStyleSharing(const ElementResolveCo
RenderStyle* StyleResolver::locateSharedStyle(const ElementResolveContext& context)
{
- if (!context.styledElement())
+ if (!context.element() || !context.element()->isStyledElement())
return 0;
// If the element has inline style it is probably unique.
- if (context.styledElement()->inlineStyle())
+ if (context.element()->inlineStyle())
return 0;
- if (context.styledElement()->isSVGElement() && toSVGElement(context.styledElement())->animatedSMILStyleProperties())
+ if (context.element()->isSVGElement() && toSVGElement(context.element())->animatedSMILStyleProperties())
return 0;
// Ids stop style sharing if they show up in the stylesheets.
- if (context.styledElement()->hasID() && m_features.idsInRules.contains(context.styledElement()->idForStyleResolution().impl()))
+ if (context.element()->hasID() && m_features.idsInRules.contains(context.element()->idForStyleResolution().impl()))
return 0;
// Active and hovered elements always make a chain towards the document node
// and no siblings or cousins will have the same state.
- if (context.styledElement()->hovered())
+ if (context.element()->hovered())
return 0;
- if (context.styledElement()->active())
+ if (context.element()->active())
return 0;
// There is always only one focused element.
- if (context.styledElement()->focused())
+ if (context.element()->focused())
return 0;
if (parentElementPreventsSharing(context.element()->parentElement()))
return 0;
- if (context.styledElement()->hasScopedHTMLStyleChild())
+ if (context.element()->hasScopedHTMLStyleChild())
return 0;
if (context.element() == context.document()->cssTarget())
return 0;
@@ -790,7 +792,7 @@ RenderStyle* StyleResolver::locateSharedStyle(const ElementResolveContext& conte
unsigned count = 0;
unsigned visitedNodeCount = 0;
Element* shareElement = 0;
- Node* cousinList = context.styledElement()->nextSibling();
+ Node* cousinList = context.element()->nextSibling();
while (cousinList) {
shareElement = findSiblingForStyleSharing(context, cousinList, count);
if (shareElement)
« no previous file with comments | « Source/core/css/ElementRuleCollector.cpp ('k') | Source/core/css/resolver/StyleResolverState.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698