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

Unified Diff: third_party/WebKit/Source/core/layout/LayoutTable.h

Issue 2890543002: Improve LayoutTable outer collapsed border calculation (Closed)
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
« no previous file with comments | « third_party/WebKit/Source/core/BUILD.gn ('k') | third_party/WebKit/Source/core/layout/LayoutTable.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 d0c816e1cb311457d7df764ea929287e11ef9617..68e96c846aa2b7f7afe065b77596bcd2149853e9 100644
--- a/third_party/WebKit/Source/core/layout/LayoutTable.h
+++ b/third_party/WebKit/Source/core/layout/LayoutTable.h
@@ -149,8 +149,8 @@ class CORE_EXPORT LayoutTable final : public LayoutBlock {
return Style()->BorderCollapse() == EBorderCollapse::kCollapse;
}
- LayoutUnit BorderStart() const override { return LayoutUnit(border_start_); }
- LayoutUnit BorderEnd() const override { return LayoutUnit(border_end_); }
+ LayoutUnit BorderStart() const override;
+ LayoutUnit BorderEnd() const override;
LayoutUnit BorderBefore() const override;
LayoutUnit BorderAfter() const override;
@@ -182,47 +182,6 @@ class CORE_EXPORT LayoutTable final : public LayoutBlock {
return Style()->IsLeftToRightDirection() ? BorderEnd() : BorderStart();
}
- int OuterBorderBefore() const;
- int OuterBorderAfter() const;
- int OuterBorderStart() const;
- int OuterBorderEnd() const;
-
- int OuterBorderLeft() const {
- if (Style()->IsHorizontalWritingMode())
- return Style()->IsLeftToRightDirection() ? OuterBorderStart()
- : OuterBorderEnd();
- return Style()->IsFlippedBlocksWritingMode() ? OuterBorderAfter()
- : OuterBorderBefore();
- }
-
- int OuterBorderRight() const {
- if (Style()->IsHorizontalWritingMode())
- return Style()->IsLeftToRightDirection() ? OuterBorderEnd()
- : OuterBorderStart();
- return Style()->IsFlippedBlocksWritingMode() ? OuterBorderBefore()
- : OuterBorderAfter();
- }
-
- int OuterBorderTop() const {
- if (Style()->IsHorizontalWritingMode())
- return Style()->IsFlippedBlocksWritingMode() ? OuterBorderAfter()
- : OuterBorderBefore();
- return Style()->IsLeftToRightDirection() ? OuterBorderStart()
- : OuterBorderEnd();
- }
-
- int OuterBorderBottom() const {
- if (Style()->IsHorizontalWritingMode())
- return Style()->IsFlippedBlocksWritingMode() ? OuterBorderBefore()
- : OuterBorderAfter();
- return Style()->IsLeftToRightDirection() ? OuterBorderEnd()
- : OuterBorderStart();
- }
-
- int CalcBorderStart() const;
- int CalcBorderEnd() const;
- void RecalcBordersInRowDirection();
-
void AddChild(LayoutObject* child,
LayoutObject* before_child = nullptr) override;
@@ -274,12 +233,13 @@ class CORE_EXPORT LayoutTable final : public LayoutBlock {
return row_offset_from_repeating_header_;
}
- // This function returns 0 if the table has no section.
+ // These functions return nullptr if the table has no section.
LayoutTableSection* TopSection() const;
LayoutTableSection* BottomSection() const;
- // This function returns 0 if the table has no non-empty sections.
+ // These functions returns null if the table has no non-empty sections.
LayoutTableSection* TopNonEmptySection() const;
+ LayoutTableSection* BottomNonEmptySection() const;
unsigned LastEffectiveColumnIndex() const {
return NumEffectiveColumns() - 1;
@@ -521,6 +481,13 @@ class CORE_EXPORT LayoutTable final : public LayoutBlock {
void AddOverflowFromChildren() override;
void RecalcSections() const;
+
+ void UpdateCollapsedOuterBorders() const;
+ unsigned ComputeCollapsedOuterBorderBefore() const;
+ unsigned ComputeCollapsedOuterBorderAfter() const;
+ unsigned ComputeCollapsedOuterBorderStart() const;
+ unsigned ComputeCollapsedOuterBorderEnd() const;
+
void LayoutCaption(LayoutTableCaption&, SubtreeLayoutScope&);
void LayoutSection(LayoutTableSection&,
SubtreeLayoutScope&,
@@ -588,6 +555,7 @@ class CORE_EXPORT LayoutTable final : public LayoutBlock {
CollapsedBorderValues collapsed_borders_;
bool collapsed_borders_valid_ : 1;
bool needs_invalidate_collapsed_borders_for_all_cells_ : 1;
+ mutable bool collapsed_outer_borders_valid_ : 1;
mutable bool has_col_elements_ : 1;
mutable bool needs_section_recalc_ : 1;
@@ -605,8 +573,11 @@ class CORE_EXPORT LayoutTable final : public LayoutBlock {
short h_spacing_;
short v_spacing_;
- int border_start_;
- int border_end_;
+
+ mutable unsigned collapsed_outer_border_start_;
+ mutable unsigned collapsed_outer_border_end_;
+ mutable unsigned collapsed_outer_border_before_;
+ mutable unsigned collapsed_outer_border_after_;
LayoutUnit block_offset_to_first_repeatable_header_;
LayoutUnit row_offset_from_repeating_header_;
« no previous file with comments | « third_party/WebKit/Source/core/BUILD.gn ('k') | third_party/WebKit/Source/core/layout/LayoutTable.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698