summaryrefslogtreecommitdiff
path: root/chromium/content/browser/conversions/conversion_test_utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/conversions/conversion_test_utils.h')
-rw-r--r--chromium/content/browser/conversions/conversion_test_utils.h113
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_