| // Copyright 2020 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CONTENT_BROWSER_CONVERSIONS_CONVERSION_TEST_UTILS_H_ |
| #define CONTENT_BROWSER_CONVERSIONS_CONVERSION_TEST_UTILS_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/memory/scoped_refptr.h" |
| #include "base/sequenced_task_runner.h" |
| #include "base/time/time.h" |
| #include "content/browser/conversions/conversion_manager.h" |
| #include "content/browser/conversions/conversion_manager_impl.h" |
| #include "content/browser/conversions/conversion_report.h" |
| #include "content/browser/conversions/conversion_storage.h" |
| #include "content/browser/conversions/storable_conversion.h" |
| #include "content/browser/conversions/storable_impression.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| #include "url/origin.h" |
| |
| namespace content { |
| |
| class PassThroughStorageDelegate : public ConversionStorage::Delegate { |
| public: |
| PassThroughStorageDelegate() = default; |
| ~PassThroughStorageDelegate() override = default; |
| |
| // ConversionStorage::Delegate |
| void ProcessNewConversionReports( |
| std::vector<ConversionReport>* reports) override {} |
| |
| int GetMaxConversionsPerImpression() const override; |
| }; |
| |
| // Test ConversionManager which can be injected into tests to monitor calls to a |
| // ConversionManager instance. |
| class TestConversionManager : public ConversionManager { |
| public: |
| TestConversionManager() = default; |
| ~TestConversionManager() override = default; |
| |
| // ConversionManager: |
| void HandleImpression(const StorableImpression& impression) override; |
| void HandleConversion(const StorableConversion& conversion) override; |
| void HandleSentReport(int64_t conversion_id) override; |
| const ConversionPolicy& GetConversionPolicy() const override; |
| void ClearData(base::Time delete_begin, |
| base::Time delete_end, |
| base::RepeatingCallback<bool(const url::Origin&)> filter, |
| base::OnceClosure done) override; |
| |
| // Resets all counters on this. |
| void Reset(); |
| |
| size_t num_impressions() const { return num_impressions_; } |
| size_t num_conversions() const { return num_conversions_; } |
| |
| int64_t last_sent_report_id() { return last_sent_report_id_; } |
| |
| private: |
| ConversionPolicy policy_; |
| size_t num_impressions_ = 0; |
| size_t num_conversions_ = 0; |
| int64_t last_sent_report_id_ = 0L; |
| }; |
| |
| // Helper class to construct a StorableImpression for tests using default data. |
| // StorableImpression members are not mutable after construction requiring a |
| // builder pattern. |
| class ImpressionBuilder { |
| public: |
| explicit ImpressionBuilder(base::Time time); |
| ~ImpressionBuilder(); |
| |
| ImpressionBuilder& SetExpiry(base::TimeDelta delta); |
| |
| ImpressionBuilder& SetData(const std::string& data); |
| |
| ImpressionBuilder& SetImpressionOrigin(const url::Origin& origin); |
| |
| ImpressionBuilder& SetConversionOrigin(const url::Origin& origin); |
| |
| ImpressionBuilder& SetReportingOrigin(const url::Origin& origin); |
| |
| StorableImpression Build() const; |
| |
| private: |
| std::string impression_data_; |
| base::Time impression_time_; |
| base::TimeDelta expiry_; |
| url::Origin impression_origin_; |
| url::Origin conversion_origin_; |
| url::Origin reporting_origin_; |
| }; |
| |
| // Returns a StorableConversion with default data which matches the default |
| // impressions created by ImpressionBuilder. |
| StorableConversion DefaultConversion(); |
| |
| testing::AssertionResult ReportsEqual( |
| const std::vector<ConversionReport>& expected, |
| const std::vector<ConversionReport>& actual); |
| |
| std::vector<ConversionReport> GetConversionsToReportForTesting( |
| ConversionManagerImpl* manager, |
| base::Time max_report_time); |
| |
| } // namespace content |
| |
| #endif // CONTENT_BROWSER_CONVERSIONS_CONVERSION_TEST_UTILS_H_ |