Index: third_party/WebKit/Source/core/layout/LayoutBox.h |
diff --git a/third_party/WebKit/Source/core/layout/LayoutBox.h b/third_party/WebKit/Source/core/layout/LayoutBox.h |
index 31aefb616e45aebfedcc0c7e5271334ffa4c2b1a..f5c0726e7c4f0c32e13f3f6df3e4e253bf356cd7 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutBox.h |
+++ b/third_party/WebKit/Source/core/layout/LayoutBox.h |
@@ -58,8 +58,11 @@ public: |
, m_overrideLogicalContentHeight(-1) |
, m_overrideLogicalContentWidth(-1) |
, m_previousBorderBoxSize(-1, -1) |
+ , m_positionedContainer(nullptr) |
+ , m_percentHeightContainer(nullptr) |
{ |
} |
+ virtual ~LayoutBoxRareData() { } |
esprehn
2016/01/06 19:37:25
we make this non-virtual in ElementRareData/NodeRa
Xianzhu
2016/01/06 20:49:07
Done.
|
// For inline replaced elements, the inline box that owns us. |
InlineBox* m_inlineBoxWrapper; |
@@ -78,6 +81,11 @@ public: |
LayoutUnit m_pageLogicalOffset; |
LayoutUnit m_paginationStrut; |
+ |
+ // Points to the LayoutBlock whose LayoutBlockRareData::m_positionedDescendants contains this LayoutBox. |
+ LayoutBlock* m_positionedContainer; |
+ // Points to the LayoutBlock whose LayoutBlockRareData::m_percentHeightDescendants contains this LayoutBox. |
+ LayoutBlock* m_percentHeightContainer; |
}; |
// LayoutBox implements the full CSS box model. |
@@ -849,6 +857,15 @@ public: |
void clearPreviousPaintInvalidationRects() override; |
+ LayoutBlock* positionedContainer() const { return m_rareData ? m_rareData->m_positionedContainer : nullptr; } |
+ void setPositionedContainer(LayoutBlock*); |
+ void removeFromPositionedContainer(); |
+ |
+ LayoutBlock* percentHeightContainer() const { return m_rareData ? m_rareData->m_percentHeightContainer : nullptr; } |
+ void setPercentHeightContainer(LayoutBlock*); |
+ void removeFromPercentHeightContainer(); |
+ void clearPercentHeightDescendants(); |
+ |
protected: |
void willBeDestroyed() override; |
@@ -887,6 +904,15 @@ protected: |
bool hasNonCompositedScrollbars() const final; |
void excludeScrollbars(LayoutRect&, OverlayScrollbarSizeRelevancy = IgnoreOverlayScrollbarSize) const; |
+ LayoutBoxRareData* rareData() const { return m_rareData.get(); } |
+ LayoutBoxRareData& ensureRareData() |
+ { |
+ if (!m_rareData) |
+ m_rareData = adoptPtr(createRareData()); |
esprehn
2016/01/06 19:37:25
adoptPtr should be at the creation site, not aroun
Xianzhu
2016/01/06 20:49:07
Done.
|
+ return *m_rareData.get(); |
+ } |
+ virtual LayoutBoxRareData* createRareData() { return new LayoutBoxRareData; } |
esprehn
2016/01/06 19:37:25
PassOwnPtr, you should never leak like this.
Xianzhu
2016/01/06 20:49:07
Done.
|
+ |
private: |
bool mustInvalidateBackgroundOrBorderPaintOnHeightChange() const; |
bool mustInvalidateBackgroundOrBorderPaintOnWidthChange() const; |
@@ -937,13 +963,6 @@ private: |
// details about those widths. |
virtual void computePreferredLogicalWidths() { clearPreferredLogicalWidthsDirty(); } |
- LayoutBoxRareData& ensureRareData() |
- { |
- if (!m_rareData) |
- m_rareData = adoptPtr(new LayoutBoxRareData()); |
- return *m_rareData.get(); |
- } |
- |
bool needToSavePreviousBoxSizes(); |
void savePreviousBoxSizesIfNeeded(); |
LayoutSize computePreviousBorderBoxSize(const LayoutSize& previousBoundsSize) const; |