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