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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/layout/ng/ng_constraint_space_builder.h" 5 #include "core/layout/ng/ng_constraint_space_builder.h"
6 6
7 namespace blink { 7 namespace blink {
8 8
9 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode) 9 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(
10 : writing_mode_(writing_mode), 10 const NGConstraintSpace* parent_space)
11 : available_size_(parent_space->AvailableSize()),
12 percentage_resolution_size_(parent_space->PercentageResolutionSize()),
13 writing_mode_(parent_space->WritingMode()),
14 parent_writing_mode_(writing_mode_),
11 is_fixed_size_inline_(false), 15 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
12 is_fixed_size_block_(false), 16 is_fixed_size_block_(false),
13 is_inline_direction_triggers_scrollbar_(false), 17 is_inline_direction_triggers_scrollbar_(false),
14 is_block_direction_triggers_scrollbar_(false), 18 is_block_direction_triggers_scrollbar_(false),
15 fragmentation_type_(NGFragmentationType::kFragmentNone), 19 fragmentation_type_(kFragmentNone),
16 is_new_fc_(false) {} 20 is_new_fc_(parent_space->IsNewFormattingContext()),
21 text_direction_(parent_space->Direction()),
22 exclusions_(parent_space->Exclusions()) {}
23
24 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode)
25 : writing_mode_(writing_mode),
26 parent_writing_mode_(writing_mode_),
27 is_fixed_size_inline_(false),
28 is_fixed_size_block_(false),
29 is_inline_direction_triggers_scrollbar_(false),
30 is_block_direction_triggers_scrollbar_(false),
31 fragmentation_type_(kFragmentNone),
32 is_new_fc_(false),
33 text_direction_(TextDirection::LTR),
34 exclusions_(new NGExclusions()) {}
17 35
18 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetAvailableSize( 36 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetAvailableSize(
19 NGLogicalSize available_size) { 37 NGLogicalSize available_size) {
20 available_size_ = available_size; 38 available_size_ = available_size;
21 return *this; 39 return *this;
22 } 40 }
23 41
24 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetPercentageResolutionSize( 42 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetPercentageResolutionSize(
25 NGLogicalSize percentage_resolution_size) { 43 NGLogicalSize percentage_resolution_size) {
26 percentage_resolution_size_ = percentage_resolution_size; 44 percentage_resolution_size_ = percentage_resolution_size;
27 return *this; 45 return *this;
28 } 46 }
29 47
48 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetTextDirection(
49 TextDirection text_direction) {
50 text_direction_ = text_direction;
51 return *this;
52 }
53
30 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsFixedSizeInline( 54 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsFixedSizeInline(
31 bool is_fixed_size_inline) { 55 bool is_fixed_size_inline) {
32 is_fixed_size_inline_ = is_fixed_size_inline; 56 is_fixed_size_inline_ = is_fixed_size_inline;
33 return *this; 57 return *this;
34 } 58 }
35 59
36 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsFixedSizeBlock( 60 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsFixedSizeBlock(
37 bool is_fixed_size_block) { 61 bool is_fixed_size_block) {
38 is_fixed_size_block_ = is_fixed_size_block; 62 is_fixed_size_block_ = is_fixed_size_block;
39 return *this; 63 return *this;
(...skipping 20 matching lines...) Expand all
60 fragmentation_type_ = fragmentation_type; 84 fragmentation_type_ = fragmentation_type;
61 return *this; 85 return *this;
62 } 86 }
63 87
64 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsNewFormattingContext( 88 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsNewFormattingContext(
65 bool is_new_fc) { 89 bool is_new_fc) {
66 is_new_fc_ = is_new_fc; 90 is_new_fc_ = is_new_fc;
67 return *this; 91 return *this;
68 } 92 }
69 93
70 NGPhysicalConstraintSpace* NGConstraintSpaceBuilder::ToConstraintSpace() { 94 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetWritingMode(
71 NGPhysicalSize available_size = available_size_.ConvertToPhysical( 95 NGWritingMode writing_mode) {
72 static_cast<NGWritingMode>(writing_mode_)); 96 writing_mode_ = writing_mode;
73 NGPhysicalSize percentage_resolution_size = 97 return *this;
74 percentage_resolution_size_.ConvertToPhysical( 98 }
75 static_cast<NGWritingMode>(writing_mode_));
76 99
77 if (writing_mode_ == kHorizontalTopBottom) { 100 NGConstraintSpace* NGConstraintSpaceBuilder::ToConstraintSpace() {
78 return new NGPhysicalConstraintSpace( 101 // Exclusions do not pass the formatting context boundary.
79 available_size, percentage_resolution_size, is_fixed_size_inline_, 102 std::shared_ptr<NGExclusions> exclusions(
80 is_fixed_size_block_, is_inline_direction_triggers_scrollbar_, 103 is_new_fc_ ? std::make_shared<NGExclusions>() : exclusions_);
81 is_block_direction_triggers_scrollbar_, kFragmentNone, 104
82 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_); 105 // Whether the child and the containing block are parallel to each other.
83 } else { 106 // Example: vertical-rl and vertical-lr
84 return new NGPhysicalConstraintSpace( 107 bool is_in_parallel_flow = (parent_writing_mode_ == kHorizontalTopBottom) ==
85 available_size, percentage_resolution_size, is_fixed_size_block_, 108 (writing_mode_ == kHorizontalTopBottom);
86 is_fixed_size_inline_, is_block_direction_triggers_scrollbar_, 109
110 if (is_in_parallel_flow) {
111 return new NGConstraintSpace(
112 static_cast<NGWritingMode>(writing_mode_),
113 static_cast<TextDirection>(text_direction_),
114 {available_size_.inline_size, available_size_.block_size},
115 {percentage_resolution_size_.inline_size,
116 percentage_resolution_size_.block_size},
117 is_fixed_size_inline_, is_fixed_size_block_,
87 is_inline_direction_triggers_scrollbar_, 118 is_inline_direction_triggers_scrollbar_,
88 static_cast<NGFragmentationType>(fragmentation_type_), kFragmentNone, 119 is_block_direction_triggers_scrollbar_,
89 is_new_fc_); 120 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_,
121 exclusions);
90 } 122 }
123
124 return new NGConstraintSpace(
125 static_cast<NGWritingMode>(writing_mode_),
126 static_cast<TextDirection>(text_direction_),
127 {available_size_.block_size, available_size_.inline_size},
128 {percentage_resolution_size_.block_size,
129 percentage_resolution_size_.inline_size},
130 is_fixed_size_block_, is_fixed_size_inline_,
131 is_block_direction_triggers_scrollbar_,
132 is_inline_direction_triggers_scrollbar_,
133 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_,
134 exclusions);
91 } 135 }
92 136
93 } // namespace blink 137 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698