Move enqueue logging and custom enqueue cb to MetricReportQueue.

This will help in splitting the collectors into multiple files in
the next CL.

Bug: b:258554147
Change-Id: I82ec56093268faffdc50edb42094e3e11c704eab
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4021399
Commit-Queue: Ahmed Nasr <[email protected]>
Reviewed-by: Leonid Baraz <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1070493}
diff --git a/components/reporting/metrics/fakes/fake_metric_report_queue.cc b/components/reporting/metrics/fakes/fake_metric_report_queue.cc
index d693bc5..76be0da 100644
--- a/components/reporting/metrics/fakes/fake_metric_report_queue.cc
+++ b/components/reporting/metrics/fakes/fake_metric_report_queue.cc
@@ -5,15 +5,18 @@
 #include "components/reporting/metrics/fakes/fake_metric_report_queue.h"
 
 #include <memory>
+#include <string>
 #include <vector>
 
 #include "base/task/sequenced_task_runner.h"
 #include "base/threading/sequenced_task_runner_handle.h"
+#include "base/time/time.h"
+#include "components/reporting/client/report_queue.h"
+#include "components/reporting/metrics/reporting_settings.h"
+#include "components/reporting/proto/synced/metric_data.pb.h"
 #include "components/reporting/proto/synced/record_constants.pb.h"
-#include "components/reporting/util/status.h"
 
-namespace reporting {
-namespace test {
+namespace reporting::test {
 
 FakeMetricReportQueue::FakeMetricReportQueue(Priority priority)
     : MetricReportQueue(std::unique_ptr<ReportQueue, base::OnTaskRunnerDeleter>(
@@ -38,9 +41,8 @@
                         default_rate,
                         rate_unit_to_ms) {}
 
-void FakeMetricReportQueue::Enqueue(
-    std::unique_ptr<const MetricData> metric_data,
-    ReportQueue::EnqueueCallback callback) {
+void FakeMetricReportQueue::Enqueue(MetricData metric_data,
+                                    ReportQueue::EnqueueCallback callback) {
   reported_data_.emplace_back(std::move(metric_data));
   std::move(callback).Run(Status());
 }
@@ -51,13 +53,12 @@
   num_flush_++;
 }
 
-const std::vector<std::unique_ptr<const MetricData>>&
-FakeMetricReportQueue::GetMetricDataReported() const {
+const std::vector<MetricData>& FakeMetricReportQueue::GetMetricDataReported()
+    const {
   return reported_data_;
 }
 
 int FakeMetricReportQueue::GetNumFlush() const {
   return num_flush_;
 }
-}  // namespace test
-}  // namespace reporting
+}  // namespace reporting::test
diff --git a/components/reporting/metrics/fakes/fake_metric_report_queue.h b/components/reporting/metrics/fakes/fake_metric_report_queue.h
index ac38a769..b61688c 100644
--- a/components/reporting/metrics/fakes/fake_metric_report_queue.h
+++ b/components/reporting/metrics/fakes/fake_metric_report_queue.h
@@ -5,15 +5,17 @@
 #ifndef COMPONENTS_REPORTING_METRICS_FAKES_FAKE_METRIC_REPORT_QUEUE_H_
 #define COMPONENTS_REPORTING_METRICS_FAKES_FAKE_METRIC_REPORT_QUEUE_H_
 
-#include <memory>
+#include <string>
 #include <vector>
 
-#include "components/reporting/client/report_queue.h"
+#include "base/functional/callback_helpers.h"
+#include "base/time/time.h"
 #include "components/reporting/metrics/metric_report_queue.h"
+#include "components/reporting/metrics/reporting_settings.h"
 #include "components/reporting/proto/synced/metric_data.pb.h"
+#include "components/reporting/proto/synced/record_constants.pb.h"
 
-namespace reporting {
-namespace test {
+namespace reporting::test {
 
 class FakeMetricReportQueue : public MetricReportQueue {
  public:
@@ -30,22 +32,21 @@
 
   ~FakeMetricReportQueue() override;
 
-  void Enqueue(std::unique_ptr<const MetricData> metric_data,
-               ReportQueue::EnqueueCallback callback) override;
+  void Enqueue(
+      MetricData metric_data,
+      ReportQueue::EnqueueCallback callback = base::DoNothing()) override;
 
-  const std::vector<std::unique_ptr<const MetricData>>& GetMetricDataReported()
-      const;
+  const std::vector<MetricData>& GetMetricDataReported() const;
 
   int GetNumFlush() const;
 
  private:
   void Flush() override;
 
-  std::vector<std::unique_ptr<const MetricData>> reported_data_;
+  std::vector<MetricData> reported_data_;
 
   int num_flush_ = 0;
 };
-}  // namespace test
-}  // namespace reporting
+}  // namespace reporting::test
 
 #endif  // COMPONENTS_REPORTING_METRICS_FAKES_FAKE_METRIC_REPORT_QUEUE_H_
diff --git a/components/reporting/metrics/metric_data_collector.cc b/components/reporting/metrics/metric_data_collector.cc
index f62a4ea..684d957b 100644
--- a/components/reporting/metrics/metric_data_collector.cc
+++ b/components/reporting/metrics/metric_data_collector.cc
@@ -7,39 +7,15 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "base/functional/callback_helpers.h"
-#include "base/logging.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/task/bind_post_task.h"
 #include "base/threading/sequenced_task_runner_handle.h"
-#include "components/reporting/metrics/event_driven_telemetry_sampler_pool.h"
+#include "components/reporting/client/report_queue.h"
 #include "components/reporting/metrics/metric_rate_controller.h"
 #include "components/reporting/metrics/metric_report_queue.h"
 #include "components/reporting/metrics/metric_reporting_controller.h"
-#include "components/reporting/metrics/multi_samplers_collector.h"
-#include "components/reporting/util/status.h"
 
 namespace reporting {
-namespace {
-
-void ReportMetricData(MetricReportQueue* metric_report_queue,
-                      MetricData metric_data,
-                      base::OnceClosure on_data_reported = base::DoNothing()) {
-  auto enqueue_cb = base::BindOnce(
-      [](base::OnceClosure on_data_reported, Status status) {
-        if (!status.ok()) {
-          DVLOG(1) << "Could not enqueue event to reporting queue because of: "
-                   << status;
-        }
-        std::move(on_data_reported).Run();
-      },
-      std::move(on_data_reported));
-  metric_report_queue->Enqueue(
-      std::make_unique<MetricData>(std::move(metric_data)),
-      std::move(enqueue_cb));
-}
-
-}  // namespace
 
 CollectorBase::CollectorBase(Sampler* sampler) : sampler_(sampler) {}
 
@@ -57,12 +33,13 @@
       base::SequencedTaskRunnerHandle::Get(), std::move(on_collected_cb)));
 }
 
-OneShotCollector::OneShotCollector(Sampler* sampler,
-                                   MetricReportQueue* metric_report_queue,
-                                   ReportingSettings* reporting_settings,
-                                   const std::string& setting_path,
-                                   bool setting_enabled_default_value,
-                                   base::OnceClosure on_data_reported)
+OneShotCollector::OneShotCollector(
+    Sampler* sampler,
+    MetricReportQueue* metric_report_queue,
+    ReportingSettings* reporting_settings,
+    const std::string& setting_path,
+    bool setting_enabled_default_value,
+    ReportQueue::EnqueueCallback on_data_reported)
     : CollectorBase(sampler),
       metric_report_queue_(metric_report_queue),
       on_data_reported_(std::move(on_data_reported)) {
@@ -93,8 +70,8 @@
   }
 
   metric_data->set_timestamp_ms(base::Time::Now().ToJavaTime());
-  ReportMetricData(metric_report_queue_, std::move(metric_data.value()),
-                   std::move(on_data_reported_));
+  metric_report_queue_->Enqueue(std::move(metric_data.value()),
+                                std::move(on_data_reported_));
 }
 
 PeriodicCollector::PeriodicCollector(Sampler* sampler,
@@ -133,7 +110,7 @@
   }
 
   metric_data->set_timestamp_ms(base::Time::Now().ToJavaTime());
-  ReportMetricData(metric_report_queue_, std::move(metric_data.value()));
+  metric_report_queue_->Enqueue(std::move(metric_data.value()));
 }
 
 void PeriodicCollector::StartPeriodicCollection() {
diff --git a/components/reporting/metrics/metric_data_collector.h b/components/reporting/metrics/metric_data_collector.h
index 7b3b858..1226a4c 100644
--- a/components/reporting/metrics/metric_data_collector.h
+++ b/components/reporting/metrics/metric_data_collector.h
@@ -9,14 +9,12 @@
 #include <string>
 #include <vector>
 
-#include "base/callback_forward.h"
 #include "base/callback_helpers.h"
 #include "base/memory/raw_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/sequence_checker.h"
 #include "base/time/time.h"
 #include "components/reporting/client/report_queue.h"
-#include "components/reporting/metrics/event_driven_telemetry_sampler_pool.h"
 #include "components/reporting/metrics/sampler.h"
 #include "components/reporting/proto/synced/metric_data.pb.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
@@ -56,12 +54,13 @@
 // setting is enabled.
 class OneShotCollector : public CollectorBase {
  public:
-  OneShotCollector(Sampler* sampler,
-                   MetricReportQueue* metric_report_queue,
-                   ReportingSettings* reporting_settings,
-                   const std::string& setting_path,
-                   bool setting_enabled_default_value,
-                   base::OnceClosure on_data_reported = base::DoNothing());
+  OneShotCollector(
+      Sampler* sampler,
+      MetricReportQueue* metric_report_queue,
+      ReportingSettings* reporting_settings,
+      const std::string& setting_path,
+      bool setting_enabled_default_value,
+      ReportQueue::EnqueueCallback on_data_reported = base::DoNothing());
 
   OneShotCollector(const OneShotCollector& other) = delete;
   OneShotCollector& operator=(const OneShotCollector& other) = delete;
@@ -78,7 +77,7 @@
 
   std::unique_ptr<MetricReportingController> reporting_controller_;
 
-  base::OnceClosure on_data_reported_;
+  ReportQueue::EnqueueCallback on_data_reported_;
 
   bool data_collected_ = false;
 };
diff --git a/components/reporting/metrics/metric_data_collector_unittest.cc b/components/reporting/metrics/metric_data_collector_unittest.cc
index 839ca7b3..38e7b3f 100644
--- a/components/reporting/metrics/metric_data_collector_unittest.cc
+++ b/components/reporting/metrics/metric_data_collector_unittest.cc
@@ -19,6 +19,7 @@
 #include "components/reporting/metrics/fakes/fake_sampler.h"
 #include "components/reporting/metrics/metric_report_queue.h"
 #include "components/reporting/proto/synced/metric_data.pb.h"
+#include "components/reporting/util/status.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
@@ -60,12 +61,12 @@
   sampler_->SetMetricData(std::move(metric_data));
   bool callback_called = false;
 
-  OneShotCollector collector(sampler_.get(), metric_report_queue_.get(),
-                             settings_.get(), kEnableSettingPath,
-                             /*setting_enabled_default_value=*/false,
-                             base::BindLambdaForTesting([&callback_called]() {
-                               callback_called = true;
-                             }));
+  OneShotCollector collector(
+      sampler_.get(), metric_report_queue_.get(), settings_.get(),
+      kEnableSettingPath,
+      /*setting_enabled_default_value=*/false,
+      base::BindLambdaForTesting(
+          [&callback_called](Status) { callback_called = true; }));
 
   // Setting is initially enabled, data is being collected.
   EXPECT_EQ(sampler_->GetNumCollectCalls(), 1);
@@ -83,8 +84,8 @@
 
   ASSERT_THAT(metric_data_reported, ::testing::SizeIs(1));
   EXPECT_TRUE(callback_called);
-  EXPECT_TRUE(metric_data_reported[0]->has_timestamp_ms());
-  EXPECT_TRUE(metric_data_reported[0]->has_info_data());
+  EXPECT_TRUE(metric_data_reported[0].has_timestamp_ms());
+  EXPECT_TRUE(metric_data_reported[0].has_info_data());
 }
 
 TEST_F(MetricDataCollectorTest, OneShotCollector_NoMetricData) {
@@ -93,12 +94,12 @@
   sampler_->SetMetricData(absl::nullopt);
   bool callback_called = false;
 
-  OneShotCollector collector(sampler_.get(), metric_report_queue_.get(),
-                             settings_.get(), kEnableSettingPath,
-                             /*setting_enabled_default_value=*/false,
-                             base::BindLambdaForTesting([&callback_called]() {
-                               callback_called = true;
-                             }));
+  OneShotCollector collector(
+      sampler_.get(), metric_report_queue_.get(), settings_.get(),
+      kEnableSettingPath,
+      /*setting_enabled_default_value=*/false,
+      base::BindLambdaForTesting(
+          [&callback_called](Status) { callback_called = true; }));
 
   // Setting is initially enabled, data is being collected.
   EXPECT_EQ(sampler_->GetNumCollectCalls(), 1);
@@ -141,8 +142,8 @@
       metric_report_queue_->GetMetricDataReported();
 
   ASSERT_THAT(metric_data_reported, ::testing::SizeIs(1));
-  EXPECT_TRUE(metric_data_reported[0]->has_timestamp_ms());
-  EXPECT_TRUE(metric_data_reported[0]->has_info_data());
+  EXPECT_TRUE(metric_data_reported[0].has_timestamp_ms());
+  EXPECT_TRUE(metric_data_reported[0].has_info_data());
 }
 
 TEST_F(MetricDataCollectorTest, OneShotCollector_DefaultEnabled) {
@@ -151,12 +152,12 @@
   sampler_->SetMetricData(std::move(metric_data));
   bool callback_called = false;
 
-  OneShotCollector collector(sampler_.get(), metric_report_queue_.get(),
-                             settings_.get(), "invalid/path",
-                             /*setting_enabled_default_value=*/true,
-                             base::BindLambdaForTesting([&callback_called]() {
-                               callback_called = true;
-                             }));
+  OneShotCollector collector(
+      sampler_.get(), metric_report_queue_.get(), settings_.get(),
+      "invalid/path",
+      /*setting_enabled_default_value=*/true,
+      base::BindLambdaForTesting(
+          [&callback_called](Status) { callback_called = true; }));
 
   // Setting is enabled by default, data is being collected.
   EXPECT_EQ(sampler_->GetNumCollectCalls(), 1);
@@ -167,8 +168,8 @@
 
   ASSERT_THAT(metric_data_reported, ::testing::SizeIs(1));
   EXPECT_TRUE(callback_called);
-  EXPECT_TRUE(metric_data_reported[0]->has_timestamp_ms());
-  EXPECT_TRUE(metric_data_reported[0]->has_info_data());
+  EXPECT_TRUE(metric_data_reported[0].has_timestamp_ms());
+  EXPECT_TRUE(metric_data_reported[0].has_info_data());
 }
 
 TEST_F(MetricDataCollectorTest, OneShotCollector_DefaultDisabled) {
@@ -252,12 +253,12 @@
 
   ASSERT_THAT(metric_data_reported, ::testing::SizeIs(5));
   for (int i = 0; i < 5; ++i) {
-    EXPECT_TRUE(metric_data_reported[i]->has_timestamp_ms());
-    EXPECT_EQ(metric_data_reported[i]->has_telemetry_data(),
+    EXPECT_TRUE(metric_data_reported[i].has_timestamp_ms());
+    EXPECT_EQ(metric_data_reported[i].has_telemetry_data(),
               metric_data[i].has_telemetry_data());
-    EXPECT_EQ(metric_data_reported[i]->has_info_data(),
+    EXPECT_EQ(metric_data_reported[i].has_info_data(),
               metric_data[i].has_info_data());
-    EXPECT_EQ(metric_data_reported[i]->has_event_data(),
+    EXPECT_EQ(metric_data_reported[i].has_event_data(),
               metric_data[i].has_event_data());
   }
 }
@@ -316,10 +317,10 @@
       metric_report_queue_->GetMetricDataReported();
 
   ASSERT_THAT(metric_data_reported, ::testing::SizeIs(2));
-  EXPECT_TRUE(metric_data_reported[0]->has_timestamp_ms());
-  EXPECT_TRUE(metric_data_reported[0]->has_telemetry_data());
-  EXPECT_TRUE(metric_data_reported[1]->has_timestamp_ms());
-  EXPECT_TRUE(metric_data_reported[1]->has_telemetry_data());
+  EXPECT_TRUE(metric_data_reported[0].has_timestamp_ms());
+  EXPECT_TRUE(metric_data_reported[0].has_telemetry_data());
+  EXPECT_TRUE(metric_data_reported[1].has_timestamp_ms());
+  EXPECT_TRUE(metric_data_reported[1].has_telemetry_data());
 }
 
 TEST_F(MetricDataCollectorTest, PeriodicCollector_DefaultEnabled) {
@@ -352,11 +353,11 @@
       metric_report_queue_->GetMetricDataReported();
 
   ASSERT_THAT(metric_data_reported, ::testing::SizeIs(2));
-  EXPECT_TRUE(metric_data_reported[0]->has_timestamp_ms());
-  EXPECT_TRUE(metric_data_reported[0]->has_telemetry_data());
-  EXPECT_TRUE(metric_data_reported[1]->has_timestamp_ms());
-  EXPECT_FALSE(metric_data_reported[1]->has_telemetry_data());
-  EXPECT_TRUE(metric_data_reported[1]->has_event_data());
+  EXPECT_TRUE(metric_data_reported[0].has_timestamp_ms());
+  EXPECT_TRUE(metric_data_reported[0].has_telemetry_data());
+  EXPECT_TRUE(metric_data_reported[1].has_timestamp_ms());
+  EXPECT_FALSE(metric_data_reported[1].has_telemetry_data());
+  EXPECT_TRUE(metric_data_reported[1].has_event_data());
 }
 
 TEST_F(MetricDataCollectorTest, PeriodicCollector_DefaultDisabled) {
diff --git a/components/reporting/metrics/metric_event_observer_manager.cc b/components/reporting/metrics/metric_event_observer_manager.cc
index a61403c..69f73d8b 100644
--- a/components/reporting/metrics/metric_event_observer_manager.cc
+++ b/components/reporting/metrics/metric_event_observer_manager.cc
@@ -9,7 +9,6 @@
 #include <vector>
 
 #include "base/bind.h"
-#include "base/logging.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/task/bind_post_task.h"
 #include "base/threading/sequenced_task_runner_handle.h"
@@ -22,7 +21,6 @@
 #include "components/reporting/metrics/multi_samplers_collector.h"
 #include "components/reporting/metrics/reporting_settings.h"
 #include "components/reporting/metrics/sampler.h"
-#include "components/reporting/util/status.h"
 
 namespace reporting {
 
@@ -94,15 +92,6 @@
     metric_data.CheckTypeAndMergeFrom(telemetry_data.value());
   }
 
-  auto enqueue_cb = base::BindOnce([](Status status) {
-    if (!status.ok()) {
-      DVLOG(1)
-          << "Could not enqueue observed event to reporting queue because of: "
-          << status;
-    }
-  });
-  metric_report_queue_->Enqueue(
-      std::make_unique<MetricData>(std::move(metric_data)),
-      std::move(enqueue_cb));
+  metric_report_queue_->Enqueue(std::move(metric_data));
 }
 }  // namespace reporting
diff --git a/components/reporting/metrics/metric_event_observer_manager_unittest.cc b/components/reporting/metrics/metric_event_observer_manager_unittest.cc
index 52009ac..aee1ed48 100644
--- a/components/reporting/metrics/metric_event_observer_manager_unittest.cc
+++ b/components/reporting/metrics/metric_event_observer_manager_unittest.cc
@@ -66,8 +66,8 @@
     const auto& metric_data_reported =
         metric_report_queue_->GetMetricDataReported();
     ASSERT_THAT(metric_data_reported, ::testing::SizeIs(i + 1));
-    EXPECT_TRUE(metric_data_reported[i]->has_timestamp_ms());
-    EXPECT_TRUE(metric_data_reported[i]->has_event_data());
+    EXPECT_TRUE(metric_data_reported[i].has_timestamp_ms());
+    EXPECT_TRUE(metric_data_reported[i].has_event_data());
   }
 
   // Setting disabled, no more data should be reported even if the callback is
@@ -106,7 +106,7 @@
   const auto& metric_data_reported =
       metric_report_queue_->GetMetricDataReported();
   ASSERT_THAT(metric_data_reported, ::testing::SizeIs(1));
-  EXPECT_TRUE(metric_data_reported[0]->has_event_data());
+  EXPECT_TRUE(metric_data_reported[0].has_event_data());
 }
 
 TEST_F(MetricEventObserverManagerTest, DefaultEnabled) {
@@ -126,8 +126,8 @@
   const auto& metric_data_reported =
       metric_report_queue_->GetMetricDataReported();
   ASSERT_THAT(metric_data_reported, ::testing::SizeIs(1));
-  EXPECT_TRUE(metric_data_reported[0]->has_timestamp_ms());
-  EXPECT_TRUE(metric_data_reported[0]->has_event_data());
+  EXPECT_TRUE(metric_data_reported[0].has_timestamp_ms());
+  EXPECT_TRUE(metric_data_reported[0].has_event_data());
 }
 
 TEST_F(MetricEventObserverManagerTest, DefaultDisabled) {
@@ -192,14 +192,14 @@
       metric_report_queue_->GetMetricDataReported();
 
   ASSERT_THAT(metric_data_reported, ::testing::SizeIs(1));
-  EXPECT_TRUE(metric_data_reported[0]->has_timestamp_ms());
-  EXPECT_TRUE(metric_data_reported[0]->has_event_data());
-  ASSERT_TRUE(metric_data_reported[0]->has_telemetry_data());
-  EXPECT_TRUE(metric_data_reported[0]->telemetry_data().has_audio_telemetry());
+  EXPECT_TRUE(metric_data_reported[0].has_timestamp_ms());
+  EXPECT_TRUE(metric_data_reported[0].has_event_data());
+  ASSERT_TRUE(metric_data_reported[0].has_telemetry_data());
+  EXPECT_TRUE(metric_data_reported[0].telemetry_data().has_audio_telemetry());
   EXPECT_FALSE(
-      metric_data_reported[0]->telemetry_data().has_peripherals_telemetry());
+      metric_data_reported[0].telemetry_data().has_peripherals_telemetry());
   EXPECT_TRUE(
-      metric_data_reported[0]->telemetry_data().has_networks_telemetry());
+      metric_data_reported[0].telemetry_data().has_networks_telemetry());
 }
 
 }  // namespace
diff --git a/components/reporting/metrics/metric_report_queue.cc b/components/reporting/metrics/metric_report_queue.cc
index 47a4e97..9333c35 100644
--- a/components/reporting/metrics/metric_report_queue.cc
+++ b/components/reporting/metrics/metric_report_queue.cc
@@ -4,7 +4,7 @@
 
 #include "components/reporting/metrics/metric_report_queue.h"
 
-#include "base/bind.h"
+#include "base/functional/bind.h"
 #include "base/logging.h"
 #include "components/reporting/metrics/metric_rate_controller.h"
 #include "components/reporting/metrics/reporting_settings.h"
@@ -34,10 +34,19 @@
 
 MetricReportQueue::~MetricReportQueue() = default;
 
-void MetricReportQueue::Enqueue(std::unique_ptr<const MetricData> metric_data,
+void MetricReportQueue::Enqueue(MetricData metric_data,
                                 ReportQueue::EnqueueCallback callback) {
-  report_queue_->Enqueue(std::move(metric_data), priority_,
-                         std::move(callback));
+  auto enqueue_cb = base::BindOnce(
+      [](ReportQueue::EnqueueCallback callback, Status status) {
+        if (!status.ok()) {
+          DVLOG(1) << "Could not enqueue to reporting queue because of: "
+                   << status;
+        }
+        std::move(callback).Run(std::move(status));
+      },
+      std::move(callback));
+  report_queue_->Enqueue(std::make_unique<MetricData>(std::move(metric_data)),
+                         priority_, std::move(enqueue_cb));
 }
 
 void MetricReportQueue::Upload() {
diff --git a/components/reporting/metrics/metric_report_queue.h b/components/reporting/metrics/metric_report_queue.h
index c0a6920e..1f450c8f 100644
--- a/components/reporting/metrics/metric_report_queue.h
+++ b/components/reporting/metrics/metric_report_queue.h
@@ -8,6 +8,7 @@
 #include <memory>
 #include <string>
 
+#include "base/functional/callback_helpers.h"
 #include "base/task/sequenced_task_runner.h"
 #include "base/time/time.h"
 #include "components/reporting/client/report_queue.h"
@@ -43,8 +44,9 @@
   virtual ~MetricReportQueue();
 
   // Enqueue the metric data.
-  virtual void Enqueue(std::unique_ptr<const MetricData> metric_data,
-                       ReportQueue::EnqueueCallback callback);
+  virtual void Enqueue(
+      MetricData metric_data,
+      ReportQueue::EnqueueCallback callback = base::DoNothing());
 
   // Initiate manual upload of records with `priority_` and restart timer if
   // exists.
diff --git a/components/reporting/metrics/metric_report_queue_unittest.cc b/components/reporting/metrics/metric_report_queue_unittest.cc
index 8515e8b..c9e3bf58 100644
--- a/components/reporting/metrics/metric_report_queue_unittest.cc
+++ b/components/reporting/metrics/metric_report_queue_unittest.cc
@@ -47,17 +47,15 @@
 };
 
 TEST_F(MetricReportQueueTest, ManualUpload) {
-  auto mock_queue =
-      std::unique_ptr<MockReportQueueStrict, base::OnTaskRunnerDeleter>(
-          new MockReportQueueStrict(),
-          base::OnTaskRunnerDeleter(
-              base::ThreadPool::CreateSequencedTaskRunner({})));
+  auto mock_queue = std::unique_ptr<MockReportQueue, base::OnTaskRunnerDeleter>(
+      new MockReportQueue(),
+      base::OnTaskRunnerDeleter(
+          base::ThreadPool::CreateSequencedTaskRunner({})));
   auto* mock_queue_ptr = mock_queue.get();
   MetricData record;
   record.set_timestamp_ms(123456);
 
   MetricReportQueue metric_report_queue(std::move(mock_queue), priority_);
-
   EXPECT_CALL(*mock_queue_ptr, AddRecord(_, _, _))
       .WillOnce([&record, this](base::StringPiece record_string,
                                 Priority actual_priority,
@@ -72,9 +70,8 @@
       });
   bool callback_called = false;
   metric_report_queue.Enqueue(
-      std::make_unique<MetricData>(record),
-      base::BindLambdaForTesting(
-          [&callback_called](Status) { callback_called = true; }));
+      record, base::BindLambdaForTesting(
+                  [&callback_called](Status) { callback_called = true; }));
   EXPECT_TRUE(callback_called);
 
   EXPECT_CALL(*mock_queue_ptr, Flush(priority_, _)).Times(1);
@@ -111,9 +108,8 @@
       });
   bool callback_called = false;
   metric_report_queue.Enqueue(
-      std::make_unique<MetricData>(record),
-      base::BindLambdaForTesting(
-          [&callback_called](Status) { callback_called = true; }));
+      record, base::BindLambdaForTesting(
+                  [&callback_called](Status) { callback_called = true; }));
   EXPECT_TRUE(callback_called);
 
   ON_CALL(*mock_queue_ptr, Flush(priority_, _)).WillByDefault([&]() {
@@ -135,11 +131,10 @@
 
 TEST_F(MetricReportQueueTest, RateControlledFlush_TimeNotElapsed) {
   settings_->SetInteger(kRateSettingPath, kRateMs);
-  auto mock_queue =
-      std::unique_ptr<MockReportQueueStrict, base::OnTaskRunnerDeleter>(
-          new MockReportQueueStrict(),
-          base::OnTaskRunnerDeleter(
-              base::ThreadPool::CreateSequencedTaskRunner({})));
+  auto mock_queue = std::unique_ptr<MockReportQueue, base::OnTaskRunnerDeleter>(
+      new MockReportQueue(),
+      base::OnTaskRunnerDeleter(
+          base::ThreadPool::CreateSequencedTaskRunner({})));
   auto* mock_queue_ptr = mock_queue.get();
   MetricData record;
   record.set_timestamp_ms(123456);
@@ -162,9 +157,8 @@
       });
   bool callback_called = false;
   metric_report_queue.Enqueue(
-      std::make_unique<MetricData>(record),
-      base::BindLambdaForTesting(
-          [&callback_called](Status) { callback_called = true; }));
+      record, base::BindLambdaForTesting(
+                  [&callback_called](Status) { callback_called = true; }));
   EXPECT_TRUE(callback_called);
 
   EXPECT_CALL(*mock_queue_ptr, Flush).Times(0);
@@ -173,11 +167,10 @@
 
 TEST_F(MetricReportQueueTest, RateControlledFlush_TimeElapsed) {
   settings_->SetInteger(kRateSettingPath, kRateMs);
-  auto mock_queue =
-      std::unique_ptr<MockReportQueueStrict, base::OnTaskRunnerDeleter>(
-          new MockReportQueueStrict(),
-          base::OnTaskRunnerDeleter(
-              base::ThreadPool::CreateSequencedTaskRunner({})));
+  auto mock_queue = std::unique_ptr<MockReportQueue, base::OnTaskRunnerDeleter>(
+      new MockReportQueue(),
+      base::OnTaskRunnerDeleter(
+          base::ThreadPool::CreateSequencedTaskRunner({})));
   auto* mock_queue_ptr = mock_queue.get();
   MetricData record;
   record.set_timestamp_ms(123456);
@@ -200,9 +193,8 @@
       });
   bool callback_called = false;
   metric_report_queue.Enqueue(
-      std::make_unique<MetricData>(record),
-      base::BindLambdaForTesting(
-          [&callback_called](Status) { callback_called = true; }));
+      record, base::BindLambdaForTesting(
+                  [&callback_called](Status) { callback_called = true; }));
   EXPECT_TRUE(callback_called);
 
   EXPECT_CALL(*mock_queue_ptr, Flush(priority_, _)).Times(1);