Changeset 228683 in webkit
- Timestamp:
- Feb 19, 2018 7:16:59 AM (6 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r228662 r228683 1 2018-02-19 Zalan Bujtas <zalan@apple.com> 2 3 [RenderTreeBuilder] Move RenderElement::removeAndDestroyChild() to RenderTreeBuilder 4 https://bugs.webkit.org/show_bug.cgi?id=182915 5 <rdar://problem/37658123> 6 7 Reviewed by Antti Koivisto. 8 9 No change in functionality. 10 11 * rendering/RenderElement.cpp: 12 (WebCore::RenderElement::removeAndDestroyChild): Deleted. 13 * rendering/RenderElement.h: 14 (WebCore::RenderElement::isChildAllowed const): 15 * rendering/RenderObject.cpp: 16 (WebCore::RenderObject::removeFromParentAndDestroy): 17 * rendering/RenderView.cpp: 18 (WebCore::RenderView::willBeDestroyed): 19 * rendering/updating/RenderTreeBuilder.cpp: 20 (WebCore::RenderTreeBuilder::removeAndDestroyChild): 21 (WebCore::RenderTreeBuilder::removeFromParentAndDestroyCleaningUpAnonymousWrappers): 22 * rendering/updating/RenderTreeBuilder.h: 23 * rendering/updating/RenderTreeBuilderFirstLetter.cpp: 24 (WebCore::RenderTreeBuilder::FirstLetter::updateStyle): 25 (WebCore::RenderTreeBuilder::FirstLetter::createRenderers): 26 1 27 2018-02-12 Sergio Villar Senin <svillar@igalia.com> 2 28 -
trunk/Source/WebCore/rendering/RenderElement.cpp
r228606 r228683 474 474 } 475 475 476 void RenderElement::removeAndDestroyChild(RenderTreeBuilder& builder, RenderObject& oldChild)477 {478 auto toDestroy = builder.takeChild(*this, oldChild);479 // We need to detach the subtree first so that the descendants don't have480 // access to previous/next sublings at takeChild().481 // FIXME: webkit.org/b/182909.482 if (!is<RenderElement>(toDestroy.get()))483 return;484 485 auto& child = downcast<RenderElement>(*toDestroy.get());486 while (child.firstChild()) {487 auto& firstChild = *child.firstChild();488 if (auto* node = firstChild.node())489 node->setRenderer(nullptr);490 child.removeAndDestroyChild(builder, firstChild);491 }492 }493 494 476 RenderObject* RenderElement::attachRendererInternal(RenderPtr<RenderObject> child, RenderObject* beforeChild) 495 477 { -
trunk/Source/WebCore/rendering/RenderElement.h
r228588 r228683 88 88 89 89 virtual bool isChildAllowed(const RenderObject&, const RenderStyle&) const { return true; } 90 void removeAndDestroyChild(RenderTreeBuilder&, RenderObject&);91 90 void didInsertChild(RenderObject& child, RenderObject* beforeChild); 92 91 -
trunk/Source/WebCore/rendering/RenderObject.cpp
r228337 r228683 259 259 { 260 260 ASSERT(m_parent); 261 m_parent->removeAndDestroyChild(builder,*this);261 builder.removeAndDestroyChild(*this); 262 262 } 263 263 -
trunk/Source/WebCore/rendering/RenderView.cpp
r228387 r228683 617 617 // FIXME: This is a workaround for leftover content (see webkit.org/b/182547). 618 618 while (firstChild()) 619 removeAndDestroyChild(builder,*firstChild());619 builder.removeAndDestroyChild(*firstChild()); 620 620 621 621 ASSERT_WITH_MESSAGE(m_rendererCount == 1, "All other renderers in this render tree should have been destroyed"); -
trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.cpp
r228595 r228683 140 140 } 141 141 142 void RenderTreeBuilder::removeAndDestroyChild(RenderObject& child) 143 { 144 ASSERT(child.parent()); 145 auto toDestroy = takeChild(*child.parent(), child); 146 // We need to detach the subtree first so that the descendants don't have 147 // access to previous/next sublings at takeChild(). 148 // FIXME: webkit.org/b/182909. 149 if (!is<RenderElement>(toDestroy.get())) 150 return; 151 152 auto& childToDestroy = downcast<RenderElement>(*toDestroy.get()); 153 while (childToDestroy.firstChild()) { 154 auto& firstChild = *childToDestroy.firstChild(); 155 if (auto* node = firstChild.node()) 156 node->setRenderer(nullptr); 157 removeAndDestroyChild(firstChild); 158 } 159 } 160 142 161 void RenderTreeBuilder::insertChild(RenderElement& parent, RenderPtr<RenderObject> child, RenderObject* beforeChild) 143 162 { … … 640 659 641 660 auto& destroyRootParent = *destroyRoot.parent(); 642 destroyRootParent.removeAndDestroyChild(*this,destroyRoot);661 removeAndDestroyChild(destroyRoot); 643 662 removeAnonymousWrappersForInlineChildrenIfNeeded(destroyRootParent); 644 663 -
trunk/Source/WebCore/rendering/updating/RenderTreeBuilder.h
r228595 r228683 45 45 void insertChild(RenderElement& parent, RenderPtr<RenderObject>, RenderObject* beforeChild = nullptr); 46 46 47 void removeAndDestroyChild(RenderObject& child); 47 48 RenderPtr<RenderObject> takeChild(RenderElement&, RenderObject&) WARN_UNUSED_RETURN; 48 49 -
trunk/Source/WebCore/rendering/updating/RenderTreeBuilderFirstLetter.cpp
r228400 r228683 186 186 newFirstLetter->setFirstLetterRemainingText(*remainingText); 187 187 } 188 firstLetterContainer->removeAndDestroyChild(m_builder,*firstLetter);188 m_builder.removeAndDestroyChild(*firstLetter); 189 189 m_builder.insertChild(*firstLetterContainer, WTFMove(newFirstLetter), nextSibling); 190 190 return; … … 242 242 auto* textNode = currentTextChild.textNode(); 243 243 auto* beforeChild = currentTextChild.nextSibling(); 244 firstLetterContainer->removeAndDestroyChild(m_builder,currentTextChild);244 m_builder.removeAndDestroyChild(currentTextChild); 245 245 246 246 // Construct a text fragment for the text after the first letter.
Note: See TracChangeset
for help on using the changeset viewer.