Index: third_party/WebKit/Source/core/layout/LayoutTable.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutTable.cpp b/third_party/WebKit/Source/core/layout/LayoutTable.cpp |
index b5f782ce7e5ea2ea7db8a03b16dbb4fa1a97e6dc..c0bb217186c7c7920a379781fad95237bbd71264 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutTable.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutTable.cpp |
@@ -58,6 +58,7 @@ LayoutTable::LayoutTable(Element* element) |
foot_(nullptr), |
first_body_(nullptr), |
collapsed_borders_valid_(false), |
+ needs_invalidate_collapsed_borders_for_all_cells_(false), |
has_col_elements_(false), |
needs_section_recalc_(false), |
column_logical_width_changed_(false), |
@@ -780,9 +781,32 @@ void LayoutTable::UpdateLayout() { |
void LayoutTable::InvalidateCollapsedBorders() { |
collapsed_borders_.clear(); |
collapsed_borders_valid_ = false; |
+ needs_invalidate_collapsed_borders_for_all_cells_ = true; |
SetMayNeedPaintInvalidation(); |
} |
+void LayoutTable::InvalidateCollapsedBordersForAllCellsIfNeeded() { |
+ DCHECK(CollapseBorders()); |
wkorman
2017/04/27 20:11:15
I was briefly confused with this vs. CollapsedBord
Xianzhu
2017/04/28 20:31:44
Created https://codereview.chromium.org/2850633003
|
+ |
+ if (!needs_invalidate_collapsed_borders_for_all_cells_) |
+ return; |
+ needs_invalidate_collapsed_borders_for_all_cells_ = false; |
+ |
+ for (LayoutObject* section = FirstChild(); section; |
+ section = section->NextSibling()) { |
+ if (!section->IsTableSection()) |
+ continue; |
+ for (LayoutTableRow* row = ToLayoutTableSection(section)->FirstRow(); row; |
+ row = row->NextRow()) { |
+ for (LayoutTableCell* cell = row->FirstCell(); cell; |
+ cell = cell->NextCell()) { |
+ DCHECK_EQ(cell->Table(), this); |
+ cell->InvalidateCollapsedBorderValues(); |
+ } |
+ } |
+ } |
+} |
+ |
// Collect all the unique border values that we want to paint in a sorted list. |
// During the collection, each cell saves its recalculated borders into the |
// cache of its containing section, and invalidates itself if any border |