Title: [160906] trunk/Source/WebCore
- Revision
- 160906
- Author
- akl...@apple.com
- Date
- 2013-12-20 05:47:42 -0800 (Fri, 20 Dec 2013)
Log Message
Devirtualize RenderElement::setStyle().
<https://webkit.org/b/126065>
setStyle() was only virtual in order to let RenderSVGBlock override
the display type in some cases. Devirtualized it and moved the fixup
logic to StyleResolver::adjustRenderStyle().
This hack had an evil twin in RenderElement::initializeStyle() that
also goes away. FIXME--!
Based on a Blink change by Elliott Sprehn.
Reviewed by Antti Koivisto.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (160905 => 160906)
--- trunk/Source/WebCore/ChangeLog 2013-12-20 13:44:45 UTC (rev 160905)
+++ trunk/Source/WebCore/ChangeLog 2013-12-20 13:47:42 UTC (rev 160906)
@@ -1,3 +1,19 @@
+2013-12-20 Andreas Kling <akl...@apple.com>
+
+ Devirtualize RenderElement::setStyle().
+ <https://webkit.org/b/126065>
+
+ setStyle() was only virtual in order to let RenderSVGBlock override
+ the display type in some cases. Devirtualized it and moved the fixup
+ logic to StyleResolver::adjustRenderStyle().
+
+ This hack had an evil twin in RenderElement::initializeStyle() that
+ also goes away. FIXME--!
+
+ Based on a Blink change by Elliott Sprehn.
+
+ Reviewed by Antti Koivisto.
+
2013-12-20 Radu Stavila <stav...@adobe.com>
[CSS Regions] When changing flow-from/flow-into on :hover, elements overflowing the region are not correctly repainted
Modified: trunk/Source/WebCore/css/StyleResolver.cpp (160905 => 160906)
--- trunk/Source/WebCore/css/StyleResolver.cpp 2013-12-20 13:44:45 UTC (rev 160905)
+++ trunk/Source/WebCore/css/StyleResolver.cpp 2013-12-20 13:47:42 UTC (rev 160906)
@@ -1430,6 +1430,10 @@
// not be scaled again.
if (e->hasTagName(SVGNames::foreignObjectTag))
style.setEffectiveZoom(RenderStyle::initialZoom());
+
+ // SVG text layout code expects us to be a block-level style element.
+ if ((e->hasTagName(SVGNames::foreignObjectTag) || e->hasTagName(SVGNames::textTag)) && style.isDisplayInlineType())
+ style.setDisplay(BLOCK);
}
#endif
}
Modified: trunk/Source/WebCore/rendering/RenderElement.cpp (160905 => 160906)
--- trunk/Source/WebCore/rendering/RenderElement.cpp 2013-12-20 13:44:45 UTC (rev 160905)
+++ trunk/Source/WebCore/rendering/RenderElement.cpp 2013-12-20 13:47:42 UTC (rev 160906)
@@ -354,14 +354,6 @@
void RenderElement::initializeStyle()
{
-#if ENABLE(SVG)
- // FIXME: This logic should be in a less ridiculous place. (This is mirrored from RenderSVGBlock::setStyle().)
- if (isRenderSVGBlock() && m_style->isDisplayInlineType()) {
- // SVG text layout code expects us to be a block-level style element.
- m_style->setDisplay(BLOCK);
- }
-#endif
-
styleWillChange(StyleDifferenceEqual, style());
m_hasInitializedStyle = true;
Modified: trunk/Source/WebCore/rendering/RenderElement.h (160905 => 160906)
--- trunk/Source/WebCore/rendering/RenderElement.h 2013-12-20 13:44:45 UTC (rev 160905)
+++ trunk/Source/WebCore/rendering/RenderElement.h 2013-12-20 13:47:42 UTC (rev 160906)
@@ -40,7 +40,7 @@
void initializeStyle();
- virtual void setStyle(PassRef<RenderStyle>);
+ void setStyle(PassRef<RenderStyle>);
// Called to update a style that is allowed to trigger animations.
void setAnimatableStyle(PassRef<RenderStyle>);
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGBlock.cpp (160905 => 160906)
--- trunk/Source/WebCore/rendering/svg/RenderSVGBlock.cpp 2013-12-20 13:44:45 UTC (rev 160905)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGBlock.cpp 2013-12-20 13:47:42 UTC (rev 160906)
@@ -46,23 +46,6 @@
return borderRect;
}
-void RenderSVGBlock::setStyle(PassRef<RenderStyle> style)
-{
- if (!style.get().isDisplayInlineType()) {
- RenderBlockFlow::setStyle(std::move(style));
- return;
- }
-
- Ref<RenderStyle> styleToInheritFrom(std::move(style));
-
- // SVG text layout code expects us to be a block-level style element.
- auto newStyle = RenderStyle::create();
- newStyle.get().inheritFrom(&styleToInheritFrom.get());
- newStyle.get().setDisplay(BLOCK);
-
- RenderBlockFlow::setStyle(std::move(newStyle));
-}
-
void RenderSVGBlock::updateFromStyle()
{
RenderBlockFlow::updateFromStyle();
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGBlock.h (160905 => 160906)
--- trunk/Source/WebCore/rendering/svg/RenderSVGBlock.h 2013-12-20 13:44:45 UTC (rev 160905)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGBlock.h 2013-12-20 13:47:42 UTC (rev 160906)
@@ -42,7 +42,6 @@
private:
void element() const WTF_DELETED_FUNCTION;
- virtual void setStyle(PassRef<RenderStyle>) OVERRIDE FINAL;
virtual void updateFromStyle() OVERRIDE FINAL;
virtual bool isRenderSVGBlock() const OVERRIDE FINAL { return true; };
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes