Index: third_party/WebKit/Source/core/style/ComputedStyle.cpp |
diff --git a/third_party/WebKit/Source/core/style/ComputedStyle.cpp b/third_party/WebKit/Source/core/style/ComputedStyle.cpp |
index 02eea0f6587edb6a8075da4312ea0833f0120b80..9ed03a0deee408d3a8a6ec7658089a98ef80b660 100644 |
--- a/third_party/WebKit/Source/core/style/ComputedStyle.cpp |
+++ b/third_party/WebKit/Source/core/style/ComputedStyle.cpp |
@@ -1,6 +1,7 @@ |
/* |
* Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) |
- * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. |
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights |
+ * reserved. |
* Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. |
* |
* This library is free software; you can redistribute it and/or |
@@ -194,7 +195,8 @@ static StyleRecalcChange diffPseudoStyles(const ComputedStyle& oldStyle, |
StyleRecalcChange ComputedStyle::stylePropagationDiff( |
const ComputedStyle* oldStyle, |
const ComputedStyle* newStyle) { |
- // If the style has changed from display none or to display none, then the layout subtree needs to be reattached |
+ // If the style has changed from display none or to display none, then the |
+ // layout subtree needs to be reattached |
if ((!oldStyle && newStyle) || (oldStyle && !newStyle)) |
return Reattach; |
@@ -242,7 +244,9 @@ void ComputedStyle::propagateIndependentInheritedProperties( |
StyleSelfAlignmentData resolvedSelfAlignment( |
const StyleSelfAlignmentData& value, |
ItemPosition normalValueBehavior) { |
- // To avoid needing to copy the RareNonInheritedData, we repurpose the 'auto' flag to not just mean 'auto' prior to running the StyleAdjuster but also mean 'normal' after running it. |
+ // To avoid needing to copy the RareNonInheritedData, we repurpose the 'auto' |
+ // flag to not just mean 'auto' prior to running the StyleAdjuster but also |
+ // mean 'normal' after running it. |
if (value.position() == ItemPositionNormal || |
value.position() == ItemPositionAuto) |
return {normalValueBehavior, OverflowAlignmentDefault}; |
@@ -251,38 +255,44 @@ StyleSelfAlignmentData resolvedSelfAlignment( |
StyleSelfAlignmentData ComputedStyle::resolvedAlignItems( |
ItemPosition normalValueBehaviour) const { |
- // We will return the behaviour of 'normal' value if needed, which is specific of each layout model. |
+ // We will return the behaviour of 'normal' value if needed, which is specific |
+ // of each layout model. |
return resolvedSelfAlignment(alignItems(), normalValueBehaviour); |
} |
StyleSelfAlignmentData ComputedStyle::resolvedAlignSelf( |
ItemPosition normalValueBehaviour, |
const ComputedStyle* parentStyle) const { |
- // We will return the behaviour of 'normal' value if needed, which is specific of each layout model. |
+ // We will return the behaviour of 'normal' value if needed, which is specific |
+ // of each layout model. |
if (!parentStyle || alignSelfPosition() != ItemPositionAuto) |
return resolvedSelfAlignment(alignSelf(), normalValueBehaviour); |
- // We shouldn't need to resolve any 'auto' value in post-adjusment ComputedStyle, but some layout models |
- // can generate anonymous boxes that may need 'auto' value resolution during layout. |
+ // We shouldn't need to resolve any 'auto' value in post-adjusment |
+ // ComputedStyle, but some layout models can generate anonymous boxes that may |
+ // need 'auto' value resolution during layout. |
// The 'auto' keyword computes to the parent's align-items computed value. |
return parentStyle->resolvedAlignItems(normalValueBehaviour); |
} |
StyleSelfAlignmentData ComputedStyle::resolvedJustifyItems( |
ItemPosition normalValueBehaviour) const { |
- // We will return the behaviour of 'normal' value if needed, which is specific of each layout model. |
+ // We will return the behaviour of 'normal' value if needed, which is specific |
+ // of each layout model. |
return resolvedSelfAlignment(justifyItems(), normalValueBehaviour); |
} |
StyleSelfAlignmentData ComputedStyle::resolvedJustifySelf( |
ItemPosition normalValueBehaviour, |
const ComputedStyle* parentStyle) const { |
- // We will return the behaviour of 'normal' value if needed, which is specific of each layout model. |
+ // We will return the behaviour of 'normal' value if needed, which is specific |
+ // of each layout model. |
if (!parentStyle || justifySelfPosition() != ItemPositionAuto) |
return resolvedSelfAlignment(justifySelf(), normalValueBehaviour); |
- // We shouldn't need to resolve any 'auto' value in post-adjusment ComputedStyle, but some layout models |
- // can generate anonymous boxes that may need 'auto' value resolution during layout. |
+ // We shouldn't need to resolve any 'auto' value in post-adjusment |
+ // ComputedStyle, but some layout models can generate anonymous boxes that may |
+ // need 'auto' value resolution during layout. |
// The auto keyword computes to the parent's justify-items computed value. |
return parentStyle->resolvedJustifyItems(normalValueBehaviour); |
} |
@@ -332,7 +342,8 @@ void ComputedStyle::inheritFrom(const ComputedStyle& inheritParent, |
IsAtShadowBoundary isAtShadowBoundary) { |
ComputedStyleBase::inheritFrom(inheritParent, isAtShadowBoundary); |
if (isAtShadowBoundary == AtShadowBoundary) { |
- // Even if surrounding content is user-editable, shadow DOM should act as a single unit, and not necessarily be editable |
+ // Even if surrounding content is user-editable, shadow DOM should act as a |
+ // single unit, and not necessarily be editable |
EUserModify currentUserModify = userModify(); |
m_rareInheritedData = inheritParent.m_rareInheritedData; |
setUserModify(currentUserModify); |
@@ -353,7 +364,8 @@ void ComputedStyle::copyNonInheritedFromCached(const ComputedStyle& other) { |
m_surround = other.m_surround; |
m_rareNonInheritedData = other.m_rareNonInheritedData; |
- // The flags are copied one-by-one because m_nonInheritedData.m_contains a bunch of stuff other than real style data. |
+ // The flags are copied one-by-one because m_nonInheritedData.m_contains a |
+ // bunch of stuff other than real style data. |
// See comments for each skipped flag below. |
m_nonInheritedData.m_effectiveDisplay = |
other.m_nonInheritedData.m_effectiveDisplay; |
@@ -392,8 +404,8 @@ void ComputedStyle::copyNonInheritedFromCached(const ComputedStyle& other) { |
// The following flags are set during matching before we decide that we get a |
// match in the MatchedPropertiesCache which in turn calls this method. The |
// reason why we don't copy these flags is that they're already correctly set |
- // and that they may differ between elements which have the same set of matched |
- // properties. For instance, given the rule: |
+ // and that they may differ between elements which have the same set of |
+ // matched properties. For instance, given the rule: |
// |
// :-webkit-any(:hover, :focus) { background-color: green }" |
// |
@@ -532,8 +544,9 @@ bool ComputedStyle::inheritedDataShared(const ComputedStyle& other) const { |
static bool dependenceOnContentHeightHasChanged(const ComputedStyle& a, |
const ComputedStyle& b) { |
- // If top or bottom become auto/non-auto then it means we either have to solve height based |
- // on the content or stop doing so (http://www.w3.org/TR/CSS2/visudet.html#abs-non-replaced-height) |
+ // If top or bottom become auto/non-auto then it means we either have to solve |
+ // height based on the content or stop doing so |
+ // (http://www.w3.org/TR/CSS2/visudet.html#abs-non-replaced-height) |
// - either way requires a layout. |
return a.logicalTop().isAuto() != b.logicalTop().isAuto() || |
a.logicalBottom().isAuto() != b.logicalBottom().isAuto(); |
@@ -541,9 +554,9 @@ static bool dependenceOnContentHeightHasChanged(const ComputedStyle& a, |
StyleDifference ComputedStyle::visualInvalidationDiff( |
const ComputedStyle& other) const { |
- // Note, we use .get() on each DataRef below because DataRef::operator== will do a deep |
- // compare, which is duplicate work when we're going to compare each property inside |
- // this function anyway. |
+ // Note, we use .get() on each DataRef below because DataRef::operator== will |
+ // do a deep compare, which is duplicate work when we're going to compare each |
+ // property inside this function anyway. |
StyleDifference diff; |
if (m_svgStyle.get() != other.m_svgStyle.get()) |
@@ -560,7 +573,8 @@ StyleDifference ComputedStyle::visualInvalidationDiff( |
if (!diff.needsFullLayout() && |
m_surround->margin != other.m_surround->margin) { |
- // Relative-positioned elements collapse their margins so need a full layout. |
+ // Relative-positioned elements collapse their margins so need a full |
+ // layout. |
if (hasOutOfFlowPosition()) |
diff.setNeedsPositionedMovementLayout(); |
else |
@@ -569,7 +583,8 @@ StyleDifference ComputedStyle::visualInvalidationDiff( |
if (!diff.needsFullLayout() && position() != StaticPosition && |
m_surround->offset != other.m_surround->offset) { |
- // Optimize for the case where a positioned layer is moving but not changing size. |
+ // Optimize for the case where a positioned layer is moving but not changing |
+ // size. |
if (dependenceOnContentHeightHasChanged(*this, other)) |
diff.setNeedsFullLayout(); |
else |
@@ -588,25 +603,29 @@ StyleDifference ComputedStyle::visualInvalidationDiff( |
if (diff.needsLayout() || diff.transformChanged()) |
diff.setScrollAnchorDisablingPropertyChanged(); |
- // Cursors are not checked, since they will be set appropriately in response to mouse events, |
- // so they don't need to cause any paint invalidation or layout. |
+ // Cursors are not checked, since they will be set appropriately in response |
+ // to mouse events, so they don't need to cause any paint invalidation or |
+ // layout. |
- // Animations don't need to be checked either. We always set the new style on the layoutObject, so we will get a chance to fire off |
- // the resulting transition properly. |
+ // Animations don't need to be checked either. We always set the new style on |
+ // the layoutObject, so we will get a chance to fire off the resulting |
+ // transition properly. |
return diff; |
} |
bool ComputedStyle::diffNeedsFullLayoutAndPaintInvalidation( |
const ComputedStyle& other) const { |
- // FIXME: Not all cases in this method need both full layout and paint invalidation. |
+ // FIXME: Not all cases in this method need both full layout and paint |
+ // invalidation. |
// Should move cases into diffNeedsFullLayout() if |
// - don't need paint invalidation at all; |
- // - or the layoutObject knows how to exactly invalidate paints caused by the layout change |
- // instead of forced full paint invalidation. |
+ // - or the layoutObject knows how to exactly invalidate paints caused by the |
+ // layout change instead of forced full paint invalidation. |
if (m_surround.get() != other.m_surround.get()) { |
- // If our border widths change, then we need to layout. Other changes to borders only necessitate a paint invalidation. |
+ // If our border widths change, then we need to layout. Other changes to |
+ // borders only necessitate a paint invalidation. |
if (borderLeftWidth() != other.borderLeftWidth() || |
borderTopWidth() != other.borderTopWidth() || |
borderBottomWidth() != other.borderBottomWidth() || |
@@ -663,7 +682,8 @@ bool ComputedStyle::diffNeedsFullLayoutAndPaintInvalidation( |
*other.m_rareNonInheritedData->m_multiCol.get()) |
return true; |
- // If the counter directives change, trigger a relayout to re-calculate counter values and rebuild the counter node tree. |
+ // If the counter directives change, trigger a relayout to re-calculate |
+ // counter values and rebuild the counter node tree. |
const CounterDirectiveMap* mapA = |
m_rareNonInheritedData->m_counterDirectives.get(); |
const CounterDirectiveMap* mapB = |
@@ -671,16 +691,19 @@ bool ComputedStyle::diffNeedsFullLayoutAndPaintInvalidation( |
if (!(mapA == mapB || (mapA && mapB && *mapA == *mapB))) |
return true; |
- // We only need do layout for opacity changes if adding or losing opacity could trigger a change |
+ // We only need do layout for opacity changes if adding or losing opacity |
+ // could trigger a change |
// in us being a stacking context. |
if (isStackingContext() != other.isStackingContext() && |
m_rareNonInheritedData->hasOpacity() != |
other.m_rareNonInheritedData->hasOpacity()) { |
- // FIXME: We would like to use SimplifiedLayout here, but we can't quite do that yet. |
- // We need to make sure SimplifiedLayout can operate correctly on LayoutInlines (we will need |
- // to add a selfNeedsSimplifiedLayout bit in order to not get confused and taint every line). |
- // In addition we need to solve the floating object issue when layers come and go. Right now |
- // a full layout is necessary to keep floating object lists sane. |
+ // FIXME: We would like to use SimplifiedLayout here, but we can't quite |
+ // do that yet. We need to make sure SimplifiedLayout can operate |
+ // correctly on LayoutInlines (we will need to add a |
+ // selfNeedsSimplifiedLayout bit in order to not get confused and taint |
+ // every line). In addition we need to solve the floating object issue |
+ // when layers come and go. Right now a full layout is necessary to keep |
+ // floating object lists sane. |
return true; |
} |
} |
@@ -797,8 +820,8 @@ bool ComputedStyle::diffNeedsFullLayoutAndPaintInvalidation( |
other.m_nonInheritedData.m_tableLayout) |
return true; |
- // In the collapsing border model, 'hidden' suppresses other borders, while 'none' |
- // does not, so these style differences can be width differences. |
+ // In the collapsing border model, 'hidden' suppresses other borders, while |
+ // 'none' does not, so these style differences can be width differences. |
if (m_inheritedData.m_borderCollapse && |
((borderTopStyle() == BorderStyleHidden && |
other.borderTopStyle() == BorderStyleNone) || |
@@ -833,7 +856,8 @@ bool ComputedStyle::diffNeedsFullLayoutAndPaintInvalidation( |
other.hasPseudoStyle(PseudoIdScrollbar)) |
return true; |
- // Movement of non-static-positioned object is special cased in ComputedStyle::visualInvalidationDiff(). |
+ // Movement of non-static-positioned object is special cased in |
+ // ComputedStyle::visualInvalidationDiff(). |
return false; |
} |
@@ -1216,8 +1240,8 @@ bool ComputedStyle::requireTransformOrigin( |
transform().operations(); |
// transform-origin brackets the transform with translate operations. |
- // Optimize for the case where the only transform is a translation, since the transform-origin is irrelevant |
- // in that case. |
+ // Optimize for the case where the only transform is a translation, since the |
+ // transform-origin is irrelevant in that case. |
if (applyOrigin != IncludeTransformOrigin) |
return false; |
@@ -1310,7 +1334,8 @@ void ComputedStyle::applyMotionPathTransform( |
TransformationMatrix& transform) const { |
const StyleMotionData& motionData = |
m_rareNonInheritedData->m_transform->m_motion; |
- // TODO(ericwilligers): crbug.com/638055 Apply offset-position and offset-anchor. |
+ // TODO(ericwilligers): crbug.com/638055 Apply offset-position and |
+ // offset-anchor. |
if (!motionData.m_path) { |
return; |
} |
@@ -1998,8 +2023,8 @@ Color ComputedStyle::colorIncludingFallback(int colorProperty, |
if (!result.isCurrentColor()) |
return result.getColor(); |
- // FIXME: Treating styled borders with initial color differently causes problems |
- // See crbug.com/316559, crbug.com/276231 |
+ // FIXME: Treating styled borders with initial color differently causes |
+ // problems, see crbug.com/316559, crbug.com/276231 |
if (!visitedLink && |
(borderStyle == BorderStyleInset || borderStyle == BorderStyleOutset || |
borderStyle == BorderStyleRidge || borderStyle == BorderStyleGroove)) |
@@ -2014,16 +2039,19 @@ Color ComputedStyle::visitedDependentColor(int colorProperty) const { |
Color visitedColor = colorIncludingFallback(colorProperty, true); |
- // FIXME: Technically someone could explicitly specify the color transparent, but for now we'll just |
- // assume that if the background color is transparent that it wasn't set. Note that it's weird that |
- // we're returning unvisited info for a visited link, but given our restriction that the alpha values |
- // have to match, it makes more sense to return the unvisited background color if specified than it |
- // does to return black. This behavior matches what Firefox 4 does as well. |
+ // FIXME: Technically someone could explicitly specify the color transparent, |
+ // but for now we'll just assume that if the background color is transparent |
+ // that it wasn't set. Note that it's weird that we're returning unvisited |
+ // info for a visited link, but given our restriction that the alpha values |
+ // have to match, it makes more sense to return the unvisited background color |
+ // if specified than it does to return black. This behavior matches what |
+ // Firefox 4 does as well. |
if (colorProperty == CSSPropertyBackgroundColor && |
visitedColor == Color::transparent) |
return unvisitedColor; |
- // Take the alpha from the unvisited color, but get the RGB values from the visited color. |
+ // Take the alpha from the unvisited color, but get the RGB values from the |
+ // visited color. |
return Color(visitedColor.red(), visitedColor.green(), visitedColor.blue(), |
unvisitedColor.alpha()); |
} |
@@ -2233,7 +2261,8 @@ bool ComputedStyle::borderObscuresBackground() const { |
if (!hasBorder()) |
return false; |
- // Bail if we have any border-image for now. We could look at the image alpha to improve this. |
+ // Bail if we have any border-image for now. We could look at the image alpha |
+ // to improve this. |
if (borderImage().image()) |
return false; |
@@ -2305,7 +2334,8 @@ Vector<GridTrackSize> ComputedStyle::initialGridAutoRows() { |
int adjustForAbsoluteZoom(int value, float zoomFactor) { |
if (zoomFactor == 1) |
return value; |
- // Needed because computeLengthInt truncates (rather than rounds) when scaling up. |
+ // Needed because computeLengthInt truncates (rather than rounds) when scaling |
+ // up. |
float fvalue = value; |
if (zoomFactor > 1) { |
if (value < 0) |