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

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

Issue 2649583002: [LayoutNG] Remove the ng_layout_coordinator and temporary LayoutSync method. (Closed)
Patch Set: fixup comments. Created 3 years, 11 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_block_layout_algorithm.h" 5 #include "core/layout/ng/ng_block_layout_algorithm.h"
6 6
7 #include "core/layout/ng/ng_absolute_utils.h" 7 #include "core/layout/ng/ng_absolute_utils.h"
8 #include "core/layout/ng/ng_block_break_token.h" 8 #include "core/layout/ng/ng_block_break_token.h"
9 #include "core/layout/ng/ng_box_fragment.h" 9 #include "core/layout/ng/ng_box_fragment.h"
10 #include "core/layout/ng/ng_column_mapper.h" 10 #include "core/layout/ng/ng_column_mapper.h"
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 ComputeMinAndMaxContentContribution(*node->Style(), child_minmax); 212 ComputeMinAndMaxContentContribution(*node->Style(), child_minmax);
213 213
214 sizes->min_content = std::max(sizes->min_content, child_sizes.min_content); 214 sizes->min_content = std::max(sizes->min_content, child_sizes.min_content);
215 sizes->max_content = std::max(sizes->max_content, child_sizes.max_content); 215 sizes->max_content = std::max(sizes->max_content, child_sizes.max_content);
216 } 216 }
217 217
218 sizes->max_content = std::max(sizes->min_content, sizes->max_content); 218 sizes->max_content = std::max(sizes->min_content, sizes->max_content);
219 return true; 219 return true;
220 } 220 }
221 221
222 NGLayoutStatus NGBlockLayoutAlgorithm::Layout( 222 NGPhysicalFragment* NGBlockLayoutAlgorithm::Layout() {
223 NGPhysicalFragment* child_fragment,
224 NGPhysicalFragment** fragment_out,
225 NGLayoutAlgorithm** algorithm_out) {
226 WTF::Optional<MinAndMaxContentSizes> sizes; 223 WTF::Optional<MinAndMaxContentSizes> sizes;
227 if (NeedMinAndMaxContentSizes(ConstraintSpace(), Style())) { 224 if (NeedMinAndMaxContentSizes(ConstraintSpace(), Style())) {
228 // TODO(ikilpatrick): Change ComputeMinAndMaxContentSizes to return 225 // TODO(ikilpatrick): Change ComputeMinAndMaxContentSizes to return
229 // MinAndMaxContentSizes. 226 // MinAndMaxContentSizes.
230 sizes = MinAndMaxContentSizes(); 227 sizes = MinAndMaxContentSizes();
231 ComputeMinAndMaxContentSizes(&*sizes); 228 ComputeMinAndMaxContentSizes(&*sizes);
232 } 229 }
233 230
234 border_and_padding_ = 231 border_and_padding_ =
235 ComputeBorders(Style()) + ComputePadding(ConstraintSpace(), Style()); 232 ComputeBorders(Style()) + ComputePadding(ConstraintSpace(), Style());
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 builder_->AddOutOfFlowChildCandidate(current_child_, 281 builder_->AddOutOfFlowChildCandidate(current_child_,
285 GetChildSpaceOffset()); 282 GetChildSpaceOffset());
286 current_child_ = current_child_->NextSibling(); 283 current_child_ = current_child_->NextSibling();
287 continue; 284 continue;
288 } 285 }
289 286
290 DCHECK(!ConstraintSpace().HasBlockFragmentation() || 287 DCHECK(!ConstraintSpace().HasBlockFragmentation() ||
291 SpaceAvailableForCurrentChild() > LayoutUnit()); 288 SpaceAvailableForCurrentChild() > LayoutUnit());
292 space_for_current_child_ = CreateConstraintSpaceForCurrentChild(); 289 space_for_current_child_ = CreateConstraintSpaceForCurrentChild();
293 290
294 NGFragment* fragment; 291 NGPhysicalFragment* child_fragment =
295 current_child_->LayoutSync(space_for_current_child_, &fragment); 292 current_child_->Layout(space_for_current_child_);
296 NGPhysicalFragment* child_fragment = fragment->PhysicalFragment();
297
298 // TODO(layout_ng): Seems like a giant hack to call this here.
299 current_child_->UpdateLayoutBox(toNGPhysicalBoxFragment(child_fragment),
cbiesinger 2017/01/20 21:21:56 Oh I see... this was only needed because we did no
ikilpatrick 2017/01/20 23:19:57 Yeah going through the boxes now might make things
300 space_for_current_child_);
301 293
302 FinishCurrentChildLayout(new NGBoxFragment( 294 FinishCurrentChildLayout(new NGBoxFragment(
303 ConstraintSpace().WritingMode(), ConstraintSpace().Direction(), 295 ConstraintSpace().WritingMode(), ConstraintSpace().Direction(),
304 toNGPhysicalBoxFragment(child_fragment))); 296 toNGPhysicalBoxFragment(child_fragment)));
305 297
306 if (!ProceedToNextUnfinishedSibling(child_fragment)) 298 if (!ProceedToNextUnfinishedSibling(child_fragment))
307 break; 299 break;
308 } 300 }
309 301
310 content_size_ += border_and_padding_.block_end; 302 content_size_ += border_and_padding_.block_end;
(...skipping 11 matching lines...) Expand all
322 current_child_ = nullptr; 314 current_child_ = nullptr;
323 315
324 while (!LayoutOutOfFlowChild()) 316 while (!LayoutOutOfFlowChild())
325 continue; 317 continue;
326 318
327 builder_->SetInlineOverflow(max_inline_size_).SetBlockOverflow(content_size_); 319 builder_->SetInlineOverflow(max_inline_size_).SetBlockOverflow(content_size_);
328 320
329 if (ConstraintSpace().HasBlockFragmentation()) 321 if (ConstraintSpace().HasBlockFragmentation())
330 FinalizeForFragmentation(); 322 FinalizeForFragmentation();
331 323
332 *fragment_out = builder_->ToBoxFragment(); 324 return builder_->ToBoxFragment();
333 return kNewFragment;
334 } 325 }
335 326
336 void NGBlockLayoutAlgorithm::FinishCurrentChildLayout(NGFragment* fragment) { 327 void NGBlockLayoutAlgorithm::FinishCurrentChildLayout(NGFragment* fragment) {
337 NGBoxStrut child_margins = ComputeMargins( 328 NGBoxStrut child_margins = ComputeMargins(
338 *space_for_current_child_, CurrentChildStyle(), 329 *space_for_current_child_, CurrentChildStyle(),
339 constraint_space_->WritingMode(), constraint_space_->Direction()); 330 constraint_space_->WritingMode(), constraint_space_->Direction());
340 331
341 NGLogicalOffset fragment_offset; 332 NGLogicalOffset fragment_offset;
342 if (CurrentChildStyle().isFloating()) { 333 if (CurrentChildStyle().isFloating()) {
343 fragment_offset = PositionFloatFragment(*fragment, child_margins); 334 fragment_offset = PositionFloatFragment(*fragment, child_margins);
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 visitor->trace(builder_); 669 visitor->trace(builder_);
679 visitor->trace(space_builder_); 670 visitor->trace(space_builder_);
680 visitor->trace(space_for_current_child_); 671 visitor->trace(space_for_current_child_);
681 visitor->trace(current_child_); 672 visitor->trace(current_child_);
682 visitor->trace(out_of_flow_layout_); 673 visitor->trace(out_of_flow_layout_);
683 visitor->trace(out_of_flow_candidates_); 674 visitor->trace(out_of_flow_candidates_);
684 visitor->trace(fragmentainer_mapper_); 675 visitor->trace(fragmentainer_mapper_);
685 } 676 }
686 677
687 } // namespace blink 678 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698