Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(500)

Unified Diff: third_party/WebKit/Source/core/layout/LayoutBlock.cpp

Issue 1977083002: Move line/continuation specific parts of willBeDestroyed() into LayoutBlockFlow. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/layout/LayoutBlock.cpp
diff --git a/third_party/WebKit/Source/core/layout/LayoutBlock.cpp b/third_party/WebKit/Source/core/layout/LayoutBlock.cpp
index 862c3d8c5672d499912098c23b55bd2befce50c4..99c2ba7ddb76a7e110bcb004190419526a64f83a 100644
--- a/third_party/WebKit/Source/core/layout/LayoutBlock.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutBlock.cpp
@@ -151,46 +151,8 @@ LayoutBlock::~LayoutBlock()
void LayoutBlock::willBeDestroyed()
{
- // Mark as being destroyed to avoid trouble with merges in removeChild().
- m_beingDestroyed = true;
-
- // Make sure to destroy anonymous children first while they are still connected to the rest of the tree, so that they will
- // properly dirty line boxes that they are removed from. Effects that do :before/:after only on hover could crash otherwise.
- children()->destroyLeftoverChildren();
-
- // Destroy our continuation before anything other than anonymous children.
- // The reason we don't destroy it before anonymous children is that they may
- // have continuations of their own that are anonymous children of our continuation.
- LayoutBoxModelObject* continuation = this->continuation();
- if (continuation) {
- continuation->destroy();
- setContinuation(nullptr);
- }
-
- if (!documentBeingDestroyed()) {
- if (firstLineBox()) {
- // We can't wait for LayoutBox::destroy to clear the selection,
- // because by then we will have nuked the line boxes.
- // FIXME: The FrameSelection should be responsible for this when it
- // is notified of DOM mutations.
- if (isSelectionBorder())
- view()->clearSelection();
-
- // If we are an anonymous block, then our line boxes might have children
- // that will outlast this block. In the non-anonymous block case those
- // children will be destroyed by the time we return from this function.
- if (isAnonymousBlock()) {
- for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox()) {
- while (InlineBox* childBox = box->firstChild())
- childBox->remove();
- }
- }
- } else if (parent()) {
- parent()->dirtyLinesFromChangedChild(this);
- }
- }
-
- m_lineBoxes.deleteLineBoxes();
+ if (!documentBeingDestroyed() && parent())
+ parent()->dirtyLinesFromChangedChild(this);
if (UNLIKELY(gDelayedUpdateScrollInfoSet != 0))
gDelayedUpdateScrollInfoSet->remove(this);

Powered by Google App Engine
This is Rietveld 408576698