Index: Source/core/css/resolver/StyleResolver.cpp |
diff --git a/Source/core/css/resolver/StyleResolver.cpp b/Source/core/css/resolver/StyleResolver.cpp |
index 120bcd11433c8edaac1a498d8a17746ea66cf6b6..0846ea20abf784820d42703abc3a300cb538a6bd 100644 |
--- a/Source/core/css/resolver/StyleResolver.cpp |
+++ b/Source/core/css/resolver/StyleResolver.cpp |
@@ -70,7 +70,7 @@ |
#include "core/css/resolver/ViewportStyleResolver.h" |
#include "core/dom/CSSSelectorWatch.h" |
#include "core/dom/FirstLetterPseudoElement.h" |
-#include "core/dom/NodeLayoutStyle.h" |
+#include "core/dom/NodeComputedStyle.h" |
#include "core/dom/StyleEngine.h" |
#include "core/dom/Text.h" |
#include "core/dom/shadow/ElementShadow.h" |
@@ -105,7 +105,7 @@ namespace blink { |
using namespace HTMLNames; |
-LayoutStyle* StyleResolver::s_styleNotYetAvailable; |
+ComputedStyle* StyleResolver::s_styleNotYetAvailable; |
static StylePropertySet* leftToRightDeclaration() |
{ |
@@ -475,18 +475,18 @@ void StyleResolver::matchAllRules(StyleResolverState& state, ElementRuleCollecto |
} |
} |
-PassRefPtr<LayoutStyle> StyleResolver::styleForDocument(Document& document) |
+PassRefPtr<ComputedStyle> StyleResolver::styleForDocument(Document& document) |
{ |
const LocalFrame* frame = document.frame(); |
- RefPtr<LayoutStyle> documentStyle = LayoutStyle::create(); |
+ RefPtr<ComputedStyle> documentStyle = ComputedStyle::create(); |
documentStyle->setRTLOrdering(document.visuallyOrdered() ? VisualOrder : LogicalOrder); |
documentStyle->setZoom(frame && !document.printing() ? frame->pageZoomFactor() : 1); |
documentStyle->setLocale(document.contentLanguage()); |
documentStyle->setZIndex(0); |
documentStyle->setUserModify(document.inDesignMode() ? READ_WRITE : READ_ONLY); |
// These are designed to match the user-agent stylesheet values for the document element |
- // so that the common case doesn't need to create a new LayoutStyle in |
+ // so that the common case doesn't need to create a new ComputedStyle in |
// Document::inheritHtmlAndBodyElementStyles. |
documentStyle->setDisplay(BLOCK); |
documentStyle->setScrollBlocksOn(WebScrollBlocksOnStartTouch | WebScrollBlocksOnWheelEvent); |
@@ -518,10 +518,10 @@ AuthorStyleInfo StyleResolver::authorStyleInfo(StyleResolverState& state) |
return AuthorStyleInfo(backgroundChanged, borderChanged); |
} |
-void StyleResolver::adjustLayoutStyle(StyleResolverState& state, Element* element) |
+void StyleResolver::adjustComputedStyle(StyleResolverState& state, Element* element) |
{ |
StyleAdjuster adjuster(document().inQuirksMode()); |
- adjuster.adjustLayoutStyle(state.mutableStyleRef(), *state.parentStyle(), element, authorStyleInfo(state)); |
+ adjuster.adjustComputedStyle(state.mutableStyleRef(), *state.parentStyle(), element, authorStyleInfo(state)); |
} |
// Start loading resources referenced by this style. |
@@ -531,7 +531,7 @@ void StyleResolver::loadPendingResources(StyleResolverState& state) |
document().styleEngine().fontSelector()->fontLoader()->loadPendingFonts(); |
} |
-PassRefPtr<LayoutStyle> StyleResolver::styleForElement(Element* element, const LayoutStyle* defaultParent, StyleSharingBehavior sharingBehavior, |
+PassRefPtr<ComputedStyle> StyleResolver::styleForElement(Element* element, const ComputedStyle* defaultParent, StyleSharingBehavior sharingBehavior, |
RuleMatchingBehavior matchingBehavior) |
{ |
ASSERT(document().frame()); |
@@ -543,7 +543,7 @@ PassRefPtr<LayoutStyle> StyleResolver::styleForElement(Element* element, const L |
// will vanish if a style recalc happens during loading. |
if (sharingBehavior == AllowStyleSharing && !document().isRenderingReady() && !element->layoutObject()) { |
if (!s_styleNotYetAvailable) { |
- s_styleNotYetAvailable = LayoutStyle::create().leakRef(); |
+ s_styleNotYetAvailable = ComputedStyle::create().leakRef(); |
s_styleNotYetAvailable->setDisplay(NONE); |
s_styleNotYetAvailable->font().update(document().styleEngine().fontSelector()); |
} |
@@ -560,27 +560,27 @@ PassRefPtr<LayoutStyle> StyleResolver::styleForElement(Element* element, const L |
if (sharingBehavior == AllowStyleSharing && (defaultParent || elementContext.parentStyle())) { |
SharedStyleFinder styleFinder(elementContext, m_features, m_siblingRuleSet.get(), m_uncommonAttributeRuleSet.get(), *this); |
- if (RefPtr<LayoutStyle> sharedStyle = styleFinder.findSharedStyle()) |
+ if (RefPtr<ComputedStyle> sharedStyle = styleFinder.findSharedStyle()) |
return sharedStyle.release(); |
} |
StyleResolverState state(document(), elementContext, defaultParent); |
ElementAnimations* elementAnimations = element->elementAnimations(); |
- const LayoutStyle* baseLayoutStyle = elementAnimations ? elementAnimations->baseLayoutStyle() : nullptr; |
+ const ComputedStyle* baseComputedStyle = elementAnimations ? elementAnimations->baseComputedStyle() : nullptr; |
- if (baseLayoutStyle) { |
- state.setStyle(LayoutStyle::clone(*baseLayoutStyle)); |
+ if (baseComputedStyle) { |
+ state.setStyle(ComputedStyle::clone(*baseComputedStyle)); |
if (!state.parentStyle()) |
state.setParentStyle(initialStyleForElement()); |
} else { |
if (state.parentStyle()) { |
- RefPtr<LayoutStyle> style = LayoutStyle::create(); |
- style->inheritFrom(*state.parentStyle(), isAtShadowBoundary(element) ? LayoutStyle::AtShadowBoundary : LayoutStyle::NotAtShadowBoundary); |
+ RefPtr<ComputedStyle> style = ComputedStyle::create(); |
+ style->inheritFrom(*state.parentStyle(), isAtShadowBoundary(element) ? ComputedStyle::AtShadowBoundary : ComputedStyle::NotAtShadowBoundary); |
state.setStyle(style.release()); |
} else { |
state.setStyle(initialStyleForElement()); |
- state.setParentStyle(LayoutStyle::clone(*state.style())); |
+ state.setParentStyle(ComputedStyle::clone(*state.style())); |
} |
} |
@@ -588,7 +588,7 @@ PassRefPtr<LayoutStyle> StyleResolver::styleForElement(Element* element, const L |
// be propagated from shadow host to distributed node. |
if (state.distributedToInsertionPoint()) { |
if (Element* parent = element->parentElement()) { |
- if (LayoutStyle* styleOfShadowHost = parent->mutableLayoutStyle()) |
+ if (ComputedStyle* styleOfShadowHost = parent->mutableComputedStyle()) |
state.style()->setUserModify(styleOfShadowHost->userModify()); |
} |
} |
@@ -604,7 +604,7 @@ PassRefPtr<LayoutStyle> StyleResolver::styleForElement(Element* element, const L |
state.style()->setInsideLink(linkState); |
} |
- if (!baseLayoutStyle) { |
+ if (!baseComputedStyle) { |
bool needsCollection = false; |
CSSDefaultStyleSheets::instance().ensureDefaultStyleSheetsForElement(element, needsCollection); |
@@ -615,10 +615,10 @@ PassRefPtr<LayoutStyle> StyleResolver::styleForElement(Element* element, const L |
matchAllRules(state, collector, matchingBehavior != MatchAllRulesExcludingSMIL); |
- if (element->layoutStyle() && element->layoutStyle()->textAutosizingMultiplier() != state.style()->textAutosizingMultiplier()) { |
+ if (element->computedStyle() && element->computedStyle()->textAutosizingMultiplier() != state.style()->textAutosizingMultiplier()) { |
// Preserve the text autosizing multiplier on style recalc. Autosizer will update it during layout if needed. |
// NOTE: this must occur before applyMatchedProperties for correct computation of font-relative lengths. |
- state.style()->setTextAutosizingMultiplier(element->layoutStyle()->textAutosizingMultiplier()); |
+ state.style()->setTextAutosizingMultiplier(element->computedStyle()->textAutosizingMultiplier()); |
state.style()->setUnique(); |
} |
@@ -631,17 +631,17 @@ PassRefPtr<LayoutStyle> StyleResolver::styleForElement(Element* element, const L |
// Cache our original display. |
state.style()->setOriginalDisplay(state.style()->display()); |
- adjustLayoutStyle(state, element); |
+ adjustComputedStyle(state, element); |
if (elementAnimations) |
- elementAnimations->updateBaseLayoutStyle(state.style()); |
+ elementAnimations->updateBaseComputedStyle(state.style()); |
} |
// FIXME: The CSSWG wants to specify that the effects of animations are applied before |
// important rules, but this currently happens here as we require adjustment to have happened |
// before deciding which properties to transition. |
if (applyAnimatedProperties(state, element)) |
- adjustLayoutStyle(state, element); |
+ adjustComputedStyle(state, element); |
if (isHTMLBodyElement(*element)) |
document().textLinkColors().setTextColor(state.style()->color()); |
@@ -655,7 +655,7 @@ PassRefPtr<LayoutStyle> StyleResolver::styleForElement(Element* element, const L |
return state.takeStyle(); |
} |
-PassRefPtr<LayoutStyle> StyleResolver::styleForKeyframe(Element& element, const LayoutStyle& elementStyle, const LayoutStyle* parentStyle, const StyleRuleKeyframe* keyframe, const AtomicString& animationName) |
+PassRefPtr<ComputedStyle> StyleResolver::styleForKeyframe(Element& element, const ComputedStyle& elementStyle, const ComputedStyle* parentStyle, const StyleRuleKeyframe* keyframe, const AtomicString& animationName) |
{ |
ASSERT(document().frame()); |
ASSERT(document().settings()); |
@@ -669,7 +669,7 @@ PassRefPtr<LayoutStyle> StyleResolver::styleForKeyframe(Element& element, const |
ASSERT(!state.style()); |
// Create the style |
- state.setStyle(LayoutStyle::clone(elementStyle)); |
+ state.setStyle(ComputedStyle::clone(elementStyle)); |
// We don't need to bother with !important. Since there is only ever one |
// decl, there's nothing to override. So just add the first properties. |
@@ -694,10 +694,10 @@ PassRefPtr<LayoutStyle> StyleResolver::styleForKeyframe(Element& element, const |
// This function is used by the WebAnimations JavaScript API method animate(). |
// FIXME: Remove this when animate() switches away from resolution-dependent parsing. |
-PassRefPtrWillBeRawPtr<AnimatableValue> StyleResolver::createAnimatableValueSnapshot(Element& element, const LayoutStyle* baseStyle, CSSPropertyID property, CSSValue* value) |
+PassRefPtrWillBeRawPtr<AnimatableValue> StyleResolver::createAnimatableValueSnapshot(Element& element, const ComputedStyle* baseStyle, CSSPropertyID property, CSSValue* value) |
{ |
StyleResolverState state(element.document(), &element); |
- state.setStyle(baseStyle ? LayoutStyle::clone(*baseStyle) : LayoutStyle::create()); |
+ state.setStyle(baseStyle ? ComputedStyle::clone(*baseStyle) : ComputedStyle::create()); |
return createAnimatableValueSnapshot(state, property, value); |
} |
@@ -737,8 +737,8 @@ PassRefPtrWillBeRawPtr<PseudoElement> StyleResolver::createPseudoElementIfNeeded |
if (!parentRenderer->canHaveGeneratedChildren()) |
return nullptr; |
- LayoutStyle* parentStyle = parentRenderer->style(); |
- if (LayoutStyle* cachedStyle = parentStyle->getCachedPseudoStyle(pseudoId)) { |
+ ComputedStyle* parentStyle = parentRenderer->style(); |
+ if (ComputedStyle* cachedStyle = parentStyle->getCachedPseudoStyle(pseudoId)) { |
if (!pseudoElementRendererIsNeeded(cachedStyle)) |
return nullptr; |
return createPseudoElement(&parent, pseudoId); |
@@ -747,7 +747,7 @@ PassRefPtrWillBeRawPtr<PseudoElement> StyleResolver::createPseudoElementIfNeeded |
StyleResolverState state(document(), &parent, parentStyle); |
if (!pseudoStyleForElementInternal(parent, pseudoId, parentStyle, state)) |
return nullptr; |
- RefPtr<LayoutStyle> style = state.takeStyle(); |
+ RefPtr<ComputedStyle> style = state.takeStyle(); |
ASSERT(style); |
parentStyle->addCachedPseudoStyle(style); |
@@ -762,7 +762,7 @@ PassRefPtrWillBeRawPtr<PseudoElement> StyleResolver::createPseudoElementIfNeeded |
return pseudo.release(); |
} |
-bool StyleResolver::pseudoStyleForElementInternal(Element& element, const PseudoStyleRequest& pseudoStyleRequest, const LayoutStyle* parentStyle, StyleResolverState& state) |
+bool StyleResolver::pseudoStyleForElementInternal(Element& element, const PseudoStyleRequest& pseudoStyleRequest, const ComputedStyle* parentStyle, StyleResolverState& state) |
{ |
ASSERT(document().frame()); |
ASSERT(document().settings()); |
@@ -774,17 +774,17 @@ bool StyleResolver::pseudoStyleForElementInternal(Element& element, const Pseudo |
Element* pseudoElement = element.pseudoElement(pseudoStyleRequest.pseudoId); |
ElementAnimations* elementAnimations = pseudoElement ? pseudoElement->elementAnimations() : nullptr; |
- const LayoutStyle* baseLayoutStyle = elementAnimations ? elementAnimations->baseLayoutStyle() : nullptr; |
+ const ComputedStyle* baseComputedStyle = elementAnimations ? elementAnimations->baseComputedStyle() : nullptr; |
- if (baseLayoutStyle) { |
- state.setStyle(LayoutStyle::clone(*baseLayoutStyle)); |
+ if (baseComputedStyle) { |
+ state.setStyle(ComputedStyle::clone(*baseComputedStyle)); |
} else if (pseudoStyleRequest.allowsInheritance(state.parentStyle())) { |
- RefPtr<LayoutStyle> style = LayoutStyle::create(); |
+ RefPtr<ComputedStyle> style = ComputedStyle::create(); |
style->inheritFrom(*state.parentStyle()); |
state.setStyle(style.release()); |
} else { |
state.setStyle(initialStyleForElement()); |
- state.setParentStyle(LayoutStyle::clone(*state.style())); |
+ state.setParentStyle(ComputedStyle::clone(*state.style())); |
} |
state.style()->setStyleType(pseudoStyleRequest.pseudoId); |
@@ -792,7 +792,7 @@ bool StyleResolver::pseudoStyleForElementInternal(Element& element, const Pseudo |
// Since we don't use pseudo-elements in any of our quirk/print |
// user agent rules, don't waste time walking those rules. |
- if (!baseLayoutStyle) { |
+ if (!baseComputedStyle) { |
// Check UA, user and author rules. |
ElementRuleCollector collector(state.elementContext(), m_selectorFilter, state.style()); |
collector.setPseudoStyleRequest(pseudoStyleRequest); |
@@ -810,18 +810,18 @@ bool StyleResolver::pseudoStyleForElementInternal(Element& element, const Pseudo |
state.style()->setOriginalDisplay(state.style()->display()); |
// FIXME: Passing 0 as the Element* introduces a lot of complexity |
- // in the adjustLayoutStyle code. |
- adjustLayoutStyle(state, 0); |
+ // in the adjustComputedStyle code. |
+ adjustComputedStyle(state, 0); |
if (elementAnimations) |
- elementAnimations->updateBaseLayoutStyle(state.style()); |
+ elementAnimations->updateBaseComputedStyle(state.style()); |
} |
// FIXME: The CSSWG wants to specify that the effects of animations are applied before |
// important rules, but this currently happens here as we require adjustment to have happened |
// before deciding which properties to transition. |
if (applyAnimatedProperties(state, pseudoElement)) |
- adjustLayoutStyle(state, 0); |
+ adjustComputedStyle(state, 0); |
didAccess(); |
@@ -831,7 +831,7 @@ bool StyleResolver::pseudoStyleForElementInternal(Element& element, const Pseudo |
return true; |
} |
-PassRefPtr<LayoutStyle> StyleResolver::pseudoStyleForElement(Element* element, const PseudoStyleRequest& pseudoStyleRequest, const LayoutStyle* parentStyle) |
+PassRefPtr<ComputedStyle> StyleResolver::pseudoStyleForElement(Element* element, const PseudoStyleRequest& pseudoStyleRequest, const ComputedStyle* parentStyle) |
{ |
ASSERT(parentStyle); |
if (!element) |
@@ -851,13 +851,13 @@ PassRefPtr<LayoutStyle> StyleResolver::pseudoStyleForElement(Element* element, c |
return state.takeStyle(); |
} |
-PassRefPtr<LayoutStyle> StyleResolver::styleForPage(int pageIndex) |
+PassRefPtr<ComputedStyle> StyleResolver::styleForPage(int pageIndex) |
{ |
ASSERT(!hasPendingAuthorStyleSheets()); |
StyleResolverState state(document(), document().documentElement()); // m_rootElementStyle will be set to the document style. |
- RefPtr<LayoutStyle> style = LayoutStyle::create(); |
- const LayoutStyle* rootElementStyle = state.rootElementStyle() ? state.rootElementStyle() : document().layoutStyle(); |
+ RefPtr<ComputedStyle> style = ComputedStyle::create(); |
+ const ComputedStyle* rootElementStyle = state.rootElementStyle() ? state.rootElementStyle() : document().computedStyle(); |
ASSERT(rootElementStyle); |
style->inheritFrom(*rootElementStyle); |
state.setStyle(style.release()); |
@@ -887,23 +887,23 @@ PassRefPtr<LayoutStyle> StyleResolver::styleForPage(int pageIndex) |
return state.takeStyle(); |
} |
-PassRefPtr<LayoutStyle> StyleResolver::initialStyleForElement() |
+PassRefPtr<ComputedStyle> StyleResolver::initialStyleForElement() |
{ |
- RefPtr<LayoutStyle> style = LayoutStyle::create(); |
+ RefPtr<ComputedStyle> style = ComputedStyle::create(); |
FontBuilder fontBuilder(document()); |
fontBuilder.setInitial(style->effectiveZoom()); |
fontBuilder.createFont(document().styleEngine().fontSelector(), *style); |
return style.release(); |
} |
-PassRefPtr<LayoutStyle> StyleResolver::styleForText(Text* textNode) |
+PassRefPtr<ComputedStyle> StyleResolver::styleForText(Text* textNode) |
{ |
ASSERT(textNode); |
Node* parentNode = NodeRenderingTraversal::parent(*textNode); |
- if (!parentNode || !parentNode->layoutStyle()) |
+ if (!parentNode || !parentNode->computedStyle()) |
return initialStyleForElement(); |
- return parentNode->mutableLayoutStyle(); |
+ return parentNode->mutableComputedStyle(); |
} |
void StyleResolver::updateFont(StyleResolverState& state) |
@@ -1343,15 +1343,15 @@ void StyleResolver::applyMatchedProperties(StyleResolverState& state, const Matc |
// We can build up the style by copying non-inherited properties from an earlier style object built using the same exact |
// style declarations. We then only need to apply the inherited properties, if any, as their values can depend on the |
// element context. This is fast and saves memory by reusing the style data structures. |
- state.style()->copyNonInheritedFromCached(*cachedMatchedProperties->layoutStyle); |
- if (state.parentStyle()->inheritedDataShared(*cachedMatchedProperties->parentLayoutStyle) && !isAtShadowBoundary(element) |
+ state.style()->copyNonInheritedFromCached(*cachedMatchedProperties->computedStyle); |
+ if (state.parentStyle()->inheritedDataShared(*cachedMatchedProperties->parentComputedStyle) && !isAtShadowBoundary(element) |
&& (!state.distributedToInsertionPoint() || state.style()->userModify() == READ_ONLY)) { |
INCREMENT_STYLE_STATS_COUNTER(*this, matchedPropertyCacheInheritedHit); |
EInsideLink linkStatus = state.style()->insideLink(); |
// If the cache item parent style has identical inherited properties to the current parent style then the |
// resulting style will be identical too. We copy the inherited properties over from the cache and are done. |
- state.style()->inheritFrom(*cachedMatchedProperties->layoutStyle); |
+ state.style()->inheritFrom(*cachedMatchedProperties->computedStyle); |
// Unfortunately the link status is treated like an inherited property. We need to explicitly restore it. |
state.style()->setInsideLink(linkStatus); |
@@ -1379,10 +1379,10 @@ void StyleResolver::applyMatchedProperties(StyleResolverState& state, const Matc |
// properties used as input to the FontBuilder, so resetting it here may cause the FontBuilder to recompute the |
// font used as inheritable font for foreignObject content. If we want to support zoom on foreignObject we'll |
// need to find another way of handling the SVG zoom model. |
- state.setEffectiveZoom(LayoutStyle::initialZoom()); |
+ state.setEffectiveZoom(ComputedStyle::initialZoom()); |
} |
- if (cachedMatchedProperties && cachedMatchedProperties->layoutStyle->effectiveZoom() != state.style()->effectiveZoom()) { |
+ if (cachedMatchedProperties && cachedMatchedProperties->computedStyle->effectiveZoom() != state.style()->effectiveZoom()) { |
state.fontBuilder().didChangeEffectiveZoom(); |
applyInheritedOnly = false; |
} |
@@ -1391,13 +1391,13 @@ void StyleResolver::applyMatchedProperties(StyleResolverState& state, const Matc |
updateFont(state); |
// Many properties depend on the font. If it changes we just apply all properties. |
- if (cachedMatchedProperties && cachedMatchedProperties->layoutStyle->fontDescription() != state.style()->fontDescription()) |
+ if (cachedMatchedProperties && cachedMatchedProperties->computedStyle->fontDescription() != state.style()->fontDescription()) |
applyInheritedOnly = false; |
// Now do the normal priority UA properties. |
applyMatchedProperties<LowPropertyPriority>(state, matchResult, false, matchResult.ranges.firstUARule, matchResult.ranges.lastUARule, applyInheritedOnly); |
- // Cache the UA properties to pass them to LayoutTheme in adjustLayoutStyle. |
+ // Cache the UA properties to pass them to LayoutTheme in adjustComputedStyle. |
state.cacheUserAgentBorderAndBackground(); |
// Now do the author and user normal priority properties and all the !important properties. |
@@ -1468,7 +1468,7 @@ void StyleResolver::printStats() |
fprintf(stderr, "%s\n", m_styleResolverStatsTotals->report().utf8().data()); |
} |
-void StyleResolver::applyPropertiesToStyle(const CSSPropertyValue* properties, size_t count, LayoutStyle* style) |
+void StyleResolver::applyPropertiesToStyle(const CSSPropertyValue* properties, size_t count, ComputedStyle* style) |
{ |
StyleResolverState state(document(), document().documentElement(), style); |
state.setStyle(style); |