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

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

Issue 2664383003: [LayoutNG] Make NGBlockNode return a const style reference. (Closed)
Patch Set: . Created 3 years, 10 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_column_mapper.h" 9 #include "core/layout/ng/ng_column_mapper.h"
10 #include "core/layout/ng/ng_constraint_space.h" 10 #include "core/layout/ng/ng_constraint_space.h"
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 sizes->min_content = LayoutUnit(); 275 sizes->min_content = LayoutUnit();
276 sizes->max_content = LayoutUnit(); 276 sizes->max_content = LayoutUnit();
277 277
278 // Size-contained elements don't consider their contents for intrinsic sizing. 278 // Size-contained elements don't consider their contents for intrinsic sizing.
279 if (Style().containsSize()) 279 if (Style().containsSize())
280 return true; 280 return true;
281 281
282 // TODO: handle floats & orthogonal children. 282 // TODO: handle floats & orthogonal children.
283 for (NGBlockNode* node = first_child_; node; node = node->NextSibling()) { 283 for (NGBlockNode* node = first_child_; node; node = node->NextSibling()) {
284 Optional<MinAndMaxContentSizes> child_minmax; 284 Optional<MinAndMaxContentSizes> child_minmax;
285 if (NeedMinAndMaxContentSizesForContentContribution(*node->Style())) { 285 if (NeedMinAndMaxContentSizesForContentContribution(node->Style())) {
286 child_minmax = node->ComputeMinAndMaxContentSizes(); 286 child_minmax = node->ComputeMinAndMaxContentSizes();
287 } 287 }
288 288
289 MinAndMaxContentSizes child_sizes = 289 MinAndMaxContentSizes child_sizes =
290 ComputeMinAndMaxContentContribution(*node->Style(), child_minmax); 290 ComputeMinAndMaxContentContribution(node->Style(), child_minmax);
291 291
292 sizes->min_content = std::max(sizes->min_content, child_sizes.min_content); 292 sizes->min_content = std::max(sizes->min_content, child_sizes.min_content);
293 sizes->max_content = std::max(sizes->max_content, child_sizes.max_content); 293 sizes->max_content = std::max(sizes->max_content, child_sizes.max_content);
294 } 294 }
295 295
296 sizes->max_content = std::max(sizes->min_content, sizes->max_content); 296 sizes->max_content = std::max(sizes->min_content, sizes->max_content);
297 return true; 297 return true;
298 } 298 }
299 299
300 NGLogicalOffset NGBlockLayoutAlgorithm::CalculateRelativeOffset( 300 NGLogicalOffset NGBlockLayoutAlgorithm::CalculateRelativeOffset(
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 // Do not collapse margins between parent and its child if there is 373 // Do not collapse margins between parent and its child if there is
374 // border/padding between them. 374 // border/padding between them.
375 if (border_and_padding_.block_start) { 375 if (border_and_padding_.block_start) {
376 curr_bfc_offset_.block_offset += curr_margin_strut_.Sum(); 376 curr_bfc_offset_.block_offset += curr_margin_strut_.Sum();
377 builder_->SetBfcOffset(curr_bfc_offset_); 377 builder_->SetBfcOffset(curr_bfc_offset_);
378 curr_margin_strut_ = NGMarginStrut(); 378 curr_margin_strut_ = NGMarginStrut();
379 } 379 }
380 curr_bfc_offset_.block_offset += content_size_; 380 curr_bfc_offset_.block_offset += content_size_;
381 381
382 while (current_child_) { 382 while (current_child_) {
383 EPosition position = current_child_->Style()->position(); 383 EPosition position = current_child_->Style().position();
384 if (position == AbsolutePosition || position == FixedPosition) { 384 if (position == AbsolutePosition || position == FixedPosition) {
385 builder_->AddOutOfFlowChildCandidate(current_child_, 385 builder_->AddOutOfFlowChildCandidate(current_child_,
386 GetChildSpaceOffset()); 386 GetChildSpaceOffset());
387 current_child_ = current_child_->NextSibling(); 387 current_child_ = current_child_->NextSibling();
388 continue; 388 continue;
389 } 389 }
390 390
391 DCHECK(!ConstraintSpace().HasBlockFragmentation() || 391 DCHECK(!ConstraintSpace().HasBlockFragmentation() ||
392 SpaceAvailableForCurrentChild() > LayoutUnit()); 392 SpaceAvailableForCurrentChild() > LayoutUnit());
393 space_for_current_child_ = CreateConstraintSpaceForCurrentChild(); 393 space_for_current_child_ = CreateConstraintSpaceForCurrentChild();
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 visitor->trace(constraint_space_); 725 visitor->trace(constraint_space_);
726 visitor->trace(break_token_); 726 visitor->trace(break_token_);
727 visitor->trace(builder_); 727 visitor->trace(builder_);
728 visitor->trace(space_builder_); 728 visitor->trace(space_builder_);
729 visitor->trace(space_for_current_child_); 729 visitor->trace(space_for_current_child_);
730 visitor->trace(current_child_); 730 visitor->trace(current_child_);
731 visitor->trace(fragmentainer_mapper_); 731 visitor->trace(fragmentainer_mapper_);
732 } 732 }
733 733
734 } // namespace blink 734 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698