Index: third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h |
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h |
index b24ab27864f1f87be6e3dfb65d67fe64c1d8ddf4..3ba176da363ac1150b82f34b8d34894b75c7a2cf 100644 |
--- a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h |
+++ b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h |
@@ -18,19 +18,35 @@ namespace blink { |
class NGConstraintSpace; |
class NGLayoutResult; |
-struct NGInflowChildData; |
-struct NGPreviousInflowPosition; |
+ |
+// This struct is used for communicating to a child the position of the |
+// previous inflow child. |
+struct NGPreviousInflowPosition { |
+ LayoutUnit bfc_block_offset; |
+ LayoutUnit logical_block_offset; |
+ NGMarginStrut margin_strut; |
+}; |
+ |
+// This strut holds information for the current inflow child. The data is not |
+// useful outside of handling this single inflow child. |
+struct NGInflowChildData { |
+ NGLogicalOffset bfc_offset_estimate; |
+ NGMarginStrut margin_strut; |
+ NGBoxStrut margins; |
+}; |
// Updates the fragment's BFC offset if it's not already set. |
-void MaybeUpdateFragmentBfcOffset(const NGConstraintSpace&, |
+bool MaybeUpdateFragmentBfcOffset(const NGConstraintSpace&, |
LayoutUnit bfc_block_offset, |
NGFragmentBuilder* builder); |
// Positions pending floats starting from {@origin_block_offset} and relative |
// to container's BFC offset. |
-void PositionPendingFloats(LayoutUnit origin_block_offset, |
- NGFragmentBuilder* container_builder, |
- NGConstraintSpace* space); |
+void PositionPendingFloats( |
+ LayoutUnit origin_block_offset, |
+ NGFragmentBuilder* container_builder, |
+ Vector<RefPtr<NGUnpositionedFloat>>* unpositioned_floats, |
+ NGConstraintSpace* space); |
// A class for general block layout (e.g. a <div> with no special style). |
// Lays out the children in sequence. |
@@ -55,18 +71,21 @@ class CORE_EXPORT NGBlockLayoutAlgorithm |
// Creates a new constraint space for the current child. |
RefPtr<NGConstraintSpace> CreateConstraintSpaceForChild( |
const NGLayoutInputNode child, |
- const NGInflowChildData& child_data); |
+ const NGInflowChildData& child_data, |
+ const WTF::Optional<NGLogicalOffset> floats_bfc_offset = WTF::nullopt); |
// @return Estimated BFC offset for the "to be layout" child. |
- NGInflowChildData PrepareChildLayout(const NGPreviousInflowPosition&, |
- NGLayoutInputNode); |
+ WTF::Optional<NGInflowChildData> PrepareChildLayout( |
+ const NGPreviousInflowPosition&, |
+ NGLayoutInputNode); |
- NGPreviousInflowPosition FinishChildLayout( |
+ WTF::Optional<NGPreviousInflowPosition> FinishChildLayout( |
const NGConstraintSpace&, |
const NGPreviousInflowPosition& prev_data, |
const NGInflowChildData& child_data, |
- const NGLayoutInputNode child, |
- NGLayoutResult*); |
+ NGLayoutInputNode child, |
+ NGBreakToken* child_break_token, |
+ RefPtr<NGLayoutResult>); |
// Positions the fragment that establishes a new formatting context. |
// |
@@ -87,14 +106,18 @@ class CORE_EXPORT NGBlockLayoutAlgorithm |
// then it will be placed there and we collapse its margin. |
// 2) If #new-fc is too big then we need to clear its position and place it |
// below #float ignoring its vertical margin. |
- NGLogicalOffset PositionNewFc(const NGLayoutInputNode& child, |
- const NGPreviousInflowPosition&, |
- const NGBoxFragment&, |
- const NGInflowChildData& child_data, |
- const NGConstraintSpace& child_space); |
+ bool PositionNewFc(const NGLayoutInputNode& child, |
+ const NGPreviousInflowPosition&, |
+ const NGLayoutResult&, |
+ const NGInflowChildData& child_data, |
+ const NGConstraintSpace& child_space, |
+ WTF::Optional<NGLogicalOffset>* child_bfc_offset); |
// Positions the fragment that knows its BFC offset. |
- NGLogicalOffset PositionWithBfcOffset(const NGLogicalOffset& bfc_offset); |
+ WTF::Optional<NGLogicalOffset> PositionWithBfcOffset( |
+ const NGLogicalOffset& bfc_offset); |
+ bool PositionWithBfcOffset(const NGLogicalOffset& bfc_offset, |
+ WTF::Optional<NGLogicalOffset>* child_bfc_offset); |
// Positions using the parent BFC offset. |
// Fragment doesn't know its offset but we can still calculate its BFC |
@@ -137,6 +160,10 @@ class CORE_EXPORT NGBlockLayoutAlgorithm |
NGBoxStrut border_scrollbar_padding_; |
LayoutUnit content_size_; |
LayoutUnit max_inline_size_; |
+ |
+ bool abort_when_bfc_resolved_; |
+ |
+ Vector<RefPtr<NGUnpositionedFloat>> unpositioned_floats_; |
}; |
} // namespace blink |