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 1380b1907c857889972587d5570bdbe86d23067f..d0c01db5a52703135f5308f9244ad09ad433bafb 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutTableCell.h |
+++ b/third_party/WebKit/Source/core/layout/LayoutTableCell.h |
@@ -109,13 +109,19 @@ class CORE_EXPORT LayoutTableCell final : public LayoutBlockFlow { |
absolute_column_index_ = column; |
} |
- bool HasSetAbsoluteColumnIndex() const { |
- return absolute_column_index_ != kUnsetColumnIndex; |
+ // See LayoutTable.h for definition of absolute and effective columns. |
+ // In most cases we should use EffectiveColumnIndex() instead of |
+ // AbsolutColumnIndex(). |
+ unsigned AbsoluteColumnIndex() const { return absolute_column_index_; } |
+ unsigned EffectiveColumnIndex() const { |
+ DCHECK_NE(absolute_column_index_, kUnsetColumnIndex); |
+ return Table()->AbsoluteColumnToEffectiveColumn(absolute_column_index_); |
} |
- |
- unsigned AbsoluteColumnIndex() const { |
- DCHECK(HasSetAbsoluteColumnIndex()); |
- return absolute_column_index_; |
+ // Returns effective column index, of the cell after this cell, or of the |
+ // imaginary cell after this cell if there is no cell after this cell. |
+ unsigned EffectiveColumnIndexOfCellAfter() const { |
+ return Table()->AbsoluteColumnToEffectiveColumn(absolute_column_index_ + |
+ ColSpan()); |
} |
LayoutTableRow* Row() const { return ToLayoutTableRow(Parent()); } |
@@ -125,6 +131,9 @@ class CORE_EXPORT LayoutTableCell final : public LayoutBlockFlow { |
LayoutTable* Table() const { |
return ToLayoutTable(Parent()->Parent()->Parent()); |
} |
+ LayoutTable::ColAndColGroup GetColAndColGroup() const { |
+ return Table()->ColAndColGroupAtEffectiveColumn(EffectiveColumnIndex()); |
+ } |
LayoutTableCell* PreviousCell() const; |
LayoutTableCell* NextCell() const; |
@@ -140,9 +149,7 @@ class CORE_EXPORT LayoutTableCell final : public LayoutBlockFlow { |
if (!style_width.IsAuto()) |
return style_width; |
if (LayoutTableCol* first_column = |
- Table() |
- ->ColElementAtAbsoluteColumn(AbsoluteColumnIndex()) |
- .InnermostColOrColGroup()) |
+ GetColAndColGroup().InnermostColOrColGroup()) |
return LogicalWidthFromColumns(first_column, style_width); |
return style_width; |
} |
@@ -368,6 +375,7 @@ class CORE_EXPORT LayoutTableCell final : public LayoutBlockFlow { |
const PaintInvalidatorContext&) const override; |
private: |
+ friend class LayoutTableCellDeathTest; |
friend class LayoutTableCellTest; |
bool IsOfType(LayoutObjectType type) const override { |