| 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(
|
|
|