blob: 6d6c553d044d9346c3f9f675bbfbdf54f381f04c [file] [log] [blame]
// 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.
#include "chrome/browser/privacy_budget/active_sampling.h"
#include "content/public/common/user_agent.h"
#include "services/metrics/public/cpp/ukm_recorder.h"
#include "services/metrics/public/cpp/ukm_source_id.h"
#include "third_party/blink/public/common/privacy_budget/identifiability_metric_builder.h"
#include "third_party/blink/public/common/privacy_budget/identifiability_sample_collector.h"
#include "third_party/blink/public/common/privacy_budget/identifiability_study_settings.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_token.h"
namespace {
void ActivelySampleUserAgentModel() {
ukm::SourceId ukm_source_id = ukm::NoURLSourceId();
content::BuildModelInfo();
auto identifiable_surface = blink::IdentifiableSurface::FromTypeAndToken(
blink::IdentifiableSurface::Type::kNavigatorUAData_GetHighEntropyValues,
blink::IdentifiableToken("model"));
ukm::UkmRecorder* ukm_recorder = ukm::UkmRecorder::Get();
if (!ukm_recorder) {
return;
}
blink::IdentifiabilityMetricBuilder(ukm_source_id)
.Add(identifiable_surface,
blink::IdentifiableToken(content::BuildModelInfo()))
.Record(ukm_recorder);
blink::IdentifiabilitySampleCollector::Get()->FlushSource(ukm_recorder,
ukm_source_id);
}
} // namespace
void ActivelySampleIdentifiableSurfaces() {
if (!blink::IdentifiabilityStudySettings::Get()->ShouldActivelySample())
return;
ActivelySampleUserAgentModel();
}