Chromium Code Reviews| Index: third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc |
| diff --git a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc |
| index e3f0f37b7e5266688df3a38823c006c19f4e1bb7..b3618b5ef1bdf14964fdf013a933ae25fda23d1f 100644 |
| --- a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc |
| +++ b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc |
| @@ -6,6 +6,22 @@ |
| namespace blink { |
| +NGConstraintSpaceBuilder::NGConstraintSpaceBuilder( |
| + const NGConstraintSpace* parent_space) |
| + : available_size_(parent_space->AvailableSize()), |
| + percentage_resolution_size_(parent_space->PercentageResolutionSize()), |
| + writing_mode_(parent_space->WritingMode()), |
|
ikilpatrick
2016/11/23 17:40:38
Only set the writing_mode_ and direction_ here?
I
Gleb Lanbin
2016/11/23 18:59:50
Done.
|
| + is_fixed_size_inline_(parent_space->IsFixedSizeInline()), |
| + is_fixed_size_block_(parent_space->IsFixedSizeBlock()), |
| + is_inline_direction_triggers_scrollbar_( |
| + parent_space->IsInlineDirectionTriggersScrollbar()), |
| + is_block_direction_triggers_scrollbar_( |
| + parent_space->IsBlockDirectionTriggersScrollbar()), |
| + fragmentation_type_(NGFragmentationType::FragmentNone), |
| + is_new_fc_(parent_space->IsNewFormattingContext()), |
| + text_direction_(parent_space->Direction()), |
| + exclusions_(parent_space->Exclusions()) {} |
| + |
| NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode) |
| : writing_mode_(writing_mode), |
| is_fixed_size_inline_(false), |
| @@ -13,7 +29,9 @@ NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode) |
| is_inline_direction_triggers_scrollbar_(false), |
| is_block_direction_triggers_scrollbar_(false), |
| fragmentation_type_(NGFragmentationType::FragmentNone), |
| - is_new_fc_(false) {} |
| + is_new_fc_(false), |
| + text_direction_(TextDirection::LTR), |
| + exclusions_(new NGExclusions()) {} |
| NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetAvailableSize( |
| NGLogicalSize available_size) { |
| @@ -27,6 +45,12 @@ NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetPercentageResolutionSize( |
| return *this; |
| } |
| +NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetTextDirection( |
| + TextDirection text_direction) { |
| + text_direction_ = text_direction; |
| + return *this; |
| +} |
| + |
| NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsFixedSizeInline( |
| bool is_fixed_size_inline) { |
| is_fixed_size_inline_ = is_fixed_size_inline; |
| @@ -64,30 +88,38 @@ NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetFragmentationType( |
| NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsNewFormattingContext( |
| bool is_new_fc) { |
| is_new_fc_ = is_new_fc; |
| + |
| + if (is_new_fc_) |
| + exclusions_.reset(new NGExclusions()); |
| return *this; |
| } |
| -NGPhysicalConstraintSpace* NGConstraintSpaceBuilder::ToConstraintSpace() { |
| - NGPhysicalSize available_size = available_size_.ConvertToPhysical( |
| - static_cast<NGWritingMode>(writing_mode_)); |
| - NGPhysicalSize percentage_resolution_size = |
| - percentage_resolution_size_.ConvertToPhysical( |
| - static_cast<NGWritingMode>(writing_mode_)); |
| - |
| +NGConstraintSpace* NGConstraintSpaceBuilder::ToConstraintSpace() { |
| if (writing_mode_ == HorizontalTopBottom) { |
|
ikilpatrick
2016/11/23 17:40:38
So if this is the current layout's writing mode, t
Gleb Lanbin
2016/11/23 18:59:50
I would rather use the builder semantic here, i.e.
|
| - return new NGPhysicalConstraintSpace( |
| - available_size, percentage_resolution_size, is_fixed_size_inline_, |
| - is_fixed_size_block_, is_inline_direction_triggers_scrollbar_, |
| - is_block_direction_triggers_scrollbar_, FragmentNone, |
| - static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_); |
| - } else { |
| - return new NGPhysicalConstraintSpace( |
| - available_size, percentage_resolution_size, is_fixed_size_block_, |
| - is_fixed_size_inline_, is_block_direction_triggers_scrollbar_, |
| + return new NGConstraintSpace( |
| + static_cast<NGWritingMode>(writing_mode_), |
| + static_cast<TextDirection>(text_direction_), |
| + {available_size_.inline_size, available_size_.block_size}, |
| + {percentage_resolution_size_.inline_size, |
| + percentage_resolution_size_.block_size}, |
| + is_fixed_size_inline_, is_fixed_size_block_, |
| is_inline_direction_triggers_scrollbar_, |
| - static_cast<NGFragmentationType>(fragmentation_type_), FragmentNone, |
| - is_new_fc_); |
| + is_block_direction_triggers_scrollbar_, |
| + static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_, |
| + exclusions_); |
| } |
| + |
| + return new NGConstraintSpace( |
| + static_cast<NGWritingMode>(writing_mode_), |
| + static_cast<TextDirection>(text_direction_), |
| + {available_size_.block_size, available_size_.inline_size}, |
| + {percentage_resolution_size_.block_size, |
| + percentage_resolution_size_.inline_size}, |
| + is_fixed_size_block_, is_fixed_size_inline_, |
| + is_block_direction_triggers_scrollbar_, |
| + is_inline_direction_triggers_scrollbar_, |
| + static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_, |
| + exclusions_); |
| } |
| } // namespace blink |