< prev index next >
modules/javafx.web/src/main/native/Source/WebCore/rendering/RenderBox.h
Print this page
@@ -59,14 +59,10 @@
bool backgroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect) const final;
// Returns false for the body renderer if its background is propagated to the root.
bool paintsOwnBackground() const;
- // Use this with caution! No type checking is done!
- RenderBox* firstChildBox() const;
- RenderBox* lastChildBox() const;
-
LayoutUnit x() const { return m_frameRect.x(); }
LayoutUnit y() const { return m_frameRect.y(); }
LayoutUnit width() const { return m_frameRect.width(); }
LayoutUnit height() const { return m_frameRect.height(); }
@@ -176,14 +172,16 @@
void addFocusRingRects(Vector<LayoutRect>&, const LayoutPoint& additionalOffset, const RenderLayerModelObject* paintContainer = nullptr) override;
FloatRect repaintRectInLocalCoordinates() const override { return borderBoxRect(); }
FloatRect objectBoundingBox() const override { return borderBoxRect(); }
- // Use this with caution! No type checking is done!
+ // Note these functions are not equivalent of childrenOfType<RenderBox>
+ RenderBox* parentBox() const;
+ RenderBox* firstChildBox() const;
+ RenderBox* lastChildBox() const;
RenderBox* previousSiblingBox() const;
RenderBox* nextSiblingBox() const;
- RenderBox* parentBox() const;
// Visual and layout overflow are in the coordinate space of the box. This means that they aren't purely physical directions.
// For horizontal-tb and vertical-lr they will match physical directions, but for horizontal-bt and vertical-rl, the top/bottom and left/right
// respectively are flipped when compared to their physical counterparts. For example minX is on the left in vertical-lr,
// but it is on the right in vertical-rl.
@@ -738,33 +736,53 @@
private:
// Used to store state between styleWillChange and styleDidChange
static bool s_hadOverflowClip;
};
-inline RenderBox* RenderBox::previousSiblingBox() const
-{
- return downcast<RenderBox>(previousSibling());
-}
-
-inline RenderBox* RenderBox::nextSiblingBox() const
-{
- return downcast<RenderBox>(nextSibling());
-}
-
inline RenderBox* RenderBox::parentBox() const
{
+ if (is<RenderBox>(parent()))
return downcast<RenderBox>(parent());
+
+ ASSERT(!parent());
+ return nullptr;
}
inline RenderBox* RenderBox::firstChildBox() const
{
+ if (is<RenderBox>(firstChild()))
return downcast<RenderBox>(firstChild());
+
+ ASSERT(!firstChild());
+ return nullptr;
}
inline RenderBox* RenderBox::lastChildBox() const
{
+ if (is<RenderBox>(lastChild()))
return downcast<RenderBox>(lastChild());
+
+ ASSERT(!lastChild());
+ return nullptr;
+}
+
+inline RenderBox* RenderBox::previousSiblingBox() const
+{
+ if (is<RenderBox>(previousSibling()))
+ return downcast<RenderBox>(previousSibling());
+
+ ASSERT(!previousSibling());
+ return nullptr;
+}
+
+inline RenderBox* RenderBox::nextSiblingBox() const
+{
+ if (is<RenderBox>(nextSibling()))
+ return downcast<RenderBox>(nextSibling());
+
+ ASSERT(!nextSibling());
+ return nullptr;
}
inline void RenderBox::setInlineBoxWrapper(InlineElementBox* boxWrapper)
{
if (boxWrapper) {
< prev index next >