chromium/third_party/blink/renderer/core/layout/anchor_query_map.h

// Copyright 2022 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_ANCHOR_QUERY_MAP_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_ANCHOR_QUERY_MAP_H_

#include "third_party/blink/renderer/core/core_export.h"

#include "third_party/blink/renderer/core/layout/anchor_evaluator_impl.h"
#include "third_party/blink/renderer/core/layout/inline/fragment_items_builder.h"
#include "third_party/blink/renderer/core/layout/logical_fragment_link.h"
#include "third_party/blink/renderer/platform/text/writing_direction_mode.h"

namespace blink {

class LayoutBox;
class LayoutObject;

// This computes anchor queries for each containing block by traversing
// descendants.
//
// Normally anchor queries are propagated to the containing block chain during
// the layout. However, there are some exceptions.
// 1. When the containing block is an inline box, all OOFs are added to their
// inline formatting context.
// 2. When the containing block is in block fragmentation context, all OOFs are
// added to their fragmentainers.
// In such cases, traversing descendants is needed to compute anchor queries.
class CORE_EXPORT LogicalAnchorQueryMap {};

}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_ANCHOR_QUERY_MAP_H_