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

Issue 13679002: Add StyleChangeState to get rid of a bunch of static state in the render tree. (Closed)

Created:
7 years, 8 months ago by esprehn
Modified:
4 years, 10 months ago
Reviewers:
ojan, eseidel
CC:
blink-reviews
Visibility:
Public.

Description

Add StyleChangeState to get rid of a bunch of static state in the render tree. We can get rid of a bunch of static variables in the render tree by passing a StyleChangeState object between RenderObject::styleWillChange and styleDidChange. This makes it more clear where these values come from, and will be neccesary if we ever want to do parallel style changes or layout. R=ojan@chromium.org,eseidel@chromium.org

Patch Set 1 #

Total comments: 16
Unified diffs Side-by-side diffs Delta from patch set Stats (+228 lines, -225 lines) Patch
M Source/WebCore/rendering/RenderBR.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderBR.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderBlock.h View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderBlock.cpp View 5 chunks +8 lines, -9 lines 2 comments Download
M Source/WebCore/rendering/RenderBox.h View 2 chunks +3 lines, -7 lines 1 comment Download
M Source/WebCore/rendering/RenderBox.cpp View 5 chunks +8 lines, -10 lines 1 comment Download
M Source/WebCore/rendering/RenderBoxModelObject.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderBoxModelObject.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderButton.h View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderButton.cpp View 2 chunks +4 lines, -4 lines 0 comments Download
M Source/WebCore/rendering/RenderCombineText.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderCombineText.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderDeprecatedFlexibleBox.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderFlexibleBox.h View 1 chunk +1 line, -1 line 3 comments Download
M Source/WebCore/rendering/RenderFlexibleBox.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderFlowThread.h View 1 chunk +1 line, -1 line 2 comments Download
M Source/WebCore/rendering/RenderFlowThread.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderImage.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderImage.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderInline.h View 2 chunks +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderInline.cpp View 2 chunks +4 lines, -4 lines 0 comments Download
M Source/WebCore/rendering/RenderLayerModelObject.h View 2 chunks +3 lines, -9 lines 1 comment Download
M Source/WebCore/rendering/RenderLayerModelObject.cpp View 4 chunks +13 lines, -19 lines 2 comments Download
M Source/WebCore/rendering/RenderListItem.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderListItem.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderListMarker.h View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderListMarker.cpp View 1 chunk +4 lines, -4 lines 0 comments Download
M Source/WebCore/rendering/RenderMenuList.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderMenuList.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderMultiColumnBlock.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderMultiColumnBlock.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderObject.h View 3 chunks +30 lines, -6 lines 2 comments Download
M Source/WebCore/rendering/RenderObject.cpp View 7 chunks +8 lines, -10 lines 2 comments Download
M Source/WebCore/rendering/RenderQuote.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderQuote.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderRegion.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderRegion.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderReplaced.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderReplaced.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderRuby.h View 2 chunks +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderRuby.cpp View 2 chunks +4 lines, -4 lines 0 comments Download
M Source/WebCore/rendering/RenderScrollbarPart.h View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderScrollbarPart.cpp View 1 chunk +4 lines, -4 lines 0 comments Download
M Source/WebCore/rendering/RenderTable.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderTable.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderTableCell.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderTableCell.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderTableCol.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderTableCol.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderTableRow.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderTableRow.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderTableSection.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderTableSection.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderText.h View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderText.cpp View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderTextControl.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderTextControl.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderTextControlSingleLine.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderTextControlSingleLine.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderTextFragment.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderTextFragment.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderView.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderView.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/RenderWidget.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderWidget.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/mathml/RenderMathMLFenced.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/mathml/RenderMathMLFenced.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/mathml/RenderMathMLFraction.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/mathml/RenderMathMLOperator.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/mathml/RenderMathMLSubSup.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/mathml/RenderMathMLSubSup.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGBlock.h View 1 chunk +3 lines, -3 lines 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGBlock.cpp View 2 chunks +6 lines, -6 lines 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGGradientStop.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGGradientStop.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGInline.h View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGInline.cpp View 1 chunk +4 lines, -4 lines 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGInlineText.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGInlineText.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGModelObject.h View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGModelObject.cpp View 1 chunk +4 lines, -4 lines 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGResourceContainer.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.cpp View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGRoot.h View 1 chunk +2 lines, -2 lines 0 comments Download
M Source/WebCore/rendering/svg/RenderSVGRoot.cpp View 1 chunk +4 lines, -4 lines 0 comments Download

Messages

Total messages: 6 (0 generated)
esprehn
Please review.
7 years, 8 months ago (2013-04-05 00:01:54 UTC) #1
ojan
lgtm
7 years, 8 months ago (2013-04-05 01:38:27 UTC) #2
eseidel
This change looks fantastic. It also is the highest-risk change that I've seen yet in ...
7 years, 8 months ago (2013-04-05 01:50:36 UTC) #3
ojan
Still working on this? Seems like the infrastructure is all ready. https://codereview.chromium.org/13679002/diff/1/Source/WebCore/rendering/RenderFlexibleBox.h File Source/WebCore/rendering/RenderFlexibleBox.h (right): ...
7 years, 8 months ago (2013-04-11 02:12:37 UTC) #4
esprehn
On 2013/04/11 02:12:37, ojan wrote: > Still working on this? Seems like the infrastructure is ...
7 years, 8 months ago (2013-04-12 03:07:05 UTC) #5
esprehn
7 years, 8 months ago (2013-04-17 03:29:01 UTC) #6
https://codereview.chromium.org/13679002/diff/1/Source/WebCore/rendering/Rend...
File Source/WebCore/rendering/RenderBlock.cpp (left):

https://codereview.chromium.org/13679002/diff/1/Source/WebCore/rendering/Rend...
Source/WebCore/rendering/RenderBlock.cpp:125: bool
RenderBlock::s_canPropagateFloatIntoSibling = false;
On 2013/04/05 01:50:36, Eric Seidel (Google) wrote:
> Makes me wonder where this was ever cleared....

It never was, we just always call styleWillChange before calling styleDidChange
which checks it so the value is valid. If a subclass forgot to call
styleWillChange you'd get stale state.

https://codereview.chromium.org/13679002/diff/1/Source/WebCore/rendering/Rend...
File Source/WebCore/rendering/RenderFlexibleBox.h (right):

https://codereview.chromium.org/13679002/diff/1/Source/WebCore/rendering/Rend...
Source/WebCore/rendering/RenderFlexibleBox.h:64: virtual void
styleDidChange(StyleDifference, const RenderStyle* oldStyle, const
StyleChangeState&) OVERRIDE;
On 2013/04/11 02:12:37, ojan wrote:
> On 2013/04/05 01:50:36, Eric Seidel (Google) wrote:
> > Makes me wonder a bit why StyleChangeState doesn't just include the other
two
> > arguments.
> 
> I think including StyleDifference makes sense. Including oldStyle makes less
> sense though since styleWillChange takes newStyle as it's RenderStyle
argument.

I'll fold StyleDifference into the context object.

https://codereview.chromium.org/13679002/diff/1/Source/WebCore/rendering/Rend...
File Source/WebCore/rendering/RenderFlowThread.h (right):

https://codereview.chromium.org/13679002/diff/1/Source/WebCore/rendering/Rend...
Source/WebCore/rendering/RenderFlowThread.h:95: virtual void
styleDidChange(StyleDifference, const RenderStyle* oldStyle, const
StyleChangeState&) OVERRIDE;
On 2013/04/05 01:50:36, Eric Seidel (Google) wrote:
> Thank you for cleaning this up.  We really need an automated way to find these
> and fix all these virtual/overrides.

Yup, we need some tools support to clean all this up.

https://codereview.chromium.org/13679002/diff/1/Source/WebCore/rendering/Rend...
File Source/WebCore/rendering/RenderLayerModelObject.cpp (right):

https://codereview.chromium.org/13679002/diff/1/Source/WebCore/rendering/Rend...
Source/WebCore/rendering/RenderLayerModelObject.cpp:93:
state.layerWasSelfPainting = hasSelfPaintingLayer();
On 2013/04/05 01:50:36, Eric Seidel (Google) wrote:
> This no longer needs to be conditional?

The conditional is still there, it's just inside hasSelfPaintingLayer().

https://codereview.chromium.org/13679002/diff/1/Source/WebCore/rendering/Rend...
File Source/WebCore/rendering/RenderObject.cpp (left):

https://codereview.chromium.org/13679002/diff/1/Source/WebCore/rendering/Rend...
Source/WebCore/rendering/RenderObject.cpp:121: bool
RenderObject::s_affectsParentBlock = false;
On 2013/04/05 01:50:36, Eric Seidel (Google) wrote:
> Do we have any clue why these came to be this way?  Were the statics faster? 
Do
> we have perf concerns for this change?

I had a discussion on IRC with apple folks way back about this and the reason
was apparently because it was easier at the time but nothing specific.

https://codereview.chromium.org/13679002/diff/1/Source/WebCore/rendering/Rend...
File Source/WebCore/rendering/RenderObject.h (right):

https://codereview.chromium.org/13679002/diff/1/Source/WebCore/rendering/Rend...
Source/WebCore/rendering/RenderObject.h:168: affectsParentBlock(0),
On 2013/04/05 01:50:36, Eric Seidel (Google) wrote:
> I take it the compiler doesn't like "false"?

Nah, I was just moving fast. I'll change to false.

Powered by Google App Engine
This is Rietveld 408576698