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 6ce3209bf396e44e4c80f27cb087251db698acdd..0b0fd6a81fb4cc998d1074b3a07aebee7af6a3a1 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutTableCell.h |
+++ b/third_party/WebKit/Source/core/layout/LayoutTableCell.h |
@@ -185,8 +185,9 @@ class CORE_EXPORT LayoutTableCell final : public LayoutBlockFlow { |
int borderBefore() const override; |
int borderAfter() const override; |
- void collectBorderValues(LayoutTable::CollapsedBorderValues&); |
- static void sortBorderValues(LayoutTable::CollapsedBorderValues&); |
+ // Returns true if any collapsed borders related to this cell changed. |
+ bool collectBorderValues(Vector<CollapsedBorderValue>&); |
+ static void sortBorderValues(Vector<CollapsedBorderValue>&); |
void layout() override; |
@@ -286,38 +287,14 @@ class CORE_EXPORT LayoutTableCell final : public LayoutBlockFlow { |
const char* name() const override { return "LayoutTableCell"; } |
bool backgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const override; |
- void invalidateDisplayItemClients(PaintInvalidationReason) const override; |
- |
- // 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; |
+ |
+ struct CollapsedBorderValues { |
+ CollapsedBorderValue startBorder; |
+ CollapsedBorderValue endBorder; |
+ CollapsedBorderValue beforeBorder; |
+ CollapsedBorderValue afterBorder; |
}; |
- bool usesTableAsAdditionalDisplayItemClient() const; |
const CollapsedBorderValues* collapsedBorderValues() const { |
return m_collapsedBorderValues.get(); |
} |
@@ -329,6 +306,8 @@ class CORE_EXPORT LayoutTableCell final : public LayoutBlockFlow { |
// A table cell's location is relative to its containing section. |
LayoutBox* locationContainer() const override { return section(); } |
+ LayoutRect localVisualRect() const override; |
+ |
protected: |
void styleDidChange(StyleDifference, const ComputedStyle* oldStyle) override; |
void computePreferredLogicalWidths() override; |
@@ -352,7 +331,6 @@ class CORE_EXPORT LayoutTableCell final : public LayoutBlockFlow { |
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; |
@@ -390,8 +368,8 @@ class CORE_EXPORT LayoutTableCell final : public LayoutBlockFlow { |
// See also https://code.google.com/p/chromium/issues/detail?id=128227 for |
// some history. |
// |
- // Those functions are called when the cache (m_collapsedBorders) is |
- // invalidated on LayoutTable. |
+ // Those functions are called before paint invalidation if the collapsed |
+ // borders cache is invalidated on LayoutTable. |
CollapsedBorderValue computeCollapsedStartBorder( |
IncludeBorderColorOrNot = IncludeBorderColor) const; |
CollapsedBorderValue computeCollapsedEndBorder( |