Ignore:
Timestamp:
Oct 27, 2013, 3:54:07 PM (12 years ago)
Author:
[email protected]
Message:

Renderers should receive their style at construction.
<https://webkit.org/b/123396>

Pass the RenderStyle to all non-text renderer constructors.
After construction, initializeStyle() must be called (as a stopgap
measure) until we are able to do style-derived initialization
without virtual function calls.

With this change, RenderElement::m_style is never null. Subsequent
patches will add enforcement for this and also make style() return
a RenderStyle&.

I'm adding three FIXME's in this patch:

  • createRendererIfNeeded() calls AnimationController to set up the initial style manually instead of asking RenderElement's setAnimatedStyle() to do it. This can probably be done in a nicer way, but it's not clear yet how.
  • ImageContentData::createRenderer() does a bit of unnecessary work. This should be easy to clean up but got too distracting to be part of this patch.
  • Document::createRenderTree() creates the RenderView with an initial dummy RenderStyle. I've done this because resolving the document style assumes we already have a RenderView.

For styleWillChange() implementations to detect that they are
reacting to the initial style, I've added a hasInitializedStyle()
function on RenderElement. This will return false until you've
called initializeStyle() on the renderer. This should go away
along with initializeStyle() eventually.

Reviewed by Antti Koivisto.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/rendering/RenderFrameSet.cpp

    r157971 r158097  
    4545namespace WebCore {
    4646
    47 RenderFrameSet::RenderFrameSet(HTMLFrameSetElement& frameSet)
    48     : RenderBox(frameSet, 0)
     47RenderFrameSet::RenderFrameSet(HTMLFrameSetElement& frameSet, PassRef<RenderStyle> style)
     48    : RenderBox(frameSet, std::move(style), 0)
    4949    , m_isResizing(false)
    5050    , m_isChildResizing(false)
Note: See TracChangeset for help on using the changeset viewer.