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/RenderMedia.cpp

    r157408 r158097  
    3535namespace WebCore {
    3636
    37 RenderMedia::RenderMedia(HTMLMediaElement& element)
    38     : RenderImage(element)
     37RenderMedia::RenderMedia(HTMLMediaElement& element, PassRef<RenderStyle> style)
     38    : RenderImage(element, std::move(style))
    3939{
    4040    setImageResource(RenderImageResource::create());
    4141}
    4242
    43 RenderMedia::RenderMedia(HTMLMediaElement& element, const IntSize& intrinsicSize)
    44     : RenderImage(element)
     43RenderMedia::RenderMedia(HTMLMediaElement& element, PassRef<RenderStyle> style, const IntSize& intrinsicSize)
     44    : RenderImage(element, std::move(style))
    4545{
    4646    setImageResource(RenderImageResource::create());
Note: See TracChangeset for help on using the changeset viewer.