| 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 d9e7a613e30d3f9331e6a649deca4c6f8bd775b1..9e74abfee0f0492705e7a97f02fbbe8f38beea9d 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutTableCell.h
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutTableCell.h
|
| @@ -35,10 +35,10 @@
|
|
|
| namespace blink {
|
|
|
| -static const unsigned kUnsetColumnIndex = 0x1FFFFFFF;
|
| -static const unsigned kMaxColumnIndex = 0x1FFFFFFE; // 536,870,910
|
| -
|
| -enum IncludeBorderColorOrNot { kDoNotIncludeBorderColor, kIncludeBorderColor };
|
| +#define BITS_OF_ABSOLUTE_COLUMN_INDEX 27
|
| +static const unsigned kUnsetColumnIndex =
|
| + (1u << BITS_OF_ABSOLUTE_COLUMN_INDEX) - 1;
|
| +static const unsigned kMaxColumnIndex = kUnsetColumnIndex - 1;
|
|
|
| class SubtreeLayoutScope;
|
|
|
| @@ -327,8 +327,12 @@ class CORE_EXPORT LayoutTableCell final : public LayoutBlockFlow {
|
|
|
| bool UsesCompositedCellDisplayItemClients() const;
|
| const CollapsedBorderValues* GetCollapsedBorderValues() const {
|
| + DCHECK(collapsed_border_values_valid_);
|
| return collapsed_border_values_.get();
|
| }
|
| + void InvalidateCollapsedBorderValues() {
|
| + collapsed_border_values_valid_ = false;
|
| + }
|
|
|
| LayoutRect DebugRect() const override;
|
|
|
| @@ -404,16 +408,14 @@ class CORE_EXPORT LayoutTableCell final : public LayoutBlockFlow {
|
| // See also https://code.google.com/p/chromium/issues/detail?id=128227 for
|
| // some history.
|
| //
|
| - // Those functions are called when the cache (m_collapsedBorders) is
|
| - // invalidated on LayoutTable.
|
| - CollapsedBorderValue ComputeCollapsedStartBorder(
|
| - IncludeBorderColorOrNot = kIncludeBorderColor) const;
|
| - CollapsedBorderValue ComputeCollapsedEndBorder(
|
| - IncludeBorderColorOrNot = kIncludeBorderColor) const;
|
| - CollapsedBorderValue ComputeCollapsedBeforeBorder(
|
| - IncludeBorderColorOrNot = kIncludeBorderColor) const;
|
| - CollapsedBorderValue ComputeCollapsedAfterBorder(
|
| - IncludeBorderColorOrNot = kIncludeBorderColor) const;
|
| + // Those functions are called during UpdateCollapsedBorderValues().
|
| + inline CSSPropertyID ResolveBorderProperty(CSSPropertyID) const;
|
| + CollapsedBorderValue ComputeCollapsedStartBorder() const;
|
| + CollapsedBorderValue ComputeCollapsedEndBorder() const;
|
| + CollapsedBorderValue ComputeCollapsedBeforeBorder() const;
|
| + CollapsedBorderValue ComputeCollapsedAfterBorder() const;
|
| +
|
| + void UpdateCollapsedBorderValues() const;
|
|
|
| Length LogicalWidthFromColumns(LayoutTableCol* first_col_for_this_cell,
|
| Length width_from_style) const;
|
| @@ -426,13 +428,23 @@ class CORE_EXPORT LayoutTableCell final : public LayoutBlockFlow {
|
| void NextSibling() const = delete;
|
| void PreviousSibling() const = delete;
|
|
|
| + unsigned absolute_column_index_ : BITS_OF_ABSOLUTE_COLUMN_INDEX;
|
| +
|
| + // When adding or removing bits here, we should also adjust
|
| + // BITS_OF_ABSOLUTE_COLUMN_INDEX to use remaining bits of a 32-bit word.
|
| // Note MSVC will only pack members if they have identical types, hence we use
|
| // unsigned instead of bool here.
|
| - unsigned absolute_column_index_ : 29;
|
| unsigned cell_width_changed_ : 1;
|
| unsigned has_col_span_ : 1;
|
| unsigned has_row_span_ : 1;
|
|
|
| + // This is set when collapsed_border_values_ needs recalculation.
|
| + mutable unsigned collapsed_border_values_valid_ : 1;
|
| + // This is set by UpdateCollapsedBorderValues() if the newly calculated
|
| + // collapsed borders are visually different from the previous values.
|
| + mutable unsigned collapsed_borders_visually_changed_ : 1;
|
| + mutable std::unique_ptr<CollapsedBorderValues> collapsed_border_values_;
|
| +
|
| // The intrinsic padding.
|
| // See class comment for what they are.
|
| //
|
| @@ -440,8 +452,6 @@ class CORE_EXPORT LayoutTableCell final : public LayoutBlockFlow {
|
| // because we don't do fractional arithmetic on tables.
|
| int intrinsic_padding_before_;
|
| int intrinsic_padding_after_;
|
| -
|
| - std::unique_ptr<CollapsedBorderValues> collapsed_border_values_;
|
| };
|
|
|
| DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTableCell, IsTableCell());
|
|
|