| OLD | NEW |
| 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_node.h" | 5 #include "core/layout/ng/ng_block_node.h" |
| 6 | 6 |
| 7 #include "core/layout/LayoutBlockFlow.h" | 7 #include "core/layout/LayoutBlockFlow.h" |
| 8 #include "core/layout/api/LineLayoutAPIShim.h" | 8 #include "core/layout/api/LineLayoutAPIShim.h" |
| 9 #include "core/layout/line/InlineIterator.h" | 9 #include "core/layout/line/InlineIterator.h" |
| 10 #include "core/layout/ng/layout_ng_block_flow.h" | 10 #include "core/layout/ng/layout_ng_block_flow.h" |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 MainOrPreferredSize, Length(MinContent), | 109 MainOrPreferredSize, Length(MinContent), |
| 110 LayoutUnit(), layout_box_->containingBlock()) - | 110 LayoutUnit(), layout_box_->containingBlock()) - |
| 111 borderAndPadding; | 111 borderAndPadding; |
| 112 sizes.max_content = layout_box_->computeLogicalWidthUsing( | 112 sizes.max_content = layout_box_->computeLogicalWidthUsing( |
| 113 MainOrPreferredSize, Length(MaxContent), | 113 MainOrPreferredSize, Length(MaxContent), |
| 114 LayoutUnit(), layout_box_->containingBlock()) - | 114 LayoutUnit(), layout_box_->containingBlock()) - |
| 115 borderAndPadding; | 115 borderAndPadding; |
| 116 return sizes; | 116 return sizes; |
| 117 } | 117 } |
| 118 | 118 |
| 119 NGConstraintSpace* constraint_space = | 119 RefPtr<NGConstraintSpace> constraint_space = |
| 120 NGConstraintSpaceBuilder( | 120 NGConstraintSpaceBuilder( |
| 121 FromPlatformWritingMode(Style().getWritingMode())) | 121 FromPlatformWritingMode(Style().getWritingMode())) |
| 122 .SetTextDirection(Style().direction()) | 122 .SetTextDirection(Style().direction()) |
| 123 .ToConstraintSpace(FromPlatformWritingMode(Style().getWritingMode())); | 123 .ToConstraintSpace(FromPlatformWritingMode(Style().getWritingMode())); |
| 124 | 124 |
| 125 // TODO(cbiesinger): For orthogonal children, we need to always synthesize. | 125 // TODO(cbiesinger): For orthogonal children, we need to always synthesize. |
| 126 NGBlockLayoutAlgorithm minmax_algorithm(this, constraint_space); | 126 NGBlockLayoutAlgorithm minmax_algorithm(this, constraint_space.get()); |
| 127 Optional<MinAndMaxContentSizes> maybe_sizes = | 127 Optional<MinAndMaxContentSizes> maybe_sizes = |
| 128 minmax_algorithm.ComputeMinAndMaxContentSizes(); | 128 minmax_algorithm.ComputeMinAndMaxContentSizes(); |
| 129 if (maybe_sizes.has_value()) | 129 if (maybe_sizes.has_value()) |
| 130 return *maybe_sizes; | 130 return *maybe_sizes; |
| 131 | 131 |
| 132 // Have to synthesize this value. | 132 // Have to synthesize this value. |
| 133 RefPtr<NGLayoutResult> layout_result = Layout(constraint_space); | 133 RefPtr<NGLayoutResult> layout_result = Layout(constraint_space.get()); |
| 134 NGPhysicalFragment* physical_fragment = | 134 NGPhysicalFragment* physical_fragment = |
| 135 layout_result->PhysicalFragment().get(); | 135 layout_result->PhysicalFragment().get(); |
| 136 NGBoxFragment min_fragment(FromPlatformWritingMode(Style().getWritingMode()), | 136 NGBoxFragment min_fragment(FromPlatformWritingMode(Style().getWritingMode()), |
| 137 toNGPhysicalBoxFragment(physical_fragment)); | 137 toNGPhysicalBoxFragment(physical_fragment)); |
| 138 sizes.min_content = min_fragment.InlineOverflow(); | 138 sizes.min_content = min_fragment.InlineOverflow(); |
| 139 | 139 |
| 140 // Now, redo with infinite space for max_content | 140 // Now, redo with infinite space for max_content |
| 141 constraint_space = | 141 constraint_space = |
| 142 NGConstraintSpaceBuilder( | 142 NGConstraintSpaceBuilder( |
| 143 FromPlatformWritingMode(Style().getWritingMode())) | 143 FromPlatformWritingMode(Style().getWritingMode())) |
| 144 .SetTextDirection(Style().direction()) | 144 .SetTextDirection(Style().direction()) |
| 145 .SetAvailableSize({LayoutUnit::max(), LayoutUnit()}) | 145 .SetAvailableSize({LayoutUnit::max(), LayoutUnit()}) |
| 146 .SetPercentageResolutionSize({LayoutUnit(), LayoutUnit()}) | 146 .SetPercentageResolutionSize({LayoutUnit(), LayoutUnit()}) |
| 147 .ToConstraintSpace(FromPlatformWritingMode(Style().getWritingMode())); | 147 .ToConstraintSpace(FromPlatformWritingMode(Style().getWritingMode())); |
| 148 | 148 |
| 149 layout_result = Layout(constraint_space); | 149 layout_result = Layout(constraint_space.get()); |
| 150 physical_fragment = layout_result->PhysicalFragment().get(); | 150 physical_fragment = layout_result->PhysicalFragment().get(); |
| 151 NGBoxFragment max_fragment(FromPlatformWritingMode(Style().getWritingMode()), | 151 NGBoxFragment max_fragment(FromPlatformWritingMode(Style().getWritingMode()), |
| 152 toNGPhysicalBoxFragment(physical_fragment)); | 152 toNGPhysicalBoxFragment(physical_fragment)); |
| 153 sizes.max_content = max_fragment.InlineOverflow(); | 153 sizes.max_content = max_fragment.InlineOverflow(); |
| 154 return sizes; | 154 return sizes; |
| 155 } | 155 } |
| 156 | 156 |
| 157 const ComputedStyle& NGBlockNode::Style() const { | 157 const ComputedStyle& NGBlockNode::Style() const { |
| 158 if (style_) | 158 if (style_) |
| 159 return *style_.get(); | 159 return *style_.get(); |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 // Save static position for legacy AbsPos layout. | 350 // Save static position for legacy AbsPos layout. |
| 351 void NGBlockNode::SaveStaticOffsetForLegacy(const NGLogicalOffset& offset) { | 351 void NGBlockNode::SaveStaticOffsetForLegacy(const NGLogicalOffset& offset) { |
| 352 DCHECK(layout_box_); | 352 DCHECK(layout_box_); |
| 353 DCHECK(layout_box_->isOutOfFlowPositioned()); | 353 DCHECK(layout_box_->isOutOfFlowPositioned()); |
| 354 DCHECK(layout_box_->layer()); | 354 DCHECK(layout_box_->layer()); |
| 355 layout_box_->layer()->setStaticBlockPosition(offset.block_offset); | 355 layout_box_->layer()->setStaticBlockPosition(offset.block_offset); |
| 356 layout_box_->layer()->setStaticInlinePosition(offset.inline_offset); | 356 layout_box_->layer()->setStaticInlinePosition(offset.inline_offset); |
| 357 } | 357 } |
| 358 | 358 |
| 359 } // namespace blink | 359 } // namespace blink |
| OLD | NEW |