https://bugs.webkit.org/show_bug.cgi?id=87040
Reviewed by Eric Seidel.
Remove unnecessary writing mode logic in RenderBlock and use the
implementation in RenderBox and RenderInline instead.
No new tests, no change in functionality.
* rendering/RenderBlock.cpp:
(WebCore):
* rendering/RenderBlock.h:
(WebCore::RenderBlock::marginBeforeForChild):
(WebCore::RenderBlock::marginAfterForChild):
(WebCore::RenderBlock::marginStartForChild):
(WebCore::RenderBlock::marginEndForChild):
(WebCore::RenderBlock::setMarginStartForChild):
(WebCore::RenderBlock::setMarginEndForChild):
(WebCore::RenderBlock::setMarginBeforeForChild):
(WebCore::RenderBlock::setMarginAfterForChild):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::marginBefore):
(WebCore::RenderBox::marginAfter):
(WebCore::RenderBox::marginStart):
(WebCore::RenderBox::marginEnd):
(WebCore::RenderBox::setMarginStart):
(WebCore::RenderBox::setMarginEnd):
(WebCore::RenderBox::setMarginBefore):
(WebCore::RenderBox::setMarginAfter):
* rendering/RenderBox.h:
(RenderBox):
* rendering/RenderBoxModelObject.h:
(RenderBoxModelObject):
* rendering/RenderInline.cpp:
(WebCore::RenderInline::marginStart):
(WebCore::RenderInline::marginEnd):
(WebCore::RenderInline::marginBefore):
(WebCore::RenderInline::marginAfter):
* rendering/RenderInline.h:
(RenderInline):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@117946
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2012-05-22 Emil A Eklund <eae@chromium.org>
+
+ Change RenderBlock to user RenderBox/RenderInline writing mode logic
+ https://bugs.webkit.org/show_bug.cgi?id=87040
+
+ Reviewed by Eric Seidel.
+
+ Remove unnecessary writing mode logic in RenderBlock and use the
+ implementation in RenderBox and RenderInline instead.
+
+ No new tests, no change in functionality.
+
+ * rendering/RenderBlock.cpp:
+ (WebCore):
+ * rendering/RenderBlock.h:
+ (WebCore::RenderBlock::marginBeforeForChild):
+ (WebCore::RenderBlock::marginAfterForChild):
+ (WebCore::RenderBlock::marginStartForChild):
+ (WebCore::RenderBlock::marginEndForChild):
+ (WebCore::RenderBlock::setMarginStartForChild):
+ (WebCore::RenderBlock::setMarginEndForChild):
+ (WebCore::RenderBlock::setMarginBeforeForChild):
+ (WebCore::RenderBlock::setMarginAfterForChild):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::marginBefore):
+ (WebCore::RenderBox::marginAfter):
+ (WebCore::RenderBox::marginStart):
+ (WebCore::RenderBox::marginEnd):
+ (WebCore::RenderBox::setMarginStart):
+ (WebCore::RenderBox::setMarginEnd):
+ (WebCore::RenderBox::setMarginBefore):
+ (WebCore::RenderBox::setMarginAfter):
+ * rendering/RenderBox.h:
+ (RenderBox):
+ * rendering/RenderBoxModelObject.h:
+ (RenderBoxModelObject):
+ * rendering/RenderInline.cpp:
+ (WebCore::RenderInline::marginStart):
+ (WebCore::RenderInline::marginEnd):
+ (WebCore::RenderInline::marginBefore):
+ (WebCore::RenderInline::marginAfter):
+ * rendering/RenderInline.h:
+ (RenderInline):
+
2012-05-22 Li Yin <li.yin@intel.com>
[WebSocket] WebSocket object should fire a simple event named error when it is required to fail the websocket connection.
return marginAfterForChild(child);
}
-LayoutUnit RenderBlock::marginBeforeForChild(const RenderBoxModelObject* child) const
-{
- switch (style()->writingMode()) {
- case TopToBottomWritingMode:
- return child->marginTop();
- case BottomToTopWritingMode:
- return child->marginBottom();
- case LeftToRightWritingMode:
- return child->marginLeft();
- case RightToLeftWritingMode:
- return child->marginRight();
- }
- ASSERT_NOT_REACHED();
- return child->marginTop();
-}
-
-LayoutUnit RenderBlock::marginAfterForChild(const RenderBoxModelObject* child) const
-{
- switch (style()->writingMode()) {
- case TopToBottomWritingMode:
- return child->marginBottom();
- case BottomToTopWritingMode:
- return child->marginTop();
- case LeftToRightWritingMode:
- return child->marginRight();
- case RightToLeftWritingMode:
- return child->marginLeft();
- }
- ASSERT_NOT_REACHED();
- return child->marginBottom();
-}
-
-LayoutUnit RenderBlock::marginStartForChild(const RenderBoxModelObject* child) const
-{
- if (isHorizontalWritingMode())
- return style()->isLeftToRightDirection() ? child->marginLeft() : child->marginRight();
- return style()->isLeftToRightDirection() ? child->marginTop() : child->marginBottom();
-}
-
-LayoutUnit RenderBlock::marginEndForChild(const RenderBoxModelObject* child) const
-{
- if (isHorizontalWritingMode())
- return style()->isLeftToRightDirection() ? child->marginRight() : child->marginLeft();
- return style()->isLeftToRightDirection() ? child->marginBottom() : child->marginTop();
-}
-
-void RenderBlock::setMarginStartForChild(RenderBox* child, LayoutUnit margin)
-{
- if (isHorizontalWritingMode()) {
- if (style()->isLeftToRightDirection())
- child->setMarginLeft(margin);
- else
- child->setMarginRight(margin);
- } else {
- if (style()->isLeftToRightDirection())
- child->setMarginTop(margin);
- else
- child->setMarginBottom(margin);
- }
-}
-
-void RenderBlock::setMarginEndForChild(RenderBox* child, LayoutUnit margin)
-{
- if (isHorizontalWritingMode()) {
- if (style()->isLeftToRightDirection())
- child->setMarginRight(margin);
- else
- child->setMarginLeft(margin);
- } else {
- if (style()->isLeftToRightDirection())
- child->setMarginBottom(margin);
- else
- child->setMarginTop(margin);
- }
-}
-
-void RenderBlock::setMarginBeforeForChild(RenderBox* child, LayoutUnit margin)
-{
- switch (style()->writingMode()) {
- case TopToBottomWritingMode:
- child->setMarginTop(margin);
- break;
- case BottomToTopWritingMode:
- child->setMarginBottom(margin);
- break;
- case LeftToRightWritingMode:
- child->setMarginLeft(margin);
- break;
- case RightToLeftWritingMode:
- child->setMarginRight(margin);
- break;
- }
-}
-
-void RenderBlock::setMarginAfterForChild(RenderBox* child, LayoutUnit margin)
-{
- switch (style()->writingMode()) {
- case TopToBottomWritingMode:
- child->setMarginBottom(margin);
- break;
- case BottomToTopWritingMode:
- child->setMarginTop(margin);
- break;
- case LeftToRightWritingMode:
- child->setMarginRight(margin);
- break;
- case RightToLeftWritingMode:
- child->setMarginLeft(margin);
- break;
- }
-}
-
RenderBlock::MarginValues RenderBlock::marginValuesForChild(RenderBox* child)
{
LayoutUnit childBeforePositive = 0;
LayoutUnit logicalTopForChild(const RenderBox* child) { return isHorizontalWritingMode() ? child->y() : child->x(); }
void setLogicalLeftForChild(RenderBox* child, LayoutUnit logicalLeft, ApplyLayoutDeltaMode = DoNotApplyLayoutDelta);
void setLogicalTopForChild(RenderBox* child, LayoutUnit logicalTop, ApplyLayoutDeltaMode = DoNotApplyLayoutDelta);
- LayoutUnit marginBeforeForChild(const RenderBoxModelObject* child) const;
- LayoutUnit marginAfterForChild(const RenderBoxModelObject* child) const;
- LayoutUnit marginStartForChild(const RenderBoxModelObject* child) const;
- LayoutUnit marginEndForChild(const RenderBoxModelObject* child) const;
- void setMarginStartForChild(RenderBox* child, LayoutUnit);
- void setMarginEndForChild(RenderBox* child, LayoutUnit);
- void setMarginBeforeForChild(RenderBox* child, LayoutUnit);
- void setMarginAfterForChild(RenderBox* child, LayoutUnit);
+ LayoutUnit marginBeforeForChild(const RenderBoxModelObject* child) const { return child->marginBefore(style()); }
+ LayoutUnit marginAfterForChild(const RenderBoxModelObject* child) const { return child->marginAfter(style()); }
+ LayoutUnit marginStartForChild(const RenderBoxModelObject* child) const { return child->marginStart(style()); }
+ LayoutUnit marginEndForChild(const RenderBoxModelObject* child) const { return child->marginEnd(style()); }
+ void setMarginStartForChild(RenderBox* child, LayoutUnit value) { child->setMarginStart(value, style()); }
+ void setMarginEndForChild(RenderBox* child, LayoutUnit value) { child->setMarginEnd(value, style()); }
+ void setMarginBeforeForChild(RenderBox* child, LayoutUnit value) { child->setMarginBefore(value, style()); }
+ void setMarginAfterForChild(RenderBox* child, LayoutUnit value) { child->setMarginAfter(value, style()); }
LayoutUnit collapsedMarginBeforeForChild(const RenderBox* child) const;
LayoutUnit collapsedMarginAfterForChild(const RenderBox* child) const;
{
}
-LayoutUnit RenderBox::marginBefore() const
+LayoutUnit RenderBox::marginBefore(const RenderStyle* overrideStyle) const
{
- switch (style()->writingMode()) {
+ switch (overrideStyle ? overrideStyle->writingMode() : style()->writingMode()) {
case TopToBottomWritingMode:
return m_marginTop;
case BottomToTopWritingMode:
return m_marginTop;
}
-LayoutUnit RenderBox::marginAfter() const
+LayoutUnit RenderBox::marginAfter(const RenderStyle* overrideStyle) const
{
- switch (style()->writingMode()) {
+ switch (overrideStyle ? overrideStyle->writingMode() : style()->writingMode()) {
case TopToBottomWritingMode:
return m_marginBottom;
case BottomToTopWritingMode:
return m_marginBottom;
}
-LayoutUnit RenderBox::marginStart() const
+LayoutUnit RenderBox::marginStart(const RenderStyle* overrideStyle) const
{
- if (isHorizontalWritingMode())
- return style()->isLeftToRightDirection() ? m_marginLeft : m_marginRight;
- return style()->isLeftToRightDirection() ? m_marginTop : m_marginBottom;
+ const RenderStyle* styleToUse = overrideStyle ? overrideStyle : style();
+ if (styleToUse->isHorizontalWritingMode())
+ return styleToUse->isLeftToRightDirection() ? m_marginLeft : m_marginRight;
+ return styleToUse->isLeftToRightDirection() ? m_marginTop : m_marginBottom;
}
-LayoutUnit RenderBox::marginEnd() const
+LayoutUnit RenderBox::marginEnd(const RenderStyle* overrideStyle) const
{
- if (isHorizontalWritingMode())
- return style()->isLeftToRightDirection() ? m_marginRight : m_marginLeft;
- return style()->isLeftToRightDirection() ? m_marginBottom : m_marginTop;
+ const RenderStyle* styleToUse = overrideStyle ? overrideStyle : style();
+ if (styleToUse->isHorizontalWritingMode())
+ return styleToUse->isLeftToRightDirection() ? m_marginRight : m_marginLeft;
+ return styleToUse->isLeftToRightDirection() ? m_marginBottom : m_marginTop;
}
-void RenderBox::setMarginStart(LayoutUnit margin)
+void RenderBox::setMarginStart(LayoutUnit margin, const RenderStyle* overrideStyle)
{
- if (isHorizontalWritingMode()) {
- if (style()->isLeftToRightDirection())
+ const RenderStyle* styleToUse = overrideStyle ? overrideStyle : style();
+ if (styleToUse->isHorizontalWritingMode()) {
+ if (styleToUse->isLeftToRightDirection())
m_marginLeft = margin;
else
m_marginRight = margin;
} else {
- if (style()->isLeftToRightDirection())
+ if (styleToUse->isLeftToRightDirection())
m_marginTop = margin;
else
m_marginBottom = margin;
}
}
-void RenderBox::setMarginEnd(LayoutUnit margin)
+void RenderBox::setMarginEnd(LayoutUnit margin, const RenderStyle* overrideStyle)
{
- if (isHorizontalWritingMode()) {
- if (style()->isLeftToRightDirection())
+ const RenderStyle* styleToUse = overrideStyle ? overrideStyle : style();
+ if (styleToUse->isHorizontalWritingMode()) {
+ if (styleToUse->isLeftToRightDirection())
m_marginRight = margin;
else
m_marginLeft = margin;
} else {
- if (style()->isLeftToRightDirection())
+ if (styleToUse->isLeftToRightDirection())
m_marginBottom = margin;
else
m_marginTop = margin;
}
}
-void RenderBox::setMarginBefore(LayoutUnit margin)
+void RenderBox::setMarginBefore(LayoutUnit margin, const RenderStyle* overrideStyle)
{
- switch (style()->writingMode()) {
+ switch (overrideStyle ? overrideStyle->writingMode() : style()->writingMode()) {
case TopToBottomWritingMode:
m_marginTop = margin;
break;
}
}
-void RenderBox::setMarginAfter(LayoutUnit margin)
+void RenderBox::setMarginAfter(LayoutUnit margin, const RenderStyle* overrideStyle)
{
- switch (style()->writingMode()) {
+ switch (overrideStyle ? overrideStyle->writingMode() : style()->writingMode()) {
case TopToBottomWritingMode:
m_marginBottom = margin;
break;
void setMarginBottom(LayoutUnit margin) { m_marginBottom = margin; }
void setMarginLeft(LayoutUnit margin) { m_marginLeft = margin; }
void setMarginRight(LayoutUnit margin) { m_marginRight = margin; }
- virtual LayoutUnit marginBefore() const;
- virtual LayoutUnit marginAfter() const;
- virtual LayoutUnit marginStart() const;
- virtual LayoutUnit marginEnd() const;
- void setMarginStart(LayoutUnit);
- void setMarginEnd(LayoutUnit);
- void setMarginBefore(LayoutUnit);
- void setMarginAfter(LayoutUnit);
+ virtual LayoutUnit marginBefore(const RenderStyle* overrideStyle = 0) const;
+ virtual LayoutUnit marginAfter(const RenderStyle* overrideStyle = 0) const;
+ virtual LayoutUnit marginStart(const RenderStyle* overrideStyle = 0) const;
+ virtual LayoutUnit marginEnd(const RenderStyle* overrideStyle = 0) const;
+ void setMarginStart(LayoutUnit, const RenderStyle* overrideStyle = 0);
+ void setMarginEnd(LayoutUnit, const RenderStyle* overrideStyle = 0);
+ void setMarginBefore(LayoutUnit, const RenderStyle* overrideStyle = 0);
+ void setMarginAfter(LayoutUnit, const RenderStyle* overrideStyle = 0);
// The following five functions are used to implement collapsing margins.
// All objects know their maximal positive and negative margins. The
virtual LayoutUnit marginBottom() const = 0;
virtual LayoutUnit marginLeft() const = 0;
virtual LayoutUnit marginRight() const = 0;
- virtual LayoutUnit marginBefore() const = 0;
- virtual LayoutUnit marginAfter() const = 0;
- virtual LayoutUnit marginStart() const = 0;
- virtual LayoutUnit marginEnd() const = 0;
+ virtual LayoutUnit marginBefore(const RenderStyle* otherStyle = 0) const = 0;
+ virtual LayoutUnit marginAfter(const RenderStyle* otherStyle = 0) const = 0;
+ virtual LayoutUnit marginStart(const RenderStyle* otherStyle = 0) const = 0;
+ virtual LayoutUnit marginEnd(const RenderStyle* otherStyle = 0) const = 0;
LayoutUnit marginHeight() const { return marginTop() + marginBottom(); }
LayoutUnit marginWidth() const { return marginLeft() + marginRight(); }
return computeMargin(this, style()->marginBottom());
}
-LayoutUnit RenderInline::marginStart() const
+LayoutUnit RenderInline::marginStart(const RenderStyle* otherStyle) const
{
- return computeMargin(this, style()->marginStart());
+ return computeMargin(this, style()->marginStartUsing(otherStyle ? otherStyle : style()));
}
-LayoutUnit RenderInline::marginEnd() const
+LayoutUnit RenderInline::marginEnd(const RenderStyle* otherStyle) const
{
- return computeMargin(this, style()->marginEnd());
+ return computeMargin(this, style()->marginEndUsing(otherStyle ? otherStyle : style()));
}
-LayoutUnit RenderInline::marginBefore() const
+LayoutUnit RenderInline::marginBefore(const RenderStyle* otherStyle) const
{
- return computeMargin(this, style()->marginBefore());
+ return computeMargin(this, style()->marginBeforeUsing(otherStyle ? otherStyle : style()));
}
-LayoutUnit RenderInline::marginAfter() const
+LayoutUnit RenderInline::marginAfter(const RenderStyle* otherStyle) const
{
- return computeMargin(this, style()->marginAfter());
+ return computeMargin(this, style()->marginAfterUsing(otherStyle ? otherStyle : style()));
}
const char* RenderInline::renderName() const
virtual LayoutUnit marginRight() const;
virtual LayoutUnit marginTop() const;
virtual LayoutUnit marginBottom() const;
- virtual LayoutUnit marginBefore() const;
- virtual LayoutUnit marginAfter() const;
- virtual LayoutUnit marginStart() const;
- virtual LayoutUnit marginEnd() const;
+ virtual LayoutUnit marginBefore(const RenderStyle* otherStyle = 0) const;
+ virtual LayoutUnit marginAfter(const RenderStyle* otherStyle = 0) const;
+ virtual LayoutUnit marginStart(const RenderStyle* otherStyle = 0) const;
+ virtual LayoutUnit marginEnd(const RenderStyle* otherStyle = 0) const;
virtual void absoluteRects(Vector<IntRect>&, const LayoutPoint& accumulatedOffset) const;
virtual void absoluteQuads(Vector<FloatQuad>&, bool* wasFixed) const;