chromium/components/enterprise/connectors/core/analysis_settings.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 COMPONENTS_ENTERPRISE_CONNECTORS_CORE_ANALYSIS_SETTINGS_H_
#define COMPONENTS_ENTERPRISE_CONNECTORS_CORE_ANALYSIS_SETTINGS_H_

#include <memory>
#include <string>
#include <vector>

#include "base/memory/raw_ptr.h"
#include "base/memory/raw_span.h"
#include "components/enterprise/common/proto/connectors.pb.h"
#include "components/enterprise/connectors/core/service_provider_config.h"
#include "third_party/abseil-cpp/absl/types/variant.h"
#include "url/gurl.h"

namespace enterprise_connectors {

// A struct representing a custom message and associated "learn more" URL. These
// are scoped to a tag.
struct CustomMessageData {};

// A struct representing tag-specific settings that are applied to an analysis
// which includes that tag.
struct TagSettings {};

// Enum representing if an analysis should block further interactions with the
// browser until its verdict is obtained.
enum class BlockUntilVerdict {};

// Enum representing if an analysis should block further interactions with the
// browser if an error occurs.
enum class DefaultAction {};

// Struct holding settings data specific to a cloud analysis.
struct CloudAnalysisSettings {};

// Struct holding settings data specific to a local analysis.
struct LocalAnalysisSettings {};

class CloudOrLocalAnalysisSettings
    : public absl::variant<CloudAnalysisSettings, LocalAnalysisSettings> {};

// Main struct holding settings data for the content analysis Connector.
struct AnalysisSettings {};

}  // namespace enterprise_connectors

#endif  // COMPONENTS_ENTERPRISE_CONNECTORS_CORE_ANALYSIS_SETTINGS_H_