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

Unified Diff: third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc

Issue 2525033002: Deprecate NGPhysicalConstraintSpace (Closed)
Patch Set: update TestExpectations Created 4 years 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/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 f4981db4f26302969948f4a235bd87e0deab7944..921f53f20c734446d53108e179f1d14b750b8850 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,14 +6,32 @@
namespace blink {
+NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(
+ const NGConstraintSpace* parent_space)
+ : available_size_(parent_space->AvailableSize()),
+ percentage_resolution_size_(parent_space->PercentageResolutionSize()),
+ writing_mode_(parent_space->WritingMode()),
+ parent_writing_mode_(writing_mode_),
+ is_fixed_size_inline_(false),
cbiesinger 2016/12/01 21:11:37 Why not copy these values? This isn't really a "pa
Gleb Lanbin 2016/12/05 17:46:53 per Ian's comment from https://codereview.chromium
+ is_fixed_size_block_(false),
+ is_inline_direction_triggers_scrollbar_(false),
+ is_block_direction_triggers_scrollbar_(false),
+ fragmentation_type_(kFragmentNone),
+ is_new_fc_(parent_space->IsNewFormattingContext()),
+ text_direction_(parent_space->Direction()),
+ exclusions_(parent_space->Exclusions()) {}
+
NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode)
: writing_mode_(writing_mode),
+ parent_writing_mode_(writing_mode_),
is_fixed_size_inline_(false),
is_fixed_size_block_(false),
is_inline_direction_triggers_scrollbar_(false),
is_block_direction_triggers_scrollbar_(false),
- fragmentation_type_(NGFragmentationType::kFragmentNone),
- is_new_fc_(false) {}
+ fragmentation_type_(kFragmentNone),
+ 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;
@@ -67,27 +91,47 @@ NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsNewFormattingContext(
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_));
-
- if (writing_mode_ == kHorizontalTopBottom) {
- 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_, kFragmentNone,
- 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_,
+NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetWritingMode(
+ NGWritingMode writing_mode) {
+ writing_mode_ = writing_mode;
+ return *this;
+}
+
+NGConstraintSpace* NGConstraintSpaceBuilder::ToConstraintSpace() {
+ // Exclusions do not pass the formatting context boundary.
+ std::shared_ptr<NGExclusions> exclusions(
+ is_new_fc_ ? std::make_shared<NGExclusions>() : exclusions_);
+
+ // Whether the child and the containing block are parallel to each other.
+ // Example: vertical-rl and vertical-lr
+ bool is_in_parallel_flow = (parent_writing_mode_ == kHorizontalTopBottom) ==
+ (writing_mode_ == kHorizontalTopBottom);
+
+ if (is_in_parallel_flow) {
+ 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_), kFragmentNone,
- 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

Powered by Google App Engine
This is Rietveld 408576698