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()), |
+ 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()); |
ikilpatrick
2016/11/23 20:05:24
you'll want to do this when you construct the cons
Gleb Lanbin
2016/11/28 23:55:00
Done.
|
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 20:05:24
so you'll need to store an additional field parent
Gleb Lanbin
2016/11/28 23:55:00
Done.
|
- 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 |