| 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 0b0fd6a81fb4cc998d1074b3a07aebee7af6a3a1..6ce3209bf396e44e4c80f27cb087251db698acdd 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; | 
|  | 
| @@ -287,14 +286,38 @@ | 
| const char* name() const override { return "LayoutTableCell"; } | 
|  | 
| bool backgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const override; | 
| - | 
| -  struct CollapsedBorderValues { | 
| -    CollapsedBorderValue startBorder; | 
| -    CollapsedBorderValue endBorder; | 
| -    CollapsedBorderValue beforeBorder; | 
| -    CollapsedBorderValue afterBorder; | 
| +  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; | 
| }; | 
|  | 
| +  bool usesTableAsAdditionalDisplayItemClient() const; | 
| const CollapsedBorderValues* collapsedBorderValues() const { | 
| return m_collapsedBorderValues.get(); | 
| } | 
| @@ -305,8 +328,6 @@ | 
|  | 
| // 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; | 
| @@ -331,6 +352,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; | 
| @@ -368,8 +390,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( | 
|  |