| // 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/reporting/client/mock_report_queue.h" |
| |
| #include <utility> |
| |
| #include "testing/gmock/include/gmock/gmock.h" |
| |
| using ::testing::Invoke; |
| |
| namespace reporting { |
| |
| MockReportQueueStrict::MockReportQueueStrict() { |
| // Default action makes a synchronous call to record_producer and passes the |
| // result over to plain-text mock AddRecord. Can be overridden, if necessary. |
| ON_CALL(*this, AddProducedRecord) |
| .WillByDefault( |
| Invoke(this, &MockReportQueueStrict::ForwardProducedRecord)); |
| } |
| |
| MockReportQueueStrict::~MockReportQueueStrict() = default; |
| |
| void MockReportQueueStrict::ForwardProducedRecord( |
| RecordProducer record_producer, |
| Priority priority, |
| EnqueueCallback callback) { |
| auto record_result = std::move(record_producer).Run(); |
| if (!record_result.has_value()) { |
| std::move(callback).Run(record_result.error()); |
| return; |
| } |
| AddRecord(std::move(record_result.value()), priority, std::move(callback)); |
| } |
| } // namespace reporting |