// Copyright 2016 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_BREAK_TOKEN_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_BREAK_TOKEN_H_ #include "base/check_op.h" #include "base/dcheck_is_on.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/layout/layout_input_node.h" namespace blink { // A break token is a continuation token for layout. A single layout input node // can have multiple fragments asssociated with it. // // Each fragment whose node needs to resume layout in a future fragmentainer // (column, line, etc.) will have a break token associated with it. // // See CSS Fragmentation (https://drafts.csswg.org/css-break/) for a detailed // description of different types of breaks which can occur in CSS. // // Each layout algorithm which can fragment, e.g. block-flow can optionally // accept a break token. For example: // // LayoutInputNode* node = ...; // PhysicalFragment* fragment = node->Layout(space); // PhysicalFragment* fragment2 = // node->Layout(space, fragment->GetBreakToken()); // // The break token should encapsulate enough information to "resume" the layout. class CORE_EXPORT BreakToken : public GarbageCollected<BreakToken> { … }; BreakTokenVector; } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_BREAK_TOKEN_H_