Diff
Modified: trunk/Source/WebCore/ChangeLog (125952 => 125953)
--- trunk/Source/WebCore/ChangeLog 2012-08-18 00:08:21 UTC (rev 125952)
+++ trunk/Source/WebCore/ChangeLog 2012-08-18 00:10:11 UTC (rev 125953)
@@ -1,3 +1,30 @@
+2012-08-17 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r125940.
+ http://trac.webkit.org/changeset/125940
+ https://bugs.webkit.org/show_bug.cgi?id=94398
+
+ "Causes crashes on the bots
+ http://build.webkit.org/results/Apple%20Lion%20Debug%20WK2%20(Tests)/r125944%20(2626)/fast/css
+ /first-letter-removed-added-crash-log.txt" (Requested by
+ bradee-oh on #webkit).
+
+ * rendering/RenderListItem.cpp:
+ * rendering/RenderListItem.h:
+ (RenderListItem):
+ * rendering/RenderObject.cpp:
+ * rendering/RenderObject.h:
+ (RenderObject):
+ * rendering/RenderObjectChildList.cpp:
+ (WebCore::RenderObjectChildList::removeChildNode):
+ * rendering/RenderObjectChildList.h:
+ (RenderObjectChildList):
+ * rendering/RenderQuote.cpp:
+ * rendering/RenderQuote.h:
+ * rendering/RenderRegion.cpp:
+ * rendering/RenderRegion.h:
+ (RenderRegion):
+
2012-08-17 Sukolsak Sakshuwong <[email protected]>
Disconnect UndoManager when its undo scope host is destroyed
Modified: trunk/Source/WebCore/rendering/RenderListItem.cpp (125952 => 125953)
--- trunk/Source/WebCore/rendering/RenderListItem.cpp 2012-08-18 00:08:21 UTC (rev 125952)
+++ trunk/Source/WebCore/rendering/RenderListItem.cpp 2012-08-18 00:10:11 UTC (rev 125953)
@@ -83,13 +83,6 @@
updateListMarkerNumbers();
}
-void RenderListItem::willBeRemovedFromTree()
-{
- RenderBlock::willBeRemovedFromTree();
-
- updateListMarkerNumbers();
-}
-
static bool isList(Node* node)
{
return (node->hasTagName(ulTag) || node->hasTagName(olTag));
Modified: trunk/Source/WebCore/rendering/RenderListItem.h (125952 => 125953)
--- trunk/Source/WebCore/rendering/RenderListItem.h 2012-08-18 00:08:21 UTC (rev 125952)
+++ trunk/Source/WebCore/rendering/RenderListItem.h 2012-08-18 00:10:11 UTC (rev 125953)
@@ -59,7 +59,6 @@
virtual void willBeDestroyed();
virtual void insertedIntoTree() OVERRIDE;
- virtual void willBeRemovedFromTree() OVERRIDE;
virtual bool isEmpty() const;
virtual void paint(PaintInfo&, const LayoutPoint&);
Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (125952 => 125953)
--- trunk/Source/WebCore/rendering/RenderObject.cpp 2012-08-18 00:08:21 UTC (rev 125952)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp 2012-08-18 00:10:11 UTC (rev 125953)
@@ -2395,42 +2395,6 @@
containerFlowThread->addFlowChild(this);
}
-void RenderObject::willBeRemovedFromTree()
-{
- ASSERT(isRooted());
-
- // If we remove a visible child from an invisible parent, we don't know the layer visibility any more.
- RenderLayer* layer = 0;
- if (parent()->style()->visibility() != VISIBLE && style()->visibility() == VISIBLE && !hasLayer()) {
- if ((layer = parent()->enclosingLayer()))
- layer->dirtyVisibleContentStatus();
- }
-
- // Keep our layer hierarchy updated.
- if (firstChild() || hasLayer()) {
- if (!layer)
- layer = parent()->enclosingLayer();
- removeLayers(layer);
- }
-
- if (isOutOfFlowPositioned() && parent()->childrenInline())
- parent()->dirtyLinesFromChangedChild(this);
-
- if (inRenderFlowThread()) {
- if (isBox())
- enclosingRenderFlowThread()->removeRenderBoxRegionInfo(toRenderBox(this));
- enclosingRenderFlowThread()->clearRenderObjectCustomStyle(this);
- }
-
- if (RenderNamedFlowThread* containerFlowThread = parent()->enclosingRenderNamedFlowThread())
- containerFlowThread->removeFlowChild(this);
-
-#if ENABLE(SVG)
- // Update cached boundaries in SVG renderers, if a child is removed.
- parent()->setNeedsBoundariesUpdate();
-#endif
-}
-
void RenderObject::destroyAndCleanupAnonymousWrappers()
{
RenderObject* parent = this->parent();
Modified: trunk/Source/WebCore/rendering/RenderObject.h (125952 => 125953)
--- trunk/Source/WebCore/rendering/RenderObject.h 2012-08-18 00:08:21 UTC (rev 125952)
+++ trunk/Source/WebCore/rendering/RenderObject.h 2012-08-18 00:10:11 UTC (rev 125953)
@@ -939,7 +939,6 @@
virtual bool canBeReplacedWithInlineRunIn() const;
virtual void insertedIntoTree();
- virtual void willBeRemovedFromTree();
private:
RenderStyle* firstLineStyleSlowCase() const;
Modified: trunk/Source/WebCore/rendering/RenderObjectChildList.cpp (125952 => 125953)
--- trunk/Source/WebCore/rendering/RenderObjectChildList.cpp 2012-08-18 00:08:21 UTC (rev 125952)
+++ trunk/Source/WebCore/rendering/RenderObjectChildList.cpp 2012-08-18 00:10:11 UTC (rev 125953)
@@ -63,7 +63,7 @@
}
}
-RenderObject* RenderObjectChildList::removeChildNode(RenderObject* owner, RenderObject* oldChild, bool notifyRenderer)
+RenderObject* RenderObjectChildList::removeChildNode(RenderObject* owner, RenderObject* oldChild, bool fullRemove)
{
ASSERT(oldChild->parent() == owner);
@@ -73,7 +73,7 @@
// So that we'll get the appropriate dirty bit set (either that a normal flow child got yanked or
// that a positioned child got yanked). We also repaint, so that the area exposed when the child
// disappears gets repainted properly.
- if (!owner->documentBeingDestroyed() && notifyRenderer && oldChild->everHadLayout()) {
+ if (!owner->documentBeingDestroyed() && fullRemove && oldChild->everHadLayout()) {
oldChild->setNeedsLayoutAndPrefWidthsRecalc();
if (oldChild->isBody())
owner->view()->repaint();
@@ -85,8 +85,47 @@
if (oldChild->isBox())
toRenderBox(oldChild)->deleteLineBoxWrapper();
- if (!owner->documentBeingDestroyed() && notifyRenderer)
- oldChild->willBeRemovedFromTree();
+ if (!owner->documentBeingDestroyed() && fullRemove) {
+ // if we remove visible child from an invisible parent, we don't know the layer visibility any more
+ RenderLayer* layer = 0;
+ if (owner->style()->visibility() != VISIBLE && oldChild->style()->visibility() == VISIBLE && !oldChild->hasLayer()) {
+ if ((layer = owner->enclosingLayer()))
+ layer->dirtyVisibleContentStatus();
+ }
+
+ // Keep our layer hierarchy updated.
+ if (oldChild->firstChild() || oldChild->hasLayer()) {
+ if (!layer)
+ layer = owner->enclosingLayer();
+ oldChild->removeLayers(layer);
+ }
+
+ if (oldChild->isListItem())
+ toRenderListItem(oldChild)->updateListMarkerNumbers();
+
+ if (oldChild->isOutOfFlowPositioned() && owner->childrenInline())
+ owner->dirtyLinesFromChangedChild(oldChild);
+
+ if (oldChild->isRenderRegion())
+ toRenderRegion(oldChild)->detachRegion();
+
+ if (oldChild->isQuote())
+ toRenderQuote(oldChild)->detachQuote();
+
+ if (oldChild->inRenderFlowThread()) {
+ if (oldChild->isBox())
+ oldChild->enclosingRenderFlowThread()->removeRenderBoxRegionInfo(toRenderBox(oldChild));
+ oldChild->enclosingRenderFlowThread()->clearRenderObjectCustomStyle(oldChild);
+ }
+
+ if (RenderNamedFlowThread* containerFlowThread = owner->enclosingRenderNamedFlowThread())
+ containerFlowThread->removeFlowChild(oldChild);
+
+#if ENABLE(SVG)
+ // Update cached boundaries in SVG renderers, if a child is removed.
+ owner->setNeedsBoundariesUpdate();
+#endif
+ }
// If oldChild is the start or end of the selection, then clear the selection to
// avoid problems of invalid pointers.
Modified: trunk/Source/WebCore/rendering/RenderObjectChildList.h (125952 => 125953)
--- trunk/Source/WebCore/rendering/RenderObjectChildList.h 2012-08-18 00:08:21 UTC (rev 125952)
+++ trunk/Source/WebCore/rendering/RenderObjectChildList.h 2012-08-18 00:10:11 UTC (rev 125953)
@@ -52,7 +52,7 @@
void destroyLeftoverChildren();
- RenderObject* removeChildNode(RenderObject* owner, RenderObject*, bool notifyRenderer = true);
+ RenderObject* removeChildNode(RenderObject* owner, RenderObject*, bool fullRemove = true);
void appendChildNode(RenderObject* owner, RenderObject*, bool notifyRenderer = true);
void insertChildNode(RenderObject* owner, RenderObject* child, RenderObject* before, bool notifyRenderer = true);
Modified: trunk/Source/WebCore/rendering/RenderQuote.cpp (125952 => 125953)
--- trunk/Source/WebCore/rendering/RenderQuote.cpp 2012-08-18 00:08:21 UTC (rev 125952)
+++ trunk/Source/WebCore/rendering/RenderQuote.cpp 2012-08-18 00:10:11 UTC (rev 125953)
@@ -50,13 +50,6 @@
RenderText::willBeDestroyed();
}
-void RenderQuote::willBeRemovedFromTree()
-{
- RenderText::willBeRemovedFromTree();
-
- detachQuote();
-}
-
typedef HashMap<AtomicString, const QuotesData*, CaseFoldingHash> QuotesMap;
static const QuotesMap& quotesDataLanguageMap()
Modified: trunk/Source/WebCore/rendering/RenderQuote.h (125952 => 125953)
--- trunk/Source/WebCore/rendering/RenderQuote.h 2012-08-18 00:08:21 UTC (rev 125952)
+++ trunk/Source/WebCore/rendering/RenderQuote.h 2012-08-18 00:10:11 UTC (rev 125953)
@@ -49,8 +49,6 @@
// renderers before going into the main render tree. Once we can ensure that insertIntoTree,
// is called on an attached tree, we should override it here.
- virtual void willBeRemovedFromTree() OVERRIDE;
-
const QuotesData* quotesData() const;
void updateDepth();
bool isAttached() { return m_attached; }
Modified: trunk/Source/WebCore/rendering/RenderRegion.cpp (125952 => 125953)
--- trunk/Source/WebCore/rendering/RenderRegion.cpp 2012-08-18 00:08:21 UTC (rev 125952)
+++ trunk/Source/WebCore/rendering/RenderRegion.cpp 2012-08-18 00:10:11 UTC (rev 125953)
@@ -364,13 +364,6 @@
attachRegion();
}
-void RenderRegion::willBeRemovedFromTree()
-{
- RenderReplaced::willBeRemovedFromTree();
-
- detachRegion();
-}
-
PassRefPtr<RenderStyle> RenderRegion::computeStyleInRegion(const RenderObject* object)
{
ASSERT(object);
Modified: trunk/Source/WebCore/rendering/RenderRegion.h (125952 => 125953)
--- trunk/Source/WebCore/rendering/RenderRegion.h 2012-08-18 00:08:21 UTC (rev 125952)
+++ trunk/Source/WebCore/rendering/RenderRegion.h 2012-08-18 00:10:11 UTC (rev 125953)
@@ -101,7 +101,6 @@
virtual const char* renderName() const { return "RenderRegion"; }
virtual void insertedIntoTree() OVERRIDE;
- virtual void willBeRemovedFromTree() OVERRIDE;
PassRefPtr<RenderStyle> computeStyleInRegion(const RenderObject*);
void computeChildrenStyleInRegion(const RenderObject*);