1 // Copyright 2024 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "components/metrics/dwa/dwa_entry_builder_base.h" 6 7 #include <memory> 8 #include <string> 9 #include <tuple> 10 11 #include "base/containers/flat_set.h" 12 #include "base/metrics/metrics_hashes.h" 13 #include "components/metrics/dwa/mojom/dwa_interface.mojom.h" 14 15 namespace dwa::internal { 16 17 DwaEntryBuilderBase::DwaEntryBuilderBase(DwaEntryBuilderBase&&) = default; 18 19 DwaEntryBuilderBase& DwaEntryBuilderBase::operator=(DwaEntryBuilderBase&&) = 20 default; 21 22 DwaEntryBuilderBase::~DwaEntryBuilderBase() = default; 23 DwaEntryBuilderBase(uint64_t event_hash)24DwaEntryBuilderBase::DwaEntryBuilderBase(uint64_t event_hash) 25 : entry_(metrics::dwa::mojom::DwaEntry::New()) { 26 entry_->event_hash = event_hash; 27 } 28 SetContentInternal(uint64_t content_hash)29void DwaEntryBuilderBase::SetContentInternal(uint64_t content_hash) { 30 entry_->content_hash = content_hash; 31 } 32 SetMetricInternal(uint64_t metric_hash,int64_t value)33void DwaEntryBuilderBase::SetMetricInternal(uint64_t metric_hash, 34 int64_t value) { 35 entry_->metrics.insert_or_assign(metric_hash, value); 36 } 37 AddToStudiesOfInterestInternal(std::string_view study_name)38void DwaEntryBuilderBase::AddToStudiesOfInterestInternal( 39 std::string_view study_name) { 40 entry_->studies_of_interest.insert_or_assign(std::string(study_name), true); 41 } 42 Record(metrics::dwa::DwaRecorder * recorder)43void DwaEntryBuilderBase::Record(metrics::dwa::DwaRecorder* recorder) { 44 if (recorder) { 45 recorder->AddEntry(std::move(entry_)); 46 } else { 47 entry_.reset(); 48 } 49 } 50 GetEntryForTesting()51metrics::dwa::mojom::DwaEntryPtr* DwaEntryBuilderBase::GetEntryForTesting() { 52 return &entry_; 53 } 54 55 } // namespace dwa::internal 56