[LFC] Add assertions for stale Display::Box geometry
[WebKit-https.git] / Source / WebCore / layout / displaytree / DisplayBox.cpp
index c4e1c1649fcc9f0cc373ec8a3e9bd51b362abfcb..ccdf6483cd12ecd0cc538449f1f52f458e396e68 100644 (file)
 
 #include "config.h"
 #include "DisplayBox.h"
+
+#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
+
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+namespace Display {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(Box);
+
+Box::Box()
+{
+}
+
+Box::~Box()
+{
+}
+
+LayoutRect Box::marginBox() const
+{
+    ASSERT(m_hasValidMargin);
+    auto marginBox = rect();
+    auto topLeftMargin = LayoutSize(m_marginLeft, m_marginTop);
+    marginBox.inflate(topLeftMargin);
+
+    auto bottomRightMargin = LayoutSize(m_marginRight, m_marginBottom);
+    marginBox.expand(bottomRightMargin);
+    return marginBox;
+}
+
+LayoutRect Box::borderBox() const
+{
+    return LayoutRect(LayoutPoint(0, 0), size());
+}
+
+LayoutRect Box::paddingBox() const
+{
+    ASSERT(m_hasValidBorder);
+    auto paddingBox = borderBox();
+    auto topLeftBorder = LayoutSize(m_borderLeft, m_borderTop);
+    paddingBox.inflate(-topLeftBorder);
+
+    auto bottomRightBorder = LayoutSize(m_borderRight, m_borderBottom);
+    paddingBox.expand(-bottomRightBorder);
+    return paddingBox;
+}
+
+LayoutRect Box::contentBox() const
+{
+    ASSERT(m_hasValidPadding);
+    auto contentBox = paddingBox();
+    auto topLeftPadding = LayoutSize(m_paddingLeft, m_paddingTop);
+    contentBox.inflate(-topLeftPadding);
+    
+    auto bottomRightPadding = LayoutSize(m_paddingRight, m_paddingBottom);
+    contentBox.expand(-bottomRightPadding);
+    return contentBox;
+}
+
+}
+}
+
+#endif