Title: [121999] releases/WebKitGTK/webkit-1.8
Revision
121999
Author
mrobin...@webkit.org
Date
2012-07-06 13:02:12 -0700 (Fri, 06 Jul 2012)

Log Message

Merge 116174 - ASSERT(beforeChildAnonymousContainer->isTable()); fails in RenderBlock::addChildIgnoringAnonymousColumnBlocks.
https://bugs.webkit.org/show_bug.cgi?id=84606

Patch by Abhishek Arya <infe...@chromium.org> on 2012-05-04
Reviewed by Julien Chaffraix.

Source/WebCore:

RenderBlock::removeChild forgot to set display on the anonymous block, causing it
to display as INLINE. To prevent this kind of failure in future, we replace
createAnonymousStyle with createAnonymousStyleWithDisplay to make everyone explictly
pass display as the argument.

Test: fast/block/block-add-child-crash.html

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::removeChild):
(WebCore::RenderBlock::createAnonymousWithParentRendererAndDisplay):
(WebCore::RenderBlock::createAnonymousColumnsWithParentRenderer):
(WebCore::RenderBlock::createAnonymousColumnSpanWithParentRenderer):
* rendering/RenderInline.cpp:
(WebCore::updateStyleOfAnonymousBlockContinuations):
(WebCore::RenderInline::addChildIgnoringContinuation):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::propagateStyleToAnonymousChildren):
* rendering/RenderRuby.cpp:
(WebCore::createAnonymousRubyInlineBlock):
* rendering/RenderRubyRun.cpp:
(WebCore::RenderRubyRun::createRubyBase):
(WebCore::RenderRubyRun::staticCreateRubyRun):
* rendering/RenderTable.cpp:
(WebCore::RenderTable::createAnonymousWithParentRenderer):
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::createAnonymousWithParentRenderer):
* rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::createAnonymousWithParentRenderer):
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::createAnonymousWithParentRenderer):
* rendering/mathml/RenderMathMLBlock.cpp:
(WebCore::RenderMathMLBlock::createAlmostAnonymousBlock):
* rendering/mathml/RenderMathMLRow.cpp:
(WebCore::RenderMathMLRow::createAnonymousWithParentRenderer):
* rendering/mathml/RenderMathMLSubSup.cpp:
(WebCore::RenderMathMLSubSup::addChild):
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::createAnonymousStyleWithDisplay):
* rendering/style/RenderStyle.h:

LayoutTests:

* fast/block/block-add-child-crash-expected.txt: Added.
* fast/block/block-add-child-crash.html: Added.

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-1.8/LayoutTests/ChangeLog (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/LayoutTests/ChangeLog	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/LayoutTests/ChangeLog	2012-07-06 20:02:12 UTC (rev 121999)
@@ -1,3 +1,13 @@
+2012-05-04  Abhishek Arya  <infe...@chromium.org>
+
+        ASSERT(beforeChildAnonymousContainer->isTable()); fails in RenderBlock::addChildIgnoringAnonymousColumnBlocks.
+        https://bugs.webkit.org/show_bug.cgi?id=84606
+
+        Reviewed by Julien Chaffraix.
+
+        * fast/block/block-add-child-crash-expected.txt: Added.
+        * fast/block/block-add-child-crash.html: Added.
+
 2012-05-16  Abhishek Arya  <infe...@chromium.org>
 
         Missing RenderApplet cast check in HTMLAppletElement::renderWidgetForJSBindings.

Added: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/block/block-add-child-crash-expected.txt (0 => 121999)


--- releases/WebKitGTK/webkit-1.8/LayoutTests/fast/block/block-add-child-crash-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-1.8/LayoutTests/fast/block/block-add-child-crash-expected.txt	2012-07-06 20:02:12 UTC (rev 121999)
@@ -0,0 +1,3 @@
+WebKit Bug 84606 - ASSERT(beforeChildAnonymousContainer->isTable()); fails in RenderBlock::addChildIgnoringAnonymousColumnBlocks.
+The test passes if it doesn't CRASH nor ASSERT.
+PASS 
Property changes on: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/block/block-add-child-crash-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/block/block-add-child-crash.html (0 => 121999)


--- releases/WebKitGTK/webkit-1.8/LayoutTests/fast/block/block-add-child-crash.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-1.8/LayoutTests/fast/block/block-add-child-crash.html	2012-07-06 20:02:12 UTC (rev 121999)
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<body>
+WebKit Bug 84606 - ASSERT(beforeChildAnonymousContainer->isTable()); fails in RenderBlock::addChildIgnoringAnonymousColumnBlocks.<br />
+The test passes if it doesn't CRASH nor ASSERT.
+<style>
+.container { -webkit-column-count: 1; }
+.columnSpan { -webkit-column-span: all; }
+</style>
+<li class="container">
+<blockquote id="test">
+<table class="columnSpan"></table>
+</blockquote>
+<textarea></textarea>
+</li>
+<script>
+if (window.layoutTestController)
+    layoutTestController.dumpAsText();
+
+document.body.offsetTop;
+var test = document.getElementById("test");
+test.outerHTML = "PASS";
+</script>
+</body>
+</html>
Property changes on: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/block/block-add-child-crash.html
___________________________________________________________________

Added: svn:executable

Added: svn:eol-style

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/ChangeLog (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/ChangeLog	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/ChangeLog	2012-07-06 20:02:12 UTC (rev 121999)
@@ -1,3 +1,50 @@
+2012-05-04  Abhishek Arya  <infe...@chromium.org>
+
+        ASSERT(beforeChildAnonymousContainer->isTable()); fails in RenderBlock::addChildIgnoringAnonymousColumnBlocks.
+        https://bugs.webkit.org/show_bug.cgi?id=84606
+
+        Reviewed by Julien Chaffraix.
+
+        RenderBlock::removeChild forgot to set display on the anonymous block, causing it
+        to display as INLINE. To prevent this kind of failure in future, we replace
+        createAnonymousStyle with createAnonymousStyleWithDisplay to make everyone explictly
+        pass display as the argument.
+
+        Test: fast/block/block-add-child-crash.html
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::removeChild): 
+        (WebCore::RenderBlock::createAnonymousWithParentRendererAndDisplay):
+        (WebCore::RenderBlock::createAnonymousColumnsWithParentRenderer):
+        (WebCore::RenderBlock::createAnonymousColumnSpanWithParentRenderer):
+        * rendering/RenderInline.cpp:
+        (WebCore::updateStyleOfAnonymousBlockContinuations):
+        (WebCore::RenderInline::addChildIgnoringContinuation):
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::propagateStyleToAnonymousChildren):
+        * rendering/RenderRuby.cpp:
+        (WebCore::createAnonymousRubyInlineBlock):
+        * rendering/RenderRubyRun.cpp:
+        (WebCore::RenderRubyRun::createRubyBase):
+        (WebCore::RenderRubyRun::staticCreateRubyRun):
+        * rendering/RenderTable.cpp:
+        (WebCore::RenderTable::createAnonymousWithParentRenderer):
+        * rendering/RenderTableCell.cpp:
+        (WebCore::RenderTableCell::createAnonymousWithParentRenderer):
+        * rendering/RenderTableRow.cpp:
+        (WebCore::RenderTableRow::createAnonymousWithParentRenderer):
+        * rendering/RenderTableSection.cpp:
+        (WebCore::RenderTableSection::createAnonymousWithParentRenderer):
+        * rendering/mathml/RenderMathMLBlock.cpp:
+        (WebCore::RenderMathMLBlock::createAlmostAnonymousBlock):
+        * rendering/mathml/RenderMathMLRow.cpp:
+        (WebCore::RenderMathMLRow::createAnonymousWithParentRenderer):
+        * rendering/mathml/RenderMathMLSubSup.cpp:
+        (WebCore::RenderMathMLSubSup::addChild):
+        * rendering/style/RenderStyle.cpp:
+        (WebCore::RenderStyle::createAnonymousStyleWithDisplay):
+        * rendering/style/RenderStyle.h:
+
 2012-05-16  Abhishek Arya  <infe...@chromium.org>
 
         Missing RenderApplet cast check in HTMLAppletElement::renderWidgetForJSBindings.

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderBlock.cpp (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderBlock.cpp	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderBlock.cpp	2012-07-06 20:02:12 UTC (rev 121999)
@@ -1056,7 +1056,7 @@
             // to clear out inherited column properties by just making a new style, and to also clear the
             // column span flag if it is set.
             ASSERT(!inlineChildrenBlock->continuation());
-            RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(style());
+            RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(style(), BLOCK);
             children()->removeChildNode(this, inlineChildrenBlock, inlineChildrenBlock->hasLayer());
             inlineChildrenBlock->setStyle(newStyle);
             
@@ -7095,28 +7095,27 @@
 
 RenderBlock* RenderBlock::createAnonymousWithParentRendererAndDisplay(const RenderObject* parent, EDisplay display)
 {
-    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(parent->style());
-
     // FIXME: Do we need to cover the new flex box here ?
     // FIXME: Do we need to convert all our inline displays to block-type in the anonymous logic ?
+    EDisplay newDisplay;
     RenderBlock* newBox = 0;
     if (display == BOX || display == INLINE_BOX) {
-        newStyle->setDisplay(BOX);
         newBox = new (parent->renderArena()) RenderDeprecatedFlexibleBox(parent->document() /* anonymous box */);
+        newDisplay = BOX;
     } else {
-        newStyle->setDisplay(BLOCK);
         newBox = new (parent->renderArena()) RenderBlock(parent->document() /* anonymous box */);
+        newDisplay = BLOCK;
     }
 
+    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), newDisplay);
     newBox->setStyle(newStyle.release());
     return newBox;
 }
 
 RenderBlock* RenderBlock::createAnonymousColumnsWithParentRenderer(const RenderObject* parent)
 {
-    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(parent->style());
+    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), BLOCK);
     newStyle->inheritColumnPropertiesFrom(parent->style());
-    newStyle->setDisplay(BLOCK);
 
     RenderBlock* newBox = new (parent->renderArena()) RenderBlock(parent->document() /* anonymous box */);
     newBox->setStyle(newStyle.release());
@@ -7125,9 +7124,8 @@
 
 RenderBlock* RenderBlock::createAnonymousColumnSpanWithParentRenderer(const RenderObject* parent)
 {
-    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(parent->style());
+    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), BLOCK);
     newStyle->setColumnSpan(ColumnSpanAll);
-    newStyle->setDisplay(BLOCK);
 
     RenderBlock* newBox = new (parent->renderArena()) RenderBlock(parent->document() /* anonymous box */);
     newBox->setStyle(newStyle.release());

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderInline.cpp (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderInline.cpp	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderInline.cpp	2012-07-06 20:02:12 UTC (rev 121999)
@@ -146,9 +146,8 @@
         RenderInline* cont = toRenderBlock(block)->inlineElementContinuation();
         if (oldStyle->position() == RelativePosition && hasRelPositionedInlineAncestor(cont))
             continue;
-        RefPtr<RenderStyle> blockStyle = RenderStyle::createAnonymousStyle(block->style());
+        RefPtr<RenderStyle> blockStyle = RenderStyle::createAnonymousStyleWithDisplay(block->style(), BLOCK);
         blockStyle->setPosition(newStyle->position());
-        blockStyle->setDisplay(BLOCK);
         block->setStyle(blockStyle);
     }
 }
@@ -281,8 +280,7 @@
         // inline into continuations.  This involves creating an anonymous block box to hold
         // |newChild|.  We then make that block box a continuation of this inline.  We take all of
         // the children after |beforeChild| and put them in a clone of this object.
-        RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(style());
-        newStyle->setDisplay(BLOCK);
+        RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(style(), BLOCK);
         
         // If inside an inline affected by relative positioning the block needs to be affected by it too.
         // Giving the block a layer like this allows it to collect the x/y offsets from inline parents later.

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderObject.cpp (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderObject.cpp	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderObject.cpp	2012-07-06 20:02:12 UTC (rev 121999)
@@ -1900,7 +1900,7 @@
             continue;
 #endif
 
-        RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(style());
+        RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(style(), child->style()->display());
         if (style()->specifiesColumns()) {
             if (child->style()->specifiesColumns())
                 newStyle->inheritColumnPropertiesFrom(style());
@@ -1913,7 +1913,6 @@
         if (child->isRelPositioned() && toRenderBlock(child)->isAnonymousBlockContinuation())
             newStyle->setPosition(child->style()->position());
 
-        newStyle->setDisplay(child->style()->display());
         child->setStyle(newStyle.release());
     }
 }

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderRuby.cpp (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderRuby.cpp	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderRuby.cpp	2012-07-06 20:02:12 UTC (rev 121999)
@@ -84,9 +84,7 @@
 
 static RenderBlock* createAnonymousRubyInlineBlock(RenderObject* ruby)
 {
-    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(ruby->style());
-    newStyle->setDisplay(INLINE_BLOCK);
-
+    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(ruby->style(), INLINE_BLOCK);
     RenderBlock* newBlock = new (ruby->renderArena()) RenderBlock(ruby->document() /* anonymous box */);
     newBlock->setStyle(newStyle.release());
     return newBlock;

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderRubyRun.cpp (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderRubyRun.cpp	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderRubyRun.cpp	2012-07-06 20:02:12 UTC (rev 121999)
@@ -196,8 +196,7 @@
 RenderRubyBase* RenderRubyRun::createRubyBase() const
 {
     RenderRubyBase* rb = new (renderArena()) RenderRubyBase(document() /* anonymous */);
-    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(style());
-    newStyle->setDisplay(BLOCK);
+    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(style(), BLOCK);
     newStyle->setTextAlign(CENTER); // FIXME: use WEBKIT_CENTER?
     rb->setStyle(newStyle.release());
     return rb;
@@ -207,8 +206,7 @@
 {
     ASSERT(parentRuby && parentRuby->isRuby());
     RenderRubyRun* rr = new (parentRuby->renderArena()) RenderRubyRun(parentRuby->document() /* anonymous */);
-    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(parentRuby->style());
-    newStyle->setDisplay(INLINE_BLOCK);
+    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parentRuby->style(), INLINE_BLOCK);
     rr->setStyle(newStyle.release());
     return rr;
 }

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderTable.cpp (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderTable.cpp	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderTable.cpp	2012-07-06 20:02:12 UTC (rev 121999)
@@ -1259,9 +1259,7 @@
 
 RenderTable* RenderTable::createAnonymousWithParentRenderer(const RenderObject* parent)
 {
-    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(parent->style());
-    newStyle->setDisplay(TABLE);
-
+    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), TABLE);
     RenderTable* newTable = new (parent->renderArena()) RenderTable(parent->document() /* is anonymous */);
     newTable->setStyle(newStyle.release());
     return newTable;

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderTableCell.cpp (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderTableCell.cpp	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderTableCell.cpp	2012-07-06 20:02:12 UTC (rev 121999)
@@ -1099,9 +1099,7 @@
 
 RenderTableCell* RenderTableCell::createAnonymousWithParentRenderer(const RenderObject* parent)
 {
-    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(parent->style());
-    newStyle->setDisplay(TABLE_CELL);
-
+    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), TABLE_CELL);
     RenderTableCell* newCell = new (parent->renderArena()) RenderTableCell(parent->document() /* is anonymous */);
     newCell->setStyle(newStyle.release());
     return newCell;

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderTableRow.cpp (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderTableRow.cpp	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderTableRow.cpp	2012-07-06 20:02:12 UTC (rev 121999)
@@ -246,9 +246,7 @@
 
 RenderTableRow* RenderTableRow::createAnonymousWithParentRenderer(const RenderObject* parent)
 {
-    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(parent->style());
-    newStyle->setDisplay(TABLE_ROW);
-
+    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), TABLE_ROW);
     RenderTableRow* newRow = new (parent->renderArena()) RenderTableRow(parent->document() /* is anonymous */);
     newRow->setStyle(newStyle.release());
     return newRow;

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderTableSection.cpp (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderTableSection.cpp	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/RenderTableSection.cpp	2012-07-06 20:02:12 UTC (rev 121999)
@@ -1372,9 +1372,7 @@
 
 RenderTableSection* RenderTableSection::createAnonymousWithParentRenderer(const RenderObject* parent)
 {
-    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyle(parent->style());
-    newStyle->setDisplay(TABLE_ROW_GROUP);
-
+    RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), TABLE_ROW_GROUP);
     RenderTableSection* newSection = new (parent->renderArena()) RenderTableSection(parent->document() /* is anonymous */);
     newSection->setStyle(newStyle.release());
     return newSection;

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/mathml/RenderMathMLBlock.cpp (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/mathml/RenderMathMLBlock.cpp	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/mathml/RenderMathMLBlock.cpp	2012-07-06 20:02:12 UTC (rev 121999)
@@ -51,10 +51,7 @@
 
 PassRefPtr<RenderStyle> RenderMathMLBlock::createBlockStyle()
 {
-    RefPtr<RenderStyle> newStyle = RenderStyle::create();
-    newStyle->inheritFrom(style());
-    newStyle->setDisplay(BLOCK);
-    return newStyle;
+    return RenderStyle::createAnonymousStyleWithDisplay(style(), BLOCK);
 }
 
 int RenderMathMLBlock::nonOperatorHeight() const

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/mathml/RenderMathMLSubSup.cpp (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/mathml/RenderMathMLSubSup.cpp	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/mathml/RenderMathMLSubSup.cpp	2012-07-06 20:02:12 UTC (rev 121999)
@@ -73,9 +73,7 @@
     if (!childElement->previousElementSibling()) {
         // Position 1 is always the base of the msub/msup/msubsup.
         RenderMathMLBlock* wrapper = new (renderArena()) RenderMathMLBlock(node());
-        RefPtr<RenderStyle> wrapperStyle = RenderStyle::create();
-        wrapperStyle->inheritFrom(style());
-        wrapperStyle->setDisplay(INLINE_BLOCK);
+        RefPtr<RenderStyle> wrapperStyle = RenderStyle::createAnonymousStyleWithDisplay(style(), INLINE_BLOCK);
         wrapperStyle->setVerticalAlign(BASELINE);
         wrapper->setStyle(wrapperStyle.release());
         RenderMathMLBlock::addChild(wrapper, firstChild());
@@ -84,9 +82,7 @@
         // Make sure we have a script block for rendering.
         if (m_kind == SubSup && !m_scripts) {
             m_scripts = new (renderArena()) RenderMathMLBlock(node());
-            RefPtr<RenderStyle> scriptsStyle = RenderStyle::create();
-            scriptsStyle->inheritFrom(style());
-            scriptsStyle->setDisplay(INLINE_BLOCK);
+            RefPtr<RenderStyle> scriptsStyle = RenderStyle::createAnonymousStyleWithDisplay(style(), INLINE_BLOCK);
             scriptsStyle->setVerticalAlign(TOP);
             scriptsStyle->setMarginLeft(Length(gSubsupScriptMargin, Fixed));
             scriptsStyle->setTextAlign(LEFT);
@@ -96,9 +92,7 @@
     } else {
         if (m_kind == SubSup) {
             RenderBlock* script = new (renderArena()) RenderMathMLBlock(node());
-            RefPtr<RenderStyle> scriptStyle = RenderStyle::create();
-            scriptStyle->inheritFrom(m_scripts->style());
-            scriptStyle->setDisplay(BLOCK);
+            RefPtr<RenderStyle> scriptStyle = RenderStyle::createAnonymousStyleWithDisplay(style(), BLOCK);
             script->setStyle(scriptStyle.release());
 
             // The order is always backwards so the first script is the subscript and the superscript 

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/style/RenderStyle.cpp (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/style/RenderStyle.cpp	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/style/RenderStyle.cpp	2012-07-06 20:02:12 UTC (rev 121999)
@@ -86,11 +86,12 @@
     return adoptRef(new RenderStyle(true));
 }
 
-PassRefPtr<RenderStyle> RenderStyle::createAnonymousStyle(const RenderStyle* parentStyle)
+PassRefPtr<RenderStyle> RenderStyle::createAnonymousStyleWithDisplay(const RenderStyle* parentStyle, EDisplay display)
 {
     RefPtr<RenderStyle> newStyle = RenderStyle::create();
     newStyle->inheritFrom(parentStyle);
     newStyle->inheritUnicodeBidiFrom(parentStyle);
+    newStyle->setDisplay(display);
     return newStyle;
 }
 

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/style/RenderStyle.h (121998 => 121999)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/style/RenderStyle.h	2012-07-06 20:01:57 UTC (rev 121998)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/rendering/style/RenderStyle.h	2012-07-06 20:02:12 UTC (rev 121999)
@@ -384,7 +384,7 @@
 public:
     static PassRefPtr<RenderStyle> create();
     static PassRefPtr<RenderStyle> createDefaultStyle();
-    static PassRefPtr<RenderStyle> createAnonymousStyle(const RenderStyle* parentStyle);
+    static PassRefPtr<RenderStyle> createAnonymousStyleWithDisplay(const RenderStyle* parentStyle, EDisplay);
     static PassRefPtr<RenderStyle> clone(const RenderStyle*);
 
     void inheritFrom(const RenderStyle* inheritParent);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to