chromium/third_party/blink/renderer/core/inspector/inspector_highlight.h

// Copyright 2015 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_INSPECTOR_INSPECTOR_HIGHLIGHT_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_INSPECTOR_INSPECTOR_HIGHLIGHT_H_

#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/dom/pseudo_element.h"
#include "third_party/blink/renderer/core/inspector/node_content_visibility_state.h"
#include "third_party/blink/renderer/core/inspector/protocol/dom.h"
#include "third_party/blink/renderer/platform/graphics/color.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
#include "ui/gfx/geometry/quad_f.h"

namespace blink {

class Color;

enum class ColorFormat {};
enum class ContrastAlgorithm {};

struct CORE_EXPORT LineStyle {};

struct CORE_EXPORT BoxStyle {};

struct CORE_EXPORT InspectorSourceOrderConfig {};

struct CORE_EXPORT InspectorGridHighlightConfig {};

struct CORE_EXPORT InspectorFlexContainerHighlightConfig {};

struct CORE_EXPORT InspectorScrollSnapContainerHighlightConfig {};

struct CORE_EXPORT InspectorContainerQueryContainerHighlightConfig {};

struct CORE_EXPORT InspectorFlexItemHighlightConfig {};

struct CORE_EXPORT InspectorIsolationModeHighlightConfig {};

struct CORE_EXPORT InspectorHighlightConfig {};

struct InspectorHighlightContrastInfo {};

class InspectorHighlightBase {};

class CORE_EXPORT InspectorSourceOrderHighlight
    : public InspectorHighlightBase {};

class CORE_EXPORT InspectorHighlight : public InspectorHighlightBase {};

std::unique_ptr<protocol::DictionaryValue> InspectorFlexContainerHighlight(
    Node* node,
    const InspectorFlexContainerHighlightConfig& config);

std::unique_ptr<protocol::DictionaryValue> InspectorScrollSnapHighlight(
    Node* node,
    const InspectorScrollSnapContainerHighlightConfig& config);

std::unique_ptr<protocol::DictionaryValue> InspectorContainerQueryHighlight(
    Node* node,
    const InspectorContainerQueryContainerHighlightConfig& config);

std::unique_ptr<protocol::DictionaryValue> InspectorIsolatedElementHighlight(
    Element* element,
    const InspectorIsolationModeHighlightConfig& config);

// CORE_EXPORT is required to make these functions available for unit tests.
std::unique_ptr<protocol::DictionaryValue> CORE_EXPORT
InspectorGridHighlight(Node*, const InspectorGridHighlightConfig& config);

std::unique_ptr<protocol::DictionaryValue> CORE_EXPORT
BuildSnapContainerInfo(Node* node);

std::unique_ptr<protocol::DictionaryValue> CORE_EXPORT
BuildContainerQueryContainerInfo(
    Node* node,
    const InspectorContainerQueryContainerHighlightConfig&
        container_query_container_highlight_config,
    float scale);

std::unique_ptr<protocol::DictionaryValue> CORE_EXPORT
BuildIsolatedElementInfo(Element& element,
                         const InspectorIsolationModeHighlightConfig& config,
                         float scale);

void CORE_EXPORT
AppendStyleInfo(Element* element,
                protocol::DictionaryValue* element_info,
                const InspectorHighlightContrastInfo& node_contrast,
                const ContrastAlgorithm& contrast_algorithm);

std::unique_ptr<protocol::DictionaryValue> CORE_EXPORT
BuildElementInfo(Element* element);
}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_INSPECTOR_INSPECTOR_HIGHLIGHT_H_