Index: third_party/WebKit/Source/core/layout/LayoutTableCell.h |
diff --git a/third_party/WebKit/Source/core/layout/LayoutTableCell.h b/third_party/WebKit/Source/core/layout/LayoutTableCell.h |
index e9a9716262deff97d260a79156ee439b17f7afd4..12f5210b8c87e472bff5a1a03769562b718dde65 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutTableCell.h |
+++ b/third_party/WebKit/Source/core/layout/LayoutTableCell.h |
@@ -185,9 +185,8 @@ |
int borderBefore() const override; |
int borderAfter() const override; |
- // Returns true if any collapsed borders related to this cell changed. |
- bool collectBorderValues(Vector<CollapsedBorderValue>&); |
- static void sortBorderValues(Vector<CollapsedBorderValue>&); |
+ void collectBorderValues(LayoutTable::CollapsedBorderValues&); |
+ static void sortBorderValues(LayoutTable::CollapsedBorderValues&); |
void layout() override; |
@@ -290,22 +289,33 @@ |
bool backgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const override; |
void invalidateDisplayItemClients(PaintInvalidationReason) const override; |
- struct CollapsedBorderValues { |
- CollapsedBorderValue startBorder; |
- CollapsedBorderValue endBorder; |
- CollapsedBorderValue beforeBorder; |
- CollapsedBorderValue afterBorder; |
- |
- bool allBordersAreInvisible() const { |
- return !startBorder.isVisible() && !endBorder.isVisible() && |
- !beforeBorder.isVisible() && !afterBorder.isVisible(); |
- } |
- bool bordersVisuallyEqual(const CollapsedBorderValues& other) const { |
- return startBorder.visuallyEquals(other.startBorder) && |
- endBorder.visuallyEquals(other.endBorder) && |
- beforeBorder.visuallyEquals(other.beforeBorder) && |
- afterBorder.visuallyEquals(other.afterBorder); |
- } |
+ // TODO(wkorman): Consider renaming to more clearly differentiate from |
+ // CollapsedBorderValue. |
+ class CollapsedBorderValues : public DisplayItemClient { |
+ public: |
+ CollapsedBorderValues(const LayoutTable&, |
+ const CollapsedBorderValue& startBorder, |
+ const CollapsedBorderValue& endBorder, |
+ const CollapsedBorderValue& beforeBorder, |
+ const CollapsedBorderValue& afterBorder); |
+ |
+ const CollapsedBorderValue& startBorder() const { return m_startBorder; } |
+ const CollapsedBorderValue& endBorder() const { return m_endBorder; } |
+ const CollapsedBorderValue& beforeBorder() const { return m_beforeBorder; } |
+ const CollapsedBorderValue& afterBorder() const { return m_afterBorder; } |
+ |
+ void setCollapsedBorderValues(const CollapsedBorderValues& other); |
+ |
+ // DisplayItemClient methods. |
+ String debugName() const; |
+ LayoutRect visualRect() const; |
+ |
+ private: |
+ const LayoutTable& m_layoutTable; |
+ CollapsedBorderValue m_startBorder; |
+ CollapsedBorderValue m_endBorder; |
+ CollapsedBorderValue m_beforeBorder; |
+ CollapsedBorderValue m_afterBorder; |
}; |
class RowBackgroundDisplayItemClient : public DisplayItemClient { |
@@ -321,7 +331,6 @@ |
}; |
bool usesCompositedCellDisplayItemClients() const; |
- |
const CollapsedBorderValues* collapsedBorderValues() const { |
return m_collapsedBorderValues.get(); |
} |
@@ -341,8 +350,6 @@ |
void ensureIsReadyForPaintInvalidation() override; |
- LayoutRect localVisualRect() const override; |
- |
protected: |
void styleDidChange(StyleDifference, const ComputedStyle* oldStyle) override; |
void computePreferredLogicalWidths() override; |
@@ -366,6 +373,7 @@ |
void paintMask(const PaintInfo&, const LayoutPoint&) const override; |
LayoutSize offsetFromContainer(const LayoutObject*) const override; |
+ LayoutRect localVisualRect() const override; |
int borderHalfLeft(bool outer) const; |
int borderHalfRight(bool outer) const; |
@@ -403,8 +411,8 @@ |
// See also https://code.google.com/p/chromium/issues/detail?id=128227 for |
// some history. |
// |
- // Those functions are called before paint invalidation if the collapsed |
- // borders cache is invalidated on LayoutTable. |
+ // Those functions are called when the cache (m_collapsedBorders) is |
+ // invalidated on LayoutTable. |
CollapsedBorderValue computeCollapsedStartBorder( |
IncludeBorderColorOrNot = IncludeBorderColor) const; |
CollapsedBorderValue computeCollapsedEndBorder( |