blob: a88c9bdbc4b296228864fc6cae9caa2ff31b56da [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/segmentation_platform/public/config.h"
#include <memory>
#include "base/strings/strcat.h"
#include "base/strings/string_util.h"
#include "components/segmentation_platform/public/constants.h"
#include "components/segmentation_platform/public/model_provider.h"
namespace segmentation_platform {
Config::SegmentMetadata::SegmentMetadata(const std::string& uma_name)
: uma_name(uma_name) {}
Config::SegmentMetadata::SegmentMetadata(
const std::string& uma_name,
std::unique_ptr<DefaultModelProvider> default_model)
: uma_name(uma_name), default_provider(std::move(default_model)) {}
Config::SegmentMetadata::SegmentMetadata(SegmentMetadata&& other) = default;
Config::SegmentMetadata::~SegmentMetadata() = default;
bool Config::SegmentMetadata::operator==(const SegmentMetadata& other) const {
return other.uma_name == uma_name;
}
Config::Config() = default;
Config::~Config() = default;
void Config::AddSegmentId(proto::SegmentId segment_id) {
AddSegmentId(segment_id, nullptr);
}
void Config::AddSegmentId(
proto::SegmentId segment_id,
std::unique_ptr<DefaultModelProvider> default_provider) {
auto it =
segments.insert({segment_id, std::make_unique<SegmentMetadata>(
SegmentIdToHistogramVariant(segment_id),
std::move(default_provider))});
DCHECK(it.second);
}
std::string Config::GetSegmentationFilterName() const {
return base::StrCat({"Segmentation_", segmentation_uma_name});
}
std::string Config::GetSegmentUmaName(proto::SegmentId segment) const {
std::string name = "Other";
auto it = segments.find(segment);
if (it == segments.end()) {
return "Other";
}
return it->second->uma_name;
}
} // namespace segmentation_platform