chromium/components/feature_engagement/public/field_trial_utils.h

// Copyright 2024 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_FEATURE_ENGAGEMENT_PUBLIC_FIELD_TRIAL_UTILS_H_
#define COMPONENTS_FEATURE_ENGAGEMENT_PUBLIC_FIELD_TRIAL_UTILS_H_

#include <set>
#include <string>

#include "base/feature_list.h"
#include "base/memory/raw_ref.h"
#include "components/feature_engagement/public/feature_list.h"
#include "components/feature_engagement/public/group_list.h"

namespace feature_engagement {

struct BlockedBy;
struct Blocking;
struct Comparator;
struct EventConfig;
struct SessionRateImpact;
struct SnoozeParams;

// Holds all the possible fields that can be parsed. The parsing code will fill
// the provided items with parsed data. If any field is null, then it won't be
// parsed.
struct ConfigParseOutput {};

void ParseConfigFields(const base::Feature* feature,
                       std::map<std::string, std::string> params,
                       ConfigParseOutput& output,
                       const FeatureVector& known_features,
                       const GroupVector& known_groups);

}  // namespace feature_engagement

#endif  // COMPONENTS_FEATURE_ENGAGEMENT_PUBLIC_FIELD_TRIAL_UTILS_H_