// Copyright 2021 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_FLEX_FLEX_ITEM_ITERATOR_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_FLEX_FLEX_ITEM_ITERATOR_H_ #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h" #include "third_party/blink/renderer/platform/wtf/vector.h" namespace blink { class BlockBreakToken; struct NGFlexItem; struct NGFlexLine; // A utility class for flexbox layout which given a list of flex lines and a // break token will iterate through unfinished flex items. // // NextItem() is used to iterate through the flex items. This will be done in // item order. If there are child break tokens, though, their nodes will be // processed first, in break token order. When we're through those, we proceed // to the next sibling item 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 FlexItemIterator { … }; struct FlexItemIterator::Entry { … }; } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_FLEX_FLEX_ITEM_ITERATOR_H_