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

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

Issue 2770483002: CS of out-of-flow positioned objects should have is_new_fc == true (Closed)
Patch Set: Created 3 years, 9 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 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 #include "core/layout/ng/ng_length_utils.h" 7 #include "core/layout/ng/ng_length_utils.h"
8 8
9 namespace blink { 9 namespace blink {
10 10
11 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder( 11 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(
12 const NGConstraintSpace* parent_space) 12 const NGConstraintSpace* parent_space)
13 : available_size_(parent_space->AvailableSize()), 13 : available_size_(parent_space->AvailableSize()),
14 percentage_resolution_size_(parent_space->PercentageResolutionSize()), 14 percentage_resolution_size_(parent_space->PercentageResolutionSize()),
15 initial_containing_block_size_( 15 initial_containing_block_size_(
16 parent_space->InitialContainingBlockSize()), 16 parent_space->InitialContainingBlockSize()),
17 fragmentainer_space_available_(NGSizeIndefinite), 17 fragmentainer_space_available_(NGSizeIndefinite),
18 parent_writing_mode_(parent_space->WritingMode()), 18 parent_writing_mode_(parent_space->WritingMode()),
19 is_fixed_size_inline_(false), 19 is_fixed_size_inline_(false),
20 is_fixed_size_block_(false), 20 is_fixed_size_block_(false),
21 is_shrink_to_fit_(false), 21 is_shrink_to_fit_(false),
22 is_inline_direction_triggers_scrollbar_(false), 22 is_inline_direction_triggers_scrollbar_(false),
23 is_block_direction_triggers_scrollbar_(false), 23 is_block_direction_triggers_scrollbar_(false),
24 fragmentation_type_(parent_space->BlockFragmentationType()), 24 fragmentation_type_(parent_space->BlockFragmentationType()),
25 is_new_fc_(parent_space->IsNewFormattingContext()), 25 is_new_fc_(false),
26 is_parent_new_fc_(parent_space->IsNewFormattingContext()),
26 is_anonymous_(false), 27 is_anonymous_(false),
27 text_direction_(static_cast<unsigned>(parent_space->Direction())), 28 text_direction_(static_cast<unsigned>(parent_space->Direction())),
28 bfc_offset_(parent_space->bfc_offset_), 29 bfc_offset_(parent_space->bfc_offset_),
29 exclusions_(parent_space->Exclusions()) {} 30 exclusions_(parent_space->Exclusions()) {}
30 31
31 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode) 32 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode)
32 : initial_containing_block_size_{NGSizeIndefinite, NGSizeIndefinite}, 33 : initial_containing_block_size_{NGSizeIndefinite, NGSizeIndefinite},
33 fragmentainer_space_available_(NGSizeIndefinite), 34 fragmentainer_space_available_(NGSizeIndefinite),
34 parent_writing_mode_(writing_mode), 35 parent_writing_mode_(writing_mode),
35 is_fixed_size_inline_(false), 36 is_fixed_size_inline_(false),
36 is_fixed_size_block_(false), 37 is_fixed_size_block_(false),
37 is_shrink_to_fit_(false), 38 is_shrink_to_fit_(false),
38 is_inline_direction_triggers_scrollbar_(false), 39 is_inline_direction_triggers_scrollbar_(false),
39 is_block_direction_triggers_scrollbar_(false), 40 is_block_direction_triggers_scrollbar_(false),
40 fragmentation_type_(kFragmentNone), 41 fragmentation_type_(kFragmentNone),
41 is_new_fc_(false), 42 is_new_fc_(false),
43 is_parent_new_fc_(false),
42 is_anonymous_(false), 44 is_anonymous_(false),
43 text_direction_(static_cast<unsigned>(TextDirection::kLtr)), 45 text_direction_(static_cast<unsigned>(TextDirection::kLtr)),
44 exclusions_(new NGExclusions()) {} 46 exclusions_(new NGExclusions()) {}
45 47
46 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetAvailableSize( 48 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetAvailableSize(
47 NGLogicalSize available_size) { 49 NGLogicalSize available_size) {
48 available_size_ = available_size; 50 available_size_ = available_size;
49 return *this; 51 return *this;
50 } 52 }
51 53
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 percentage_resolution_size.inline_size = 170 percentage_resolution_size.inline_size =
169 initial_containing_block_size_.width; 171 initial_containing_block_size_.width;
170 } else { 172 } else {
171 percentage_resolution_size.inline_size = 173 percentage_resolution_size.inline_size =
172 initial_containing_block_size_.height; 174 initial_containing_block_size_.height;
173 } 175 }
174 } 176 }
175 177
176 // Reset things that do not pass the Formatting Context boundary. 178 // Reset things that do not pass the Formatting Context boundary.
177 std::shared_ptr<NGExclusions> exclusions( 179 std::shared_ptr<NGExclusions> exclusions(
178 is_new_fc_ ? std::make_shared<NGExclusions>() : exclusions_); 180 is_parent_new_fc_ ? std::make_shared<NGExclusions>() : exclusions_);
ikilpatrick 2017/03/23 16:39:59 yeah i'm not sure that I understand this, exclusio
Gleb Lanbin 2017/03/24 20:10:05 updated based on the offline discussion.
179 NGLogicalOffset bfc_offset = is_new_fc_ ? NGLogicalOffset() : bfc_offset_;
180 NGMarginStrut margin_strut = is_new_fc_ ? NGMarginStrut() : margin_strut_; 181 NGMarginStrut margin_strut = is_new_fc_ ? NGMarginStrut() : margin_strut_;
181 WTF::Optional<LayoutUnit> clearance_offset = 182 WTF::Optional<LayoutUnit> clearance_offset =
182 is_new_fc_ ? WTF::nullopt : clearance_offset_; 183 is_new_fc_ ? WTF::nullopt : clearance_offset_;
183 184
184 if (is_in_parallel_flow) { 185 if (is_in_parallel_flow) {
185 return adoptRef(new NGConstraintSpace( 186 return adoptRef(new NGConstraintSpace(
186 static_cast<NGWritingMode>(out_writing_mode), 187 static_cast<NGWritingMode>(out_writing_mode),
187 static_cast<TextDirection>(text_direction_), available_size, 188 static_cast<TextDirection>(text_direction_), available_size,
188 percentage_resolution_size, initial_containing_block_size_, 189 percentage_resolution_size, initial_containing_block_size_,
189 fragmentainer_space_available_, is_fixed_size_inline_, 190 fragmentainer_space_available_, is_fixed_size_inline_,
190 is_fixed_size_block_, is_shrink_to_fit_, 191 is_fixed_size_block_, is_shrink_to_fit_,
191 is_inline_direction_triggers_scrollbar_, 192 is_inline_direction_triggers_scrollbar_,
192 is_block_direction_triggers_scrollbar_, 193 is_block_direction_triggers_scrollbar_,
193 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_, 194 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_,
194 is_anonymous_, margin_strut, bfc_offset, exclusions, clearance_offset)); 195 is_anonymous_, margin_strut, bfc_offset_, exclusions,
196 clearance_offset));
195 } 197 }
196 return adoptRef(new NGConstraintSpace( 198 return adoptRef(new NGConstraintSpace(
197 out_writing_mode, static_cast<TextDirection>(text_direction_), 199 out_writing_mode, static_cast<TextDirection>(text_direction_),
198 available_size, percentage_resolution_size, 200 available_size, percentage_resolution_size,
199 initial_containing_block_size_, fragmentainer_space_available_, 201 initial_containing_block_size_, fragmentainer_space_available_,
200 is_fixed_size_block_, is_fixed_size_inline_, is_shrink_to_fit_, 202 is_fixed_size_block_, is_fixed_size_inline_, is_shrink_to_fit_,
201 is_block_direction_triggers_scrollbar_, 203 is_block_direction_triggers_scrollbar_,
202 is_inline_direction_triggers_scrollbar_, 204 is_inline_direction_triggers_scrollbar_,
203 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_, 205 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_,
204 is_anonymous_, margin_strut, bfc_offset, exclusions, clearance_offset)); 206 is_anonymous_, margin_strut, bfc_offset_, exclusions, clearance_offset));
205 } 207 }
206 208
207 } // namespace blink 209 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698