Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(543)

Unified Diff: third_party/WebKit/Source/core/layout/LayoutTableCell.cpp

Issue 2884573002: Replace LayoutTableCell::AbsoluteColumnIndex() with EffectiveColumnIndex()
Patch Set: - Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/layout/LayoutTableCell.cpp
diff --git a/third_party/WebKit/Source/core/layout/LayoutTableCell.cpp b/third_party/WebKit/Source/core/layout/LayoutTableCell.cpp
index 56a40e0dd4045021b7e61e0940053a720889eac1..4c13b8910e741fbae97beb9ef0702ae142e232cf 100644
--- a/third_party/WebKit/Source/core/layout/LayoutTableCell.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutTableCell.cpp
@@ -165,9 +165,7 @@ Length LayoutTableCell::LogicalWidthFromColumns(
Length width_from_style) const {
DCHECK(first_col_for_this_cell);
DCHECK_EQ(first_col_for_this_cell,
- Table()
- ->ColElementAtAbsoluteColumn(AbsoluteColumnIndex())
- .InnermostColOrColGroup());
+ GetColAndColGroup().InnermostColOrColGroup());
LayoutTableCol* table_col = first_col_for_this_cell;
unsigned col_span_count = ColSpan();
@@ -594,13 +592,11 @@ static CollapsedBorderValue ChooseBorder(const CollapsedBorderValue& border1,
}
bool LayoutTableCell::IsInStartColumn() const {
- return !AbsoluteColumnIndex();
+ return !EffectiveColumnIndex();
}
bool LayoutTableCell::IsInEndColumn() const {
- return Table()->AbsoluteColumnToEffectiveColumn(AbsoluteColumnIndex() +
- ColSpan() - 1) ==
- Table()->NumEffectiveColumns() - 1;
+ return EffectiveColumnIndexOfCellAfter() >= Table()->NumEffectiveColumns();
}
bool LayoutTableCell::HasStartBorderAdjoiningTable() const {
@@ -679,29 +675,26 @@ CollapsedBorderValue LayoutTableCell::ComputeCollapsedStartBorder() const {
}
// (5) Our column and column group's start borders.
- LayoutTable::ColAndColGroup col_and_col_group =
- table->ColElementAtAbsoluteColumn(AbsoluteColumnIndex());
- if (col_and_col_group.colgroup &&
- col_and_col_group.adjoins_start_border_of_col_group) {
+ auto start_col = GetColAndColGroup();
+ if (start_col.colgroup && start_col.adjoins_start_border_of_col_group) {
// Only apply the colgroup's border if this cell touches the colgroup edge.
result = ChooseBorder(
- result,
- CollapsedBorderValue(
- col_and_col_group.colgroup->BorderAdjoiningCellStartBorder(this),
- col_and_col_group.colgroup->ResolveColor(start_color_property),
- kBorderPrecedenceColumnGroup));
+ result, CollapsedBorderValue(
+ start_col.colgroup->BorderAdjoiningCellStartBorder(this),
+ start_col.colgroup->ResolveColor(start_color_property),
+ kBorderPrecedenceColumnGroup));
if (!result.Exists())
return result;
}
- if (col_and_col_group.col) {
+ if (start_col.col) {
// Always apply the col's border irrespective of whether this cell touches
// it. This is per HTML5: "For the purposes of the CSS table model, the col
// element is expected to be treated as if it "was present as many times as
// its span attribute specifies".
result = ChooseBorder(
result, CollapsedBorderValue(
- col_and_col_group.col->BorderAdjoiningCellStartBorder(this),
- col_and_col_group.col->ResolveColor(start_color_property),
+ start_col.col->BorderAdjoiningCellStartBorder(this),
+ start_col.col->ResolveColor(start_color_property),
kBorderPrecedenceColumn));
if (!result.Exists())
return result;
@@ -709,15 +702,14 @@ CollapsedBorderValue LayoutTableCell::ComputeCollapsedStartBorder() const {
// (6) The end border of the preceding column.
if (cell_before) {
- LayoutTable::ColAndColGroup col_and_col_group =
- table->ColElementAtAbsoluteColumn(AbsoluteColumnIndex() - 1);
+ auto col_before =
+ table->ColAndColGroupAtEffectiveColumn(EffectiveColumnIndex() - 1);
// Only apply the colgroup's border if this cell touches the colgroup edge.
- if (col_and_col_group.colgroup &&
- col_and_col_group.adjoins_end_border_of_col_group) {
+ if (col_before.colgroup && col_before.adjoins_end_border_of_col_group) {
result = ChooseBorder(
CollapsedBorderValue(
- col_and_col_group.colgroup->BorderAdjoiningCellEndBorder(this),
- col_and_col_group.colgroup->ResolveColor(end_color_property),
+ col_before.colgroup->BorderAdjoiningCellEndBorder(this),
+ col_before.colgroup->ResolveColor(end_color_property),
kBorderPrecedenceColumnGroup),
result);
if (!result.Exists())
@@ -727,12 +719,11 @@ CollapsedBorderValue LayoutTableCell::ComputeCollapsedStartBorder() const {
// it. This is per HTML5: "For the purposes of the CSS table model, the col
// element is expected to be treated as if it "was present as many times as
// its span attribute specifies".
- if (col_and_col_group.col) {
+ if (col_before.col) {
result = ChooseBorder(
- CollapsedBorderValue(
- col_and_col_group.col->BorderAdjoiningCellAfter(this),
- col_and_col_group.col->ResolveColor(end_color_property),
- kBorderPrecedenceColumn),
+ CollapsedBorderValue(col_before.col->BorderAdjoiningCellAfter(this),
+ col_before.col->ResolveColor(end_color_property),
+ kBorderPrecedenceColumn),
result);
if (!result.Exists())
return result;
@@ -809,60 +800,56 @@ CollapsedBorderValue LayoutTableCell::ComputeCollapsedEndBorder() const {
}
// (5) Our column and column group's end borders.
- LayoutTable::ColAndColGroup col_and_col_group =
- table->ColElementAtAbsoluteColumn(AbsoluteColumnIndex() + ColSpan() - 1);
- if (col_and_col_group.colgroup &&
- col_and_col_group.adjoins_end_border_of_col_group) {
+ auto end_col = table->ColAndColGroupAtEffectiveColumn(
+ EffectiveColumnIndexOfCellAfter() - 1);
+ if (end_col.colgroup && end_col.adjoins_end_border_of_col_group) {
// Only apply the colgroup's border if this cell touches the colgroup edge.
result = ChooseBorder(
- result,
- CollapsedBorderValue(
- col_and_col_group.colgroup->BorderAdjoiningCellEndBorder(this),
- col_and_col_group.colgroup->ResolveColor(end_color_property),
- kBorderPrecedenceColumnGroup));
+ result, CollapsedBorderValue(
+ end_col.colgroup->BorderAdjoiningCellEndBorder(this),
+ end_col.colgroup->ResolveColor(end_color_property),
+ kBorderPrecedenceColumnGroup));
if (!result.Exists())
return result;
}
- if (col_and_col_group.col) {
+ if (end_col.col) {
// Always apply the col's border irrespective of whether this cell touches
// it. This is per HTML5: "For the purposes of the CSS table model, the col
// element is expected to be treated as if it "was present as many times as
// its span attribute specifies".
result = ChooseBorder(
- result, CollapsedBorderValue(
- col_and_col_group.col->BorderAdjoiningCellEndBorder(this),
- col_and_col_group.col->ResolveColor(end_color_property),
- kBorderPrecedenceColumn));
+ result,
+ CollapsedBorderValue(end_col.col->BorderAdjoiningCellEndBorder(this),
+ end_col.col->ResolveColor(end_color_property),
+ kBorderPrecedenceColumn));
if (!result.Exists())
return result;
}
// (6) The start border of the next column.
if (!is_end_column) {
- LayoutTable::ColAndColGroup col_and_col_group =
- table->ColElementAtAbsoluteColumn(AbsoluteColumnIndex() + ColSpan());
- if (col_and_col_group.colgroup &&
- col_and_col_group.adjoins_start_border_of_col_group) {
+ auto col_after = table->ColAndColGroupAtEffectiveColumn(
+ EffectiveColumnIndexOfCellAfter());
+ if (col_after.colgroup && col_after.adjoins_start_border_of_col_group) {
// Only apply the colgroup's border if this cell touches the colgroup
// edge.
result = ChooseBorder(
- result,
- CollapsedBorderValue(
- col_and_col_group.colgroup->BorderAdjoiningCellStartBorder(this),
- col_and_col_group.colgroup->ResolveColor(start_color_property),
- kBorderPrecedenceColumnGroup));
+ result, CollapsedBorderValue(
+ col_after.colgroup->BorderAdjoiningCellStartBorder(this),
+ col_after.colgroup->ResolveColor(start_color_property),
+ kBorderPrecedenceColumnGroup));
if (!result.Exists())
return result;
}
- if (col_and_col_group.col) {
+ if (col_after.col) {
// Always apply the col's border irrespective of whether this cell touches
// it. This is per HTML5: "For the purposes of the CSS table model, the
// col element is expected to be treated as if it "was present as many
// times as its span attribute specifies".
result = ChooseBorder(
result, CollapsedBorderValue(
- col_and_col_group.col->BorderAdjoiningCellBefore(this),
- col_and_col_group.col->ResolveColor(start_color_property),
+ col_after.col->BorderAdjoiningCellBefore(this),
+ col_after.col->ResolveColor(start_color_property),
kBorderPrecedenceColumn));
if (!result.Exists())
return result;
@@ -887,7 +874,7 @@ CollapsedBorderValue LayoutTableCell::ComputeCollapsedBeforeBorder() const {
LayoutTableCell* prev_cell = table->CellAbove(this);
// We can use the border shared with |prev_cell| if it is valid.
if (prev_cell && prev_cell->collapsed_border_values_valid_ &&
- prev_cell->AbsoluteColumnIndex() == AbsoluteColumnIndex()) {
+ prev_cell->EffectiveColumnIndex() == EffectiveColumnIndex()) {
return prev_cell->GetCollapsedBorderValues()
? prev_cell->GetCollapsedBorderValues()->AfterBorder()
: CollapsedBorderValue();
@@ -969,9 +956,7 @@ CollapsedBorderValue LayoutTableCell::ComputeCollapsedBeforeBorder() const {
if (!curr_section) {
// (8) Our column and column group's before borders.
- LayoutTableCol* col_elt =
- table->ColElementAtAbsoluteColumn(AbsoluteColumnIndex())
- .InnermostColOrColGroup();
+ LayoutTableCol* col_elt = GetColAndColGroup().InnermostColOrColGroup();
if (col_elt) {
result = ChooseBorder(
result,
@@ -1010,7 +995,7 @@ CollapsedBorderValue LayoutTableCell::ComputeCollapsedAfterBorder() const {
LayoutTableCell* next_cell = table->CellBelow(this);
// We can use the border shared with |next_cell| if it is valid.
if (next_cell && next_cell->collapsed_border_values_valid_ &&
- next_cell->AbsoluteColumnIndex() == AbsoluteColumnIndex()) {
+ next_cell->EffectiveColumnIndex() == EffectiveColumnIndex()) {
return next_cell->GetCollapsedBorderValues()
? next_cell->GetCollapsedBorderValues()->BeforeBorder()
: CollapsedBorderValue();
@@ -1083,9 +1068,7 @@ CollapsedBorderValue LayoutTableCell::ComputeCollapsedAfterBorder() const {
if (!curr_section) {
// (8) Our column and column group's after borders.
- LayoutTableCol* col_elt =
- table->ColElementAtAbsoluteColumn(AbsoluteColumnIndex())
- .InnermostColOrColGroup();
+ LayoutTableCol* col_elt = GetColAndColGroup().InnermostColOrColGroup();
if (col_elt) {
result = ChooseBorder(
result,
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutTableCell.h ('k') | third_party/WebKit/Source/core/layout/LayoutTableCellTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698