diff options
Diffstat (limited to 'chromium/content/browser/conversions/conversion_test_utils.h')
-rw-r--r-- | chromium/content/browser/conversions/conversion_test_utils.h | 113 |
1 files changed, 107 insertions, 6 deletions
diff --git a/chromium/content/browser/conversions/conversion_test_utils.h b/chromium/content/browser/conversions/conversion_test_utils.h index 20b0c378cfd..80e569b5cfb 100644 --- a/chromium/content/browser/conversions/conversion_test_utils.h +++ b/chromium/content/browser/conversions/conversion_test_utils.h @@ -5,10 +5,15 @@ #ifndef CONTENT_BROWSER_CONVERSIONS_CONVERSION_TEST_UTILS_H_ #define CONTENT_BROWSER_CONVERSIONS_CONVERSION_TEST_UTILS_H_ +#include <list> #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" @@ -18,16 +23,105 @@ namespace content { -class EmptyStorageDelegate : public ConversionStorage::Delegate { +class ConfigurableStorageDelegate : public ConversionStorage::Delegate { public: - EmptyStorageDelegate() = default; - ~EmptyStorageDelegate() override = default; + using AttributionCredits = std::list<int>; + ConfigurableStorageDelegate(); + ~ConfigurableStorageDelegate() override; // ConversionStorage::Delegate void ProcessNewConversionReports( - std::vector<ConversionReport>* reports) override {} - + std::vector<ConversionReport>* reports) override; int GetMaxConversionsPerImpression() const override; + int GetMaxImpressionsPerOrigin() const override; + int GetMaxConversionsPerOrigin() const override; + + void set_max_conversions_per_impression(int max) { + max_conversions_per_impression_ = max; + } + + void set_max_impressions_per_origin(int max) { + max_impressions_per_origin_ = max; + } + + void set_max_conversions_per_origin(int max) { + max_conversions_per_origin_ = max; + } + + void set_report_time_ms(int report_time_ms) { + report_time_ms_ = report_time_ms; + } + + void AddCredits(AttributionCredits credits) { + // Add all credits to our list in order. + attribution_credits_.splice(attribution_credits_.end(), credits); + } + + private: + int max_conversions_per_impression_ = INT_MAX; + int max_impressions_per_origin_ = INT_MAX; + int max_conversions_per_origin_ = INT_MAX; + + int report_time_ms_ = 0; + + // List of attribution credits the test delegate should associate with + // reports. + AttributionCredits attribution_credits_; +}; + +// Test manager provider which can be used to inject a fake ConversionManager. +class TestManagerProvider : public ConversionManager::Provider { + public: + explicit TestManagerProvider(ConversionManager* manager) + : manager_(manager) {} + ~TestManagerProvider() override = default; + + ConversionManager* GetManager(WebContents* web_contents) const override; + + private: + ConversionManager* manager_ = nullptr; +}; + +// Test ConversionManager which can be injected into tests to monitor calls to a +// ConversionManager instance. +class TestConversionManager : public ConversionManager { + public: + TestConversionManager(); + ~TestConversionManager() override; + + // ConversionManager: + void HandleImpression(const StorableImpression& impression) override; + void HandleConversion(const StorableConversion& conversion) override; + void GetActiveImpressionsForWebUI( + base::OnceCallback<void(std::vector<StorableImpression>)> callback) + override; + void GetReportsForWebUI( + base::OnceCallback<void(std::vector<ConversionReport>)> callback, + base::Time max_report_time) override; + void SendReportsForWebUI(base::OnceClosure done) 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; + + void SetActiveImpressionsForWebUI( + std::vector<StorableImpression> impressions); + void SetReportsForWebUI(std::vector<ConversionReport> reports); + + // Resets all counters on this. + void Reset(); + + size_t num_impressions() const { return num_impressions_; } + size_t num_conversions() const { return num_conversions_; } + + private: + ConversionPolicy policy_; + size_t num_impressions_ = 0; + size_t num_conversions_ = 0; + + std::vector<StorableImpression> impressions_; + std::vector<ConversionReport> reports_; }; // Helper class to construct a StorableImpression for tests using default data. @@ -35,7 +129,7 @@ class EmptyStorageDelegate : public ConversionStorage::Delegate { // builder pattern. class ImpressionBuilder { public: - ImpressionBuilder(base::Time time); + explicit ImpressionBuilder(base::Time time); ~ImpressionBuilder(); ImpressionBuilder& SetExpiry(base::TimeDelta delta); @@ -63,10 +157,17 @@ class ImpressionBuilder { // impressions created by ImpressionBuilder. StorableConversion DefaultConversion(); +testing::AssertionResult ImpressionsEqual(const StorableImpression& expected, + const StorableImpression& actual); + 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_ |