[LFC] The static position for an out-of-flow box should include the previous sibling...
[WebKit-https.git] / Source / WebCore / layout / displaytree / DisplayBox.h
index 52bd9aa..758023c 100644 (file)
@@ -131,6 +131,9 @@ public:
     LayoutUnit marginBottom() const;
     LayoutUnit marginRight() const;
 
+    LayoutUnit nonCollapsedMarginTop() const;
+    LayoutUnit nonCollapsedMarginBottom() const;
+
     LayoutUnit borderTop() const;
     LayoutUnit borderLeft() const;
     LayoutUnit borderBottom() const;
@@ -147,9 +150,8 @@ public:
     LayoutUnit contentBoxWidth() const;
 
     Rect marginBox() const;
-#ifndef NDEBUG
     Rect nonCollapsedMarginBox() const;
-#endif
+
     Rect borderBox() const;
     Rect paddingBox() const;
     Rect contentBox() const;
@@ -189,9 +191,8 @@ private:
 
     void setHorizontalMargin(HorizontalEdges);
     void setVerticalMargin(VerticalEdges);
-#ifndef NDEBUG
-    void setVerticalNonCollapsedMargin(VerticalEdges margin) {  m_nonCollapsedVertivalMargin = margin; }
-#endif
+    void setVerticalNonCollapsedMargin(VerticalEdges);
+
     void setBorder(Edges);
     void setPadding(Edges);
 
@@ -201,6 +202,7 @@ private:
     void invalidatePadding() { m_hasValidPadding = false; }
 
     void setHasValidVerticalMargin() { m_hasValidVerticalMargin = true; }
+    void setHasValidVerticalNonCollapsedMargin() { m_hasValidVerticalNonCollapsedMargin = true; }
     void setHasValidHorizontalMargin() { m_hasValidHorizontalMargin = true; }
 
     void setHasValidBorder() { m_hasValidBorder = true; }
@@ -217,15 +219,15 @@ private:
     LayoutUnit m_contentHeight;
 
     Edges m_margin;
-#ifndef NDEBUG
-    VerticalEdges m_nonCollapsedVertivalMargin;
-#endif
+    VerticalEdges m_verticalNonCollapsedMargin;
+
     Edges m_border;
     Edges m_padding;
 
 #if !ASSERT_DISABLED
     bool m_hasValidHorizontalMargin { false };
     bool m_hasValidVerticalMargin { false };
+    bool m_hasValidVerticalNonCollapsedMargin { false };
     bool m_hasValidBorder { false };
     bool m_hasValidPadding { false };
     bool m_hasValidContentHeight { false };
@@ -466,6 +468,14 @@ inline void Box::setVerticalMargin(VerticalEdges margin)
     m_margin.vertical = margin;
 }
 
+inline void Box::setVerticalNonCollapsedMargin(VerticalEdges margin)
+{
+#if !ASSERT_DISABLED
+    setHasValidVerticalNonCollapsedMargin();
+#endif
+    m_verticalNonCollapsedMargin = margin;
+}
+
 inline void Box::setBorder(Edges border)
 {
 #if !ASSERT_DISABLED
@@ -506,6 +516,18 @@ inline LayoutUnit Box::marginRight() const
     return m_margin.horizontal.right;
 }
 
+inline LayoutUnit Box::nonCollapsedMarginTop() const
+{
+    ASSERT(m_hasValidVerticalNonCollapsedMargin);
+    return m_verticalNonCollapsedMargin.top;
+}
+
+inline LayoutUnit Box::nonCollapsedMarginBottom() const
+{
+    ASSERT(m_hasValidVerticalNonCollapsedMargin);
+    return m_verticalNonCollapsedMargin.bottom;
+}
+
 inline LayoutUnit Box::paddingTop() const
 {
     ASSERT(m_hasValidPadding);