Changeset 228949 in webkit
- Timestamp:
- Feb 23, 2018 8:16:27 AM (6 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r228948 r228949 1 2018-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 1 29 2018-02-23 Zalan Bujtas <zalan@apple.com> 2 30 -
trunk/Source/WebCore/dom/Document.cpp
r228938 r228949 6307 6307 } 6308 6308 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 } 6309 void 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()); 6321 6319 } 6322 6320 -
trunk/Source/WebCore/dom/Document.h
r228337 r228949 1132 1132 WEBCORE_EXPORT void webkitDidExitFullScreenForElement(Element*); 1133 1133 1134 void setFullScreenRenderer(RenderTreeBuilder&, RenderFullScreen *);1134 void setFullScreenRenderer(RenderTreeBuilder&, RenderFullScreen&); 1135 1135 RenderFullScreen* fullScreenRenderer() const { return m_fullScreenRenderer.get(); } 1136 1136 -
trunk/Source/WebCore/rendering/RenderFullScreen.cpp
r228938 r228949 39 39 WTF_MAKE_ISO_ALLOCATED_IMPL(RenderFullScreen); 40 40 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 } 41 RenderFullScreenPlaceholder::RenderFullScreenPlaceholder(Document& document, RenderStyle&& style) 42 : RenderBlockFlow(document, WTFMove(style)) 43 { 44 } 48 45 49 private: 50 bool isRenderFullScreenPlaceholder() const override { return true; } 51 }; 46 bool RenderFullScreenPlaceholder::isRenderFullScreenPlaceholder() const 47 { 48 return true; 49 } 52 50 53 51 WTF_MAKE_ISO_ALLOCATED_IMPL(RenderFullScreenPlaceholder); … … 102 100 fullscreenRenderer.setNeedsLayoutAndPrefWidthsRecalc(); 103 101 104 document.setFullScreenRenderer(builder, &fullscreenRenderer);102 document.setFullScreenRenderer(builder, fullscreenRenderer); 105 103 106 104 return newFullscreenRenderer; … … 139 137 fullscreenRenderer.setNeedsLayoutAndPrefWidthsRecalc(); 140 138 141 document.setFullScreenRenderer(builder, &fullscreenRenderer);139 document.setFullScreenRenderer(builder, fullscreenRenderer); 142 140 } 143 141 … … 186 184 } 187 185 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 212 186 } 213 187 -
trunk/Source/WebCore/rendering/RenderFullScreen.h
r228862 r228949 27 27 #if ENABLE(FULLSCREEN_API) 28 28 29 #include "RenderBlockFlow.h" 29 30 #include "RenderFlexibleBox.h" 30 31 … … 40 41 41 42 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); } 43 44 44 45 static RenderPtr<RenderFullScreen> wrapNewRenderer(RenderTreeBuilder&, RenderPtr<RenderElement>, RenderElement& parent, Document&); … … 56 57 }; 57 58 59 class RenderFullScreenPlaceholder final : public RenderBlockFlow { 60 WTF_MAKE_ISO_ALLOCATED(RenderFullScreenPlaceholder); 61 public: 62 RenderFullScreenPlaceholder(Document&, RenderStyle&&); 63 64 private: 65 bool isRenderFullScreenPlaceholder() const override; 66 }; 67 58 68 } // namespace WebCore 59 69 -
trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp
r228938 r228949 359 359 } 360 360 361 #if ENABLE(FULLSCREEN_API) 362 void RenderTreeBuilder::createPlaceholderForFullScreen(RenderFullScreen& renderer, std::unique_ptr<RenderStyle> style, const LayoutRect& frameRect) 363 { 364 fullScreenBuilder().createPlaceholder(renderer, WTFMove(style), frameRect); 365 } 366 #endif 367 361 368 void RenderTreeBuilder::attachToRenderElement(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild) 362 369 { -
trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h
r228938 r228949 55 55 void updateAfterDescendants(RenderElement&); 56 56 void destroyAndCleanUpAnonymousWrappers(RenderObject& child); 57 58 #if ENABLE(FULLSCREEN_API) 59 void createPlaceholderForFullScreen(RenderFullScreen&, std::unique_ptr<RenderStyle>, const LayoutRect&); 60 #endif 57 61 58 62 void childFlowStateChangesAndAffectsParentBlock(RenderElement& child); -
trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFullScreen.cpp
r228938 r228949 38 38 } 39 39 40 void 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 40 64 void RenderTreeBuilder::FullScreen::cleanupOnDestroy(RenderFullScreen& fullScreenRenderer) 41 65 { -
trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFullScreen.h
r228862 r228949 39 39 FullScreen(RenderTreeBuilder&); 40 40 41 void createPlaceholder(RenderFullScreen&, std::unique_ptr<RenderStyle>, const LayoutRect&); 41 42 void cleanupOnDestroy(RenderFullScreen&); 42 43
Note: See TracChangeset
for help on using the changeset viewer.