// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_BLOCK_CHILD_ITERATOR_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_BLOCK_CHILD_ITERATOR_H_ #include <optional> #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/layout/layout_input_node.h" namespace blink { class InlineBreakToken; class BreakToken; class BlockBreakToken; // A utility class for block-flow layout which given the first child and a // break token will iterate through unfinished children. // // NextChild() is used to iterate through the children. This will be done in // node order. If there are child break tokens, though, their nodes will be // processed first, in break token order (which may or may not be the same as // node order). When we're through those, we proceed to the next sibling node of // that of the last break token - unless we have already seen and started all // children (in which case the parent break token will be marked as such; // |HasSeenAllChildren()| will return true). // // This class does not handle modifications to its arguments after it has been // constructed. class CORE_EXPORT BlockChildIterator { … }; struct BlockChildIterator::Entry { … }; } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_BLOCK_CHILD_ITERATOR_H_