Changeset 228949 in webkit


Ignore:
Timestamp:
Feb 23, 2018 8:16:27 AM (6 years ago)
Author:
Alan Bujtas
Message:

[RenderTreeBuilder] Move RenderFullScreen::createPlaceholder to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=183027
<rdar://problem/37773058>

Reviewed by Antti Koivisto.

No change in functionality.

  • dom/Document.cpp:

(WebCore::Document::setFullScreenRenderer):

  • dom/Document.h:
  • rendering/RenderFullScreen.cpp:

(WebCore::RenderFullScreenPlaceholder::RenderFullScreenPlaceholder):
(WebCore::RenderFullScreenPlaceholder::isRenderFullScreenPlaceholder const):
(WebCore::RenderFullScreen::wrapNewRenderer):
(WebCore::RenderFullScreen::wrapExistingRenderer):
(): Deleted.
(WebCore::RenderFullScreen::createPlaceholder): Deleted.

  • rendering/RenderFullScreen.h:
  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::createPlaceholderForFullScreen):

  • rendering/updating/RenderTreeBuilder.h:
  • rendering/updating/RenderTreeBuilderFullScreen.cpp:

(WebCore::RenderTreeBuilder::FullScreen::createPlaceholder):

  • rendering/updating/RenderTreeBuilderFullScreen.h:
Location:
trunk/Source/WebCore
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r228948 r228949  
     12018-02-23  Zalan Bujtas  <zalan@apple.com>
     2
     3        [RenderTreeBuilder] Move RenderFullScreen::createPlaceholder to RenderTreeBuilder
     4        https://bugs.webkit.org/show_bug.cgi?id=183027
     5        <rdar://problem/37773058>
     6
     7        Reviewed by Antti Koivisto.
     8
     9        No change in functionality.
     10
     11        * dom/Document.cpp:
     12        (WebCore::Document::setFullScreenRenderer):
     13        * dom/Document.h:
     14        * rendering/RenderFullScreen.cpp:
     15        (WebCore::RenderFullScreenPlaceholder::RenderFullScreenPlaceholder):
     16        (WebCore::RenderFullScreenPlaceholder::isRenderFullScreenPlaceholder const):
     17        (WebCore::RenderFullScreen::wrapNewRenderer):
     18        (WebCore::RenderFullScreen::wrapExistingRenderer):
     19        (): Deleted.
     20        (WebCore::RenderFullScreen::createPlaceholder): Deleted.
     21        * rendering/RenderFullScreen.h:
     22        * rendering/updating/RenderTreeBuilder.cpp:
     23        (WebCore::RenderTreeBuilder::createPlaceholderForFullScreen):
     24        * rendering/updating/RenderTreeBuilder.h:
     25        * rendering/updating/RenderTreeBuilderFullScreen.cpp:
     26        (WebCore::RenderTreeBuilder::FullScreen::createPlaceholder):
     27        * rendering/updating/RenderTreeBuilderFullScreen.h:
     28
    1292018-02-23  Zalan Bujtas  <zalan@apple.com>
    230
  • trunk/Source/WebCore/dom/Document.cpp

    r228938 r228949  
    63076307}
    63086308
    6309 void Document::setFullScreenRenderer(RenderTreeBuilder& builder, RenderFullScreen* renderer)
    6310 {
    6311     if (renderer == m_fullScreenRenderer)
    6312         return;
    6313 
    6314     if (renderer) {
    6315         if (m_savedPlaceholderRenderStyle)
    6316             renderer->createPlaceholder(WTFMove(m_savedPlaceholderRenderStyle), m_savedPlaceholderFrameRect);
    6317         else if (m_fullScreenRenderer && m_fullScreenRenderer->placeholder()) {
    6318             auto* placeholder = m_fullScreenRenderer->placeholder();
    6319             renderer->createPlaceholder(RenderStyle::clonePtr(placeholder->style()), placeholder->frameRect());
    6320         }
     6309void Document::setFullScreenRenderer(RenderTreeBuilder& builder, RenderFullScreen& renderer)
     6310{
     6311    if (&renderer == m_fullScreenRenderer)
     6312        return;
     6313
     6314    if (m_savedPlaceholderRenderStyle)
     6315        builder.createPlaceholderForFullScreen(renderer, WTFMove(m_savedPlaceholderRenderStyle), m_savedPlaceholderFrameRect);
     6316    else if (m_fullScreenRenderer && m_fullScreenRenderer->placeholder()) {
     6317        auto* placeholder = m_fullScreenRenderer->placeholder();
     6318        builder.createPlaceholderForFullScreen(renderer, RenderStyle::clonePtr(placeholder->style()), placeholder->frameRect());
    63216319    }
    63226320
  • trunk/Source/WebCore/dom/Document.h

    r228337 r228949  
    11321132    WEBCORE_EXPORT void webkitDidExitFullScreenForElement(Element*);
    11331133   
    1134     void setFullScreenRenderer(RenderTreeBuilder&, RenderFullScreen*);
     1134    void setFullScreenRenderer(RenderTreeBuilder&, RenderFullScreen&);
    11351135    RenderFullScreen* fullScreenRenderer() const { return m_fullScreenRenderer.get(); }
    11361136
  • trunk/Source/WebCore/rendering/RenderFullScreen.cpp

    r228938 r228949  
    3939WTF_MAKE_ISO_ALLOCATED_IMPL(RenderFullScreen);
    4040
    41 class RenderFullScreenPlaceholder final : public RenderBlockFlow {
    42     WTF_MAKE_ISO_ALLOCATED(RenderFullScreenPlaceholder);
    43 public:
    44     RenderFullScreenPlaceholder(Document& document, RenderStyle&& style)
    45         : RenderBlockFlow(document, WTFMove(style))
    46     {
    47     }
     41RenderFullScreenPlaceholder::RenderFullScreenPlaceholder(Document& document, RenderStyle&& style)
     42    : RenderBlockFlow(document, WTFMove(style))
     43{
     44}
    4845
    49 private:
    50     bool isRenderFullScreenPlaceholder() const override { return true; }
    51 };
     46bool RenderFullScreenPlaceholder::isRenderFullScreenPlaceholder() const
     47{
     48    return true;
     49}
    5250
    5351WTF_MAKE_ISO_ALLOCATED_IMPL(RenderFullScreenPlaceholder);
     
    102100    fullscreenRenderer.setNeedsLayoutAndPrefWidthsRecalc();
    103101
    104     document.setFullScreenRenderer(builder, &fullscreenRenderer);
     102    document.setFullScreenRenderer(builder, fullscreenRenderer);
    105103
    106104    return newFullscreenRenderer;
     
    139137    fullscreenRenderer.setNeedsLayoutAndPrefWidthsRecalc();
    140138
    141     document.setFullScreenRenderer(builder, &fullscreenRenderer);
     139    document.setFullScreenRenderer(builder, fullscreenRenderer);
    142140}
    143141
     
    186184}
    187185
    188 void RenderFullScreen::createPlaceholder(std::unique_ptr<RenderStyle> style, const LayoutRect& frameRect)
    189 {
    190     if (style->width().isAuto())
    191         style->setWidth(Length(frameRect.width(), Fixed));
    192     if (style->height().isAuto())
    193         style->setHeight(Length(frameRect.height(), Fixed));
    194 
    195     if (m_placeholder) {
    196         m_placeholder->setStyle(WTFMove(*style));
    197         return;
    198     }
    199 
    200     if (!parent())
    201         return;
    202 
    203     auto newPlaceholder = createRenderer<RenderFullScreenPlaceholder>(document(), WTFMove(*style));
    204     newPlaceholder->initializeStyle();
    205 
    206     m_placeholder = makeWeakPtr(*newPlaceholder);
    207 
    208     RenderTreeBuilder::current()->attach(*parent(), WTFMove(newPlaceholder), this);
    209     parent()->setNeedsLayoutAndPrefWidthsRecalc();
    210 }
    211 
    212186}
    213187
  • trunk/Source/WebCore/rendering/RenderFullScreen.h

    r228862 r228949  
    2727#if ENABLE(FULLSCREEN_API)
    2828
     29#include "RenderBlockFlow.h"
    2930#include "RenderFlexibleBox.h"
    3031
     
    4041
    4142    RenderBlock* placeholder() { return m_placeholder.get(); }
    42     void createPlaceholder(std::unique_ptr<RenderStyle>, const LayoutRect& frameRect);
     43    void setPlaceholder(RenderBlock& placeholder) { m_placeholder = makeWeakPtr(placeholder); }
    4344
    4445    static RenderPtr<RenderFullScreen> wrapNewRenderer(RenderTreeBuilder&, RenderPtr<RenderElement>, RenderElement& parent, Document&);
     
    5657};
    5758
     59class RenderFullScreenPlaceholder final : public RenderBlockFlow {
     60    WTF_MAKE_ISO_ALLOCATED(RenderFullScreenPlaceholder);
     61public:
     62    RenderFullScreenPlaceholder(Document&, RenderStyle&&);
     63
     64private:
     65    bool isRenderFullScreenPlaceholder() const override;
     66};
     67
    5868} // namespace WebCore
    5969
  • trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp

    r228938 r228949  
    359359}
    360360
     361#if ENABLE(FULLSCREEN_API)
     362void RenderTreeBuilder::createPlaceholderForFullScreen(RenderFullScreen& renderer, std::unique_ptr<RenderStyle> style, const LayoutRect& frameRect)
     363{
     364    fullScreenBuilder().createPlaceholder(renderer, WTFMove(style), frameRect);
     365}
     366#endif
     367
    361368void RenderTreeBuilder::attachToRenderElement(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild)
    362369{
  • trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h

    r228938 r228949  
    5555    void updateAfterDescendants(RenderElement&);
    5656    void destroyAndCleanUpAnonymousWrappers(RenderObject& child);
     57
     58#if ENABLE(FULLSCREEN_API)
     59    void createPlaceholderForFullScreen(RenderFullScreen&, std::unique_ptr<RenderStyle>, const LayoutRect&);
     60#endif
    5761
    5862    void childFlowStateChangesAndAffectsParentBlock(RenderElement& child);
  • trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFullScreen.cpp

    r228938 r228949  
    3838}
    3939
     40void RenderTreeBuilder::FullScreen::createPlaceholder(RenderFullScreen& renderer, std::unique_ptr<RenderStyle> style, const LayoutRect& frameRect)
     41{
     42    if (style->width().isAuto())
     43        style->setWidth(Length(frameRect.width(), Fixed));
     44    if (style->height().isAuto())
     45        style->setHeight(Length(frameRect.height(), Fixed));
     46
     47    if (auto* placeHolder = renderer.placeholder()) {
     48        placeHolder->setStyle(WTFMove(*style));
     49        return;
     50    }
     51
     52    if (!renderer.parent())
     53        return;
     54
     55    auto newPlaceholder = createRenderer<RenderFullScreenPlaceholder>(renderer.document(), WTFMove(*style));
     56    newPlaceholder->initializeStyle();
     57
     58    renderer.setPlaceholder(*newPlaceholder);
     59
     60    m_builder.attach(*renderer.parent(), WTFMove(newPlaceholder), &renderer);
     61    renderer.parent()->setNeedsLayoutAndPrefWidthsRecalc();
     62}
     63
    4064void RenderTreeBuilder::FullScreen::cleanupOnDestroy(RenderFullScreen& fullScreenRenderer)
    4165{
  • trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFullScreen.h

    r228862 r228949  
    3939    FullScreen(RenderTreeBuilder&);
    4040
     41    void createPlaceholder(RenderFullScreen&, std::unique_ptr<RenderStyle>, const LayoutRect&);
    4142    void cleanupOnDestroy(RenderFullScreen&);
    4243
Note: See TracChangeset for help on using the changeset viewer.