Index: third_party/WebKit/Source/core/layout/LayoutTable.h |
diff --git a/third_party/WebKit/Source/core/layout/LayoutTable.h b/third_party/WebKit/Source/core/layout/LayoutTable.h |
index 09ac5911a0a9a7e58e472106b7f2094866f6b5e8..2148c7826fff75c30e0ac0c190561f2046cd6917 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutTable.h |
+++ b/third_party/WebKit/Source/core/layout/LayoutTable.h |
@@ -29,7 +29,9 @@ |
#include "core/CSSPropertyNames.h" |
#include "core/CoreExport.h" |
#include "core/layout/LayoutBlock.h" |
+#include "core/paint/PaintResult.h" |
#include "core/style/CollapsedBorderValue.h" |
+#include "platform/graphics/paint/CullRect.h" |
#include "wtf/Vector.h" |
#include <memory> |
@@ -377,8 +379,7 @@ class CORE_EXPORT LayoutTable final : public LayoutBlock { |
LayoutTableCell* cellBefore(const LayoutTableCell*) const; |
LayoutTableCell* cellAfter(const LayoutTableCell*) const; |
- typedef Vector<CollapsedBorderValue> CollapsedBorderValues; |
- void invalidateCollapsedBorders(); |
+ void invalidateCollapsedBorders(PaintInvalidationReason); |
bool hasSections() const { return m_head || m_foot || m_firstBody; } |
@@ -407,9 +408,23 @@ class CORE_EXPORT LayoutTable final : public LayoutBlock { |
void paintMask(const PaintInfo&, const LayoutPoint&) const final; |
- const CollapsedBorderValues& collapsedBorders() const { |
- ASSERT(m_collapsedBordersValid); |
- return m_collapsedBorders; |
+ struct CollapsedBordersInfo { |
+ explicit CollapsedBordersInfo(const Vector<CollapsedBorderValue>& values) |
+ : values(std::move(values)) {} |
+ |
+ PaintResult lastPaintResult = FullyPainted; |
+ CullRect lastPaintRect; |
+ const Vector<CollapsedBorderValue> values; |
+ }; |
+ |
+ bool hasCollapsedBorders() const { |
+ DCHECK(m_collapsedBordersValid); |
+ DCHECK(!m_collapsedBordersInfo || collapseBorders()); |
+ return !!m_collapsedBordersInfo; |
+ } |
+ CollapsedBordersInfo& getCollapsedBordersInfo() const { |
+ DCHECK(hasCollapsedBorders()); |
+ return *m_collapsedBordersInfo; |
} |
void subtractCaptionRect(LayoutRect&) const; |
@@ -552,7 +567,7 @@ class CORE_EXPORT LayoutTable final : public LayoutBlock { |
// need to compare a cells border against all the adjoining cells, rows, |
// row groups, column, column groups and table. Thus we cache them in this |
// field. |
- CollapsedBorderValues m_collapsedBorders; |
+ std::unique_ptr<CollapsedBordersInfo> m_collapsedBordersInfo; |
bool m_collapsedBordersValid : 1; |
mutable bool m_hasColElements : 1; |