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

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

Issue 2921463004: [LayoutNG] PODify NGLayoutInputNode and sub-classes. (Closed)
Patch Set: new ng-bot expectations Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
index 03f669188987dd95f3c0b65479814b192a655156..87479033d110c039c64c7c8fadd7f72e351d1f6f 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
@@ -54,7 +54,7 @@ bool ClearanceMayAffectLayout(
return false;
}
-bool IsLegacyBlock(const NGLayoutInputNode& node) {
+bool IsLegacyBlock(NGLayoutInputNode node) {
return node.IsBlock() && !ToNGBlockNode(node).CanUseNewLayout();
}
@@ -123,7 +123,7 @@ void PositionPendingFloats(LayoutUnit origin_block_offset,
container_builder, space);
}
-NGBlockLayoutAlgorithm::NGBlockLayoutAlgorithm(NGBlockNode* node,
+NGBlockLayoutAlgorithm::NGBlockLayoutAlgorithm(NGBlockNode node,
NGConstraintSpace* space,
NGBlockBreakToken* break_token)
: NGLayoutAlgorithm(node, space, break_token) {}
@@ -137,25 +137,25 @@ Optional<MinMaxContentSize> NGBlockLayoutAlgorithm::ComputeMinMaxContentSize()
return sizes;
// TODO: handle floats & orthogonal children.
- for (NGLayoutInputNode* node = Node()->FirstChild(); node;
- node = node->NextSibling()) {
+ for (NGLayoutInputNode node = Node().FirstChild(); node;
+ node = node.NextSibling()) {
MinMaxContentSize child_sizes;
- if (node->IsInline()) {
+ if (node.IsInline()) {
// From |NGBlockLayoutAlgorithm| perspective, we can handle |NGInlineNode|
// almost the same as |NGBlockNode|, because an |NGInlineNode| includes
// all inline nodes following |node| and their descendants, and produces
// an anonymous box that contains all line boxes.
// |NextSibling| returns the next block sibling, or nullptr, skipping all
// following inline siblings and descendants.
- child_sizes = node->ComputeMinMaxContentSize();
+ child_sizes = node.ComputeMinMaxContentSize();
} else {
Optional<MinMaxContentSize> child_minmax;
- if (NeedMinMaxContentSizeForContentContribution(node->Style())) {
- child_minmax = node->ComputeMinMaxContentSize();
+ if (NeedMinMaxContentSizeForContentContribution(node.Style())) {
+ child_minmax = node.ComputeMinMaxContentSize();
}
child_sizes =
- ComputeMinAndMaxContentContribution(node->Style(), child_minmax);
+ ComputeMinAndMaxContentContribution(node.Style(), child_minmax);
}
sizes.min_content = std::max(sizes.min_content, child_sizes.min_content);
@@ -209,9 +209,9 @@ RefPtr<NGLayoutResult> NGBlockLayoutAlgorithm::Layout() {
container_builder_.MutableUnpositionedFloats() =
constraint_space_->UnpositionedFloats();
- NGBlockChildIterator child_iterator(Node()->FirstChild(), BreakToken());
+ NGBlockChildIterator child_iterator(Node().FirstChild(), BreakToken());
NGBlockChildIterator::Entry entry = child_iterator.NextChild();
- NGLayoutInputNode* child = entry.node;
+ NGLayoutInputNode child = entry.node;
NGBreakToken* child_break_token = entry.token;
// If we are resuming from a break token our start border and padding is
@@ -252,19 +252,19 @@ RefPtr<NGLayoutResult> NGBlockLayoutAlgorithm::Layout() {
input_bfc_block_offset, content_size_, input_margin_strut};
while (child) {
- if (child->IsOutOfFlowPositioned()) {
+ if (child.IsOutOfFlowPositioned()) {
DCHECK(!child_break_token);
HandleOutOfFlowPositioned(previous_inflow_position, ToNGBlockNode(child));
- } else if (child->IsFloating()) {
+ } else if (child.IsFloating()) {
HandleFloating(previous_inflow_position, ToNGBlockNode(child),
ToNGBlockBreakToken(child_break_token));
} else {
NGInflowChildData child_data =
PrepareChildLayout(previous_inflow_position, child);
RefPtr<NGConstraintSpace> child_space =
- CreateConstraintSpaceForChild(*child, child_data);
+ CreateConstraintSpaceForChild(child, child_data);
RefPtr<NGLayoutResult> layout_result =
- child->Layout(child_space.Get(), child_break_token);
+ child.Layout(child_space.Get(), child_break_token);
previous_inflow_position =
FinishChildLayout(*child_space, previous_inflow_position, child_data,
child, layout_result.Get());
@@ -334,7 +334,7 @@ RefPtr<NGLayoutResult> NGBlockLayoutAlgorithm::Layout() {
void NGBlockLayoutAlgorithm::HandleOutOfFlowPositioned(
const NGPreviousInflowPosition& previous_inflow_position,
- NGBlockNode* child) {
+ NGBlockNode child) {
NGLogicalOffset offset = {border_and_padding_.inline_start,
previous_inflow_position.logical_block_offset};
@@ -348,7 +348,7 @@ void NGBlockLayoutAlgorithm::HandleOutOfFlowPositioned(
void NGBlockLayoutAlgorithm::HandleFloating(
const NGPreviousInflowPosition& previous_inflow_position,
- NGBlockNode* child,
+ NGBlockNode child,
NGBlockBreakToken* token) {
// Calculate margins in the BFC's writing mode.
NGBoxStrut margins = CalculateMargins(child);
@@ -379,9 +379,9 @@ void NGBlockLayoutAlgorithm::HandleFloating(
NGInflowChildData NGBlockLayoutAlgorithm::PrepareChildLayout(
const NGPreviousInflowPosition& previous_inflow_position,
- NGLayoutInputNode* child) {
+ NGLayoutInputNode child) {
DCHECK(child);
- DCHECK(!child->IsFloating());
+ DCHECK(!child.IsFloating());
LayoutUnit bfc_block_offset = previous_inflow_position.bfc_block_offset;
@@ -390,10 +390,10 @@ NGInflowChildData NGBlockLayoutAlgorithm::PrepareChildLayout(
NGMarginStrut margin_strut = previous_inflow_position.margin_strut;
bool should_position_pending_floats =
- !IsNewFormattingContextForBlockLevelChild(Style(), *child) &&
+ !IsNewFormattingContextForBlockLevelChild(Style(), child) &&
ClearanceMayAffectLayout(ConstraintSpace(),
container_builder_.UnpositionedFloats(),
- child->Style());
+ child.Style());
// Children which may clear a float need to force all the pending floats to
// be positioned before layout. This also resolves the fragment's bfc offset.
@@ -413,7 +413,7 @@ NGInflowChildData NGBlockLayoutAlgorithm::PrepareChildLayout(
border_and_padding_.inline_start + margins.inline_start,
bfc_block_offset};
- bool is_new_fc = IsNewFormattingContextForBlockLevelChild(Style(), *child);
+ bool is_new_fc = IsNewFormattingContextForBlockLevelChild(Style(), child);
// Append the current margin strut with child's block start margin.
// Non empty border/padding, and new FC use cases are handled inside of the
@@ -426,7 +426,7 @@ NGInflowChildData NGBlockLayoutAlgorithm::PrepareChildLayout(
// Should collapse margins if our child is a legacy block.
// TODO(ikilpatrick): I think this can be removed.
- if (IsLegacyBlock(*child) && !is_new_fc) {
+ if (IsLegacyBlock(child) && !is_new_fc) {
child_bfc_offset.block_offset += margin_strut.Sum();
MaybeUpdateFragmentBfcOffset(
ConstraintSpace(), child_bfc_offset.block_offset, &container_builder_);
@@ -443,7 +443,7 @@ NGPreviousInflowPosition NGBlockLayoutAlgorithm::FinishChildLayout(
const NGConstraintSpace& child_space,
const NGPreviousInflowPosition& previous_inflow_position,
const NGInflowChildData& child_data,
- const NGLayoutInputNode* child,
+ const NGLayoutInputNode child,
NGLayoutResult* layout_result) {
// Pull out unpositioned floats to the current fragment. This may needed if
// for example the child fragment could not position its floats because it's
@@ -458,11 +458,11 @@ NGPreviousInflowPosition NGBlockLayoutAlgorithm::FinishChildLayout(
// Determine the fragment's position in the parent space.
WTF::Optional<NGLogicalOffset> child_bfc_offset;
if (child_space.IsNewFormattingContext())
- child_bfc_offset = PositionNewFc(*child, previous_inflow_position, fragment,
+ child_bfc_offset = PositionNewFc(child, previous_inflow_position, fragment,
child_data, child_space);
else if (fragment.BfcOffset())
child_bfc_offset = PositionWithBfcOffset(fragment);
- else if (IsLegacyBlock(*child))
+ else if (IsLegacyBlock(child))
child_bfc_offset = PositionLegacy(child_space, child_data);
else if (container_builder_.BfcOffset())
child_bfc_offset = PositionWithParentBfc(child_space, child_data, fragment);
@@ -655,11 +655,11 @@ void NGBlockLayoutAlgorithm::FinalizeForFragmentation() {
container_builder_.SetBlockOverflow(content_size_);
}
-NGBoxStrut NGBlockLayoutAlgorithm::CalculateMargins(NGLayoutInputNode* child) {
+NGBoxStrut NGBlockLayoutAlgorithm::CalculateMargins(NGLayoutInputNode child) {
DCHECK(child);
- if (child->IsInline())
+ if (child.IsInline())
return {};
- const ComputedStyle& child_style = child->Style();
+ const ComputedStyle& child_style = child.Style();
RefPtr<NGConstraintSpace> space =
NGConstraintSpaceBuilder(MutableConstraintSpace())
@@ -672,10 +672,10 @@ NGBoxStrut NGBlockLayoutAlgorithm::CalculateMargins(NGLayoutInputNode* child) {
// TODO(ikilpatrick): Move the auto margins calculation for different writing
// modes to post-layout.
- if (!child->IsFloating()) {
+ if (!child.IsFloating()) {
WTF::Optional<MinMaxContentSize> sizes;
if (NeedMinMaxContentSize(*space, child_style))
- sizes = child->ComputeMinMaxContentSize();
+ sizes = child.ComputeMinMaxContentSize();
LayoutUnit child_inline_size =
ComputeInlineSizeForFragment(*space, child_style, sizes);
@@ -685,7 +685,7 @@ NGBoxStrut NGBlockLayoutAlgorithm::CalculateMargins(NGLayoutInputNode* child) {
}
RefPtr<NGConstraintSpace> NGBlockLayoutAlgorithm::CreateConstraintSpaceForChild(
- const NGLayoutInputNode& child,
+ const NGLayoutInputNode child,
const NGInflowChildData& child_data) {
NGConstraintSpaceBuilder space_builder(MutableConstraintSpace());
space_builder.SetAvailableSize(child_available_size_)

Powered by Google App Engine
This is Rietveld 408576698