Changeset 243103 in webkit


Ignore:
Timestamp:
Mar 18, 2019 2:25:37 PM (5 years ago)
Author:
Alan Bujtas
Message:

Move animation and transition functions from RenderBoxModelObject to RenderElement
https://bugs.webkit.org/show_bug.cgi?id=195903

Reviewed by Simon Fraser.

Transitions and animations do not require RenderBoxModelObject. Move these functions to RenderElement and override them at RenderLayerModelObject to support
composition related callbacks.

  • page/animation/AnimationBase.cpp:

(WebCore::AnimationBase::compositedRenderer const):

  • page/animation/AnimationBase.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::startTransition): Deleted.
(WebCore::RenderBoxModelObject::transitionPaused): Deleted.
(WebCore::RenderBoxModelObject::transitionFinished): Deleted.
(WebCore::RenderBoxModelObject::startAnimation): Deleted.
(WebCore::RenderBoxModelObject::animationPaused): Deleted.
(WebCore::RenderBoxModelObject::animationSeeked): Deleted.
(WebCore::RenderBoxModelObject::animationFinished): Deleted.
(WebCore::RenderBoxModelObject::suspendAnimations): Deleted.

  • rendering/RenderBoxModelObject.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::startTransition):
(WebCore::RenderElement::transitionPaused):
(WebCore::RenderElement::transitionFinished):
(WebCore::RenderElement::startAnimation):
(WebCore::RenderElement::animationPaused):
(WebCore::RenderElement::animationSeeked):
(WebCore::RenderElement::animationFinished):
(WebCore::RenderElement::suspendAnimations):

  • rendering/RenderElement.h:
Location:
trunk/Source/WebCore
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r243096 r243103  
     12019-03-18  Zalan Bujtas  <zalan@apple.com>
     2
     3        Move animation and transition functions from RenderBoxModelObject to RenderElement
     4        https://bugs.webkit.org/show_bug.cgi?id=195903
     5
     6        Reviewed by Simon Fraser.
     7
     8        Transitions and animations do not require RenderBoxModelObject. Move these functions to RenderElement and override them at RenderLayerModelObject to support
     9        composition related callbacks.
     10
     11        * page/animation/AnimationBase.cpp:
     12        (WebCore::AnimationBase::compositedRenderer const):
     13        * page/animation/AnimationBase.h:
     14        * rendering/RenderBoxModelObject.cpp:
     15        (WebCore::RenderBoxModelObject::startTransition): Deleted.
     16        (WebCore::RenderBoxModelObject::transitionPaused): Deleted.
     17        (WebCore::RenderBoxModelObject::transitionFinished): Deleted.
     18        (WebCore::RenderBoxModelObject::startAnimation): Deleted.
     19        (WebCore::RenderBoxModelObject::animationPaused): Deleted.
     20        (WebCore::RenderBoxModelObject::animationSeeked): Deleted.
     21        (WebCore::RenderBoxModelObject::animationFinished): Deleted.
     22        (WebCore::RenderBoxModelObject::suspendAnimations): Deleted.
     23        * rendering/RenderBoxModelObject.h:
     24        * rendering/RenderElement.cpp:
     25        (WebCore::RenderElement::startTransition):
     26        (WebCore::RenderElement::transitionPaused):
     27        (WebCore::RenderElement::transitionFinished):
     28        (WebCore::RenderElement::startAnimation):
     29        (WebCore::RenderElement::animationPaused):
     30        (WebCore::RenderElement::animationSeeked):
     31        (WebCore::RenderElement::animationFinished):
     32        (WebCore::RenderElement::suspendAnimations):
     33        * rendering/RenderElement.h:
     34
    1352019-03-18  Antti Koivisto  <antti@apple.com>
    236
  • trunk/Source/WebCore/page/animation/AnimationBase.cpp

    r240237 r243103  
    7070}
    7171
    72 RenderBoxModelObject* AnimationBase::compositedRenderer() const
     72RenderLayerModelObject* AnimationBase::compositedRenderer() const
    7373{
    7474    auto* renderer = this->renderer();
    7575    if (!renderer || !renderer->isComposited())
    7676        return nullptr;
    77     return downcast<RenderBoxModelObject>(renderer);
     77    return downcast<RenderLayerModelObject>(renderer);
    7878}
    7979
  • trunk/Source/WebCore/page/animation/AnimationBase.h

    r240012 r243103  
    4040class FloatRect;
    4141class LayoutRect;
    42 class RenderBoxModelObject;
     42class RenderLayerModelObject;
    4343class RenderElement;
    4444class RenderStyle;
     
    6363    const RenderStyle& currentStyle() const override;
    6464    RenderElement* renderer() const override;
    65     RenderBoxModelObject* compositedRenderer() const;
     65    RenderLayerModelObject* compositedRenderer() const;
    6666    void clear();
    6767
  • trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp

    r239504 r243103  
    162162}
    163163
    164 bool RenderBoxModelObject::startTransition(double timeOffset, CSSPropertyID propertyId, const RenderStyle* fromStyle, const RenderStyle* toStyle)
    165 {
    166     ASSERT(hasLayer());
    167     ASSERT(isComposited());
    168     return layer()->backing()->startTransition(timeOffset, propertyId, fromStyle, toStyle);
    169 }
    170 
    171 void RenderBoxModelObject::transitionPaused(double timeOffset, CSSPropertyID propertyId)
    172 {
    173     ASSERT(hasLayer());
    174     ASSERT(isComposited());
    175     layer()->backing()->transitionPaused(timeOffset, propertyId);
    176 }
    177 
    178 void RenderBoxModelObject::transitionFinished(CSSPropertyID propertyId)
    179 {
    180     ASSERT(hasLayer());
    181     ASSERT(isComposited());
    182     layer()->backing()->transitionFinished(propertyId);
    183 }
    184 
    185 bool RenderBoxModelObject::startAnimation(double timeOffset, const Animation* animation, const KeyframeList& keyframes)
    186 {
    187     ASSERT(hasLayer());
    188     ASSERT(isComposited());
    189     return layer()->backing()->startAnimation(timeOffset, animation, keyframes);
    190 }
    191 
    192 void RenderBoxModelObject::animationPaused(double timeOffset, const String& name)
    193 {
    194     ASSERT(hasLayer());
    195     ASSERT(isComposited());
    196     layer()->backing()->animationPaused(timeOffset, name);
    197 }
    198 
    199 void RenderBoxModelObject::animationSeeked(double timeOffset, const String& name)
    200 {
    201     ASSERT(hasLayer());
    202     ASSERT(isComposited());
    203     layer()->backing()->animationSeeked(timeOffset, name);
    204 }
    205 
    206 void RenderBoxModelObject::animationFinished(const String& name)
    207 {
    208     ASSERT(hasLayer());
    209     ASSERT(isComposited());
    210     layer()->backing()->animationFinished(name);
    211 }
    212 
    213 void RenderBoxModelObject::suspendAnimations(MonotonicTime time)
    214 {
    215     ASSERT(hasLayer());
    216     ASSERT(isComposited());
    217     layer()->backing()->suspendAnimations(time);
    218 }
    219 
    220164RenderBoxModelObject::RenderBoxModelObject(Element& element, RenderStyle&& style, BaseTypeFlags baseTypeFlags)
    221165    : RenderLayerModelObject(element, WTFMove(style), baseTypeFlags | RenderBoxModelObjectFlag)
  • trunk/Source/WebCore/rendering/RenderBoxModelObject.h

    r239502 r243103  
    6161class ImageBuffer;
    6262class InlineFlowBox;
    63 class KeyframeList;
    6463class RenderTextFragment;
    6564class StickyPositionViewportConstraints;
     
    224223    bool hasAcceleratedCompositing() const;
    225224
    226     bool startTransition(double, CSSPropertyID, const RenderStyle* fromStyle, const RenderStyle* toStyle);
    227     void transitionPaused(double timeOffset, CSSPropertyID);
    228     void transitionFinished(CSSPropertyID);
    229 
    230     bool startAnimation(double timeOffset, const Animation*, const KeyframeList& keyframes);
    231     void animationPaused(double timeOffset, const String& name);
    232     void animationSeeked(double timeOffset, const String& name);
    233     void animationFinished(const String& name);
    234 
    235     void suspendAnimations(MonotonicTime = MonotonicTime());
    236 
    237225    RenderBoxModelObject* continuation() const;
    238226    WEBCORE_EXPORT RenderInline* inlineContinuation() const;
  • trunk/Source/WebCore/rendering/RenderElement.h

    r238404 r243103  
    2929
    3030class ControlStates;
     31class KeyframeList;
    3132class RenderBlock;
    3233class RenderTreeBuilder;
     
    221222    RenderObject* attachRendererInternal(RenderPtr<RenderObject> child, RenderObject* beforeChild);
    222223    RenderPtr<RenderObject> detachRendererInternal(RenderObject&);
     224
     225    virtual bool startTransition(double /* timeOffset */, CSSPropertyID, const RenderStyle* /* fromStyle */, const RenderStyle* /* toStyle */) { return false; }
     226    virtual void transitionPaused(double /* timeOffset */, CSSPropertyID) { }
     227    virtual void transitionFinished(CSSPropertyID) { }
     228
     229    virtual bool startAnimation(double /* timeOffset */, const Animation*, const KeyframeList&) { return false; }
     230    virtual void animationPaused(double /* timeOffset */, const String& /* name */) { }
     231    virtual void animationSeeked(double /* timeOffset */, const String& /* name */) { }
     232    virtual void animationFinished(const String& /* name */) { }
     233
     234    virtual void suspendAnimations(MonotonicTime = MonotonicTime()) { }
    223235
    224236protected:
  • trunk/Source/WebCore/rendering/RenderLayerModelObject.cpp

    r240921 r243103  
    284284}
    285285
     286bool RenderLayerModelObject::startTransition(double timeOffset, CSSPropertyID propertyId, const RenderStyle* fromStyle, const RenderStyle* toStyle)
     287{
     288    ASSERT(hasLayer());
     289    ASSERT(isComposited());
     290    return layer()->backing()->startTransition(timeOffset, propertyId, fromStyle, toStyle);
     291}
     292
     293void RenderLayerModelObject::transitionPaused(double timeOffset, CSSPropertyID propertyId)
     294{
     295    ASSERT(hasLayer());
     296    ASSERT(isComposited());
     297    layer()->backing()->transitionPaused(timeOffset, propertyId);
     298}
     299
     300void RenderLayerModelObject::transitionFinished(CSSPropertyID propertyId)
     301{
     302    ASSERT(hasLayer());
     303    ASSERT(isComposited());
     304    layer()->backing()->transitionFinished(propertyId);
     305}
     306
     307bool RenderLayerModelObject::startAnimation(double timeOffset, const Animation* animation, const KeyframeList& keyframes)
     308{
     309    ASSERT(hasLayer());
     310    ASSERT(isComposited());
     311    return layer()->backing()->startAnimation(timeOffset, animation, keyframes);
     312}
     313
     314void RenderLayerModelObject::animationPaused(double timeOffset, const String& name)
     315{
     316    ASSERT(hasLayer());
     317    ASSERT(isComposited());
     318    layer()->backing()->animationPaused(timeOffset, name);
     319}
     320
     321void RenderLayerModelObject::animationSeeked(double timeOffset, const String& name)
     322{
     323    ASSERT(hasLayer());
     324    ASSERT(isComposited());
     325    layer()->backing()->animationSeeked(timeOffset, name);
     326}
     327
     328void RenderLayerModelObject::animationFinished(const String& name)
     329{
     330    ASSERT(hasLayer());
     331    ASSERT(isComposited());
     332    layer()->backing()->animationFinished(name);
     333}
     334
     335void RenderLayerModelObject::suspendAnimations(MonotonicTime time)
     336{
     337    ASSERT(hasLayer());
     338    ASSERT(isComposited());
     339    layer()->backing()->suspendAnimations(time);
     340}
     341
    286342} // namespace WebCore
    287343
  • trunk/Source/WebCore/rendering/RenderLayerModelObject.h

    r228908 r243103  
    2727namespace WebCore {
    2828
     29class KeyframeList;
    2930class RenderLayer;
    3031
     
    6970    void clearRepaintLayoutRects();
    7071
     72    bool startTransition(double timeOffset, CSSPropertyID, const RenderStyle* fromStyle, const RenderStyle* toStyle) override;
     73    void transitionPaused(double timeOffset, CSSPropertyID) override;
     74    void transitionFinished(CSSPropertyID) override;
     75
     76    bool startAnimation(double timeOffset, const Animation*, const KeyframeList& keyframes) override;
     77    void animationPaused(double timeOffset, const String& name) override;
     78    void animationSeeked(double timeOffset, const String& name) override;
     79    void animationFinished(const String& name) override;
     80
     81    void suspendAnimations(MonotonicTime = MonotonicTime()) override;
     82
    7183protected:
    7284    RenderLayerModelObject(Element&, RenderStyle&&, BaseTypeFlags);
Note: See TracChangeset for help on using the changeset viewer.