Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(660)

Unified Diff: net/reporting/reporting_test_util.cc

Issue 2751103002: Reporting: Wrap existing classes in context. (Closed)
Patch Set: rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/reporting/reporting_test_util.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/reporting/reporting_test_util.cc
diff --git a/net/reporting/reporting_test_util.cc b/net/reporting/reporting_test_util.cc
index 5f59c449953353e774df7d718c3a31caf85dae9a..946e1e0bd5e9044575872b59ab96ef497b2e60d8 100644
--- a/net/reporting/reporting_test_util.cc
+++ b/net/reporting/reporting_test_util.cc
@@ -4,15 +4,77 @@
#include "net/reporting/reporting_test_util.h"
+#include <memory>
+#include <string>
#include <vector>
+#include "base/bind.h"
+#include "base/json/json_reader.h"
+#include "base/memory/ptr_util.h"
+#include "base/test/simple_test_clock.h"
+#include "base/test/simple_test_tick_clock.h"
#include "net/reporting/reporting_cache.h"
#include "net/reporting/reporting_client.h"
+#include "net/reporting/reporting_context.h"
+#include "net/reporting/reporting_delegate.h"
+#include "net/reporting/reporting_policy.h"
+#include "net/reporting/reporting_uploader.h"
+#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
#include "url/origin.h"
namespace net {
+namespace {
+
+class PendingUploadImpl : public TestReportingUploader::PendingUpload {
+ public:
+ PendingUploadImpl(
+ const GURL& url,
+ const std::string& json,
+ const ReportingUploader::Callback& callback,
+ const base::Callback<void(PendingUpload*)>& complete_callback)
+ : url_(url),
+ json_(json),
+ callback_(callback),
+ complete_callback_(complete_callback) {}
+
+ ~PendingUploadImpl() override {}
+
+ // PendingUpload implementationP:
+ const GURL& url() const override { return url_; }
+ const std::string& json() const override { return json_; }
+ std::unique_ptr<base::Value> GetValue() const override {
+ return base::JSONReader::Read(json_);
+ }
+
+ void Complete(ReportingUploader::Outcome outcome) override {
+ callback_.Run(outcome);
+ // Deletes |this|.
+ complete_callback_.Run(this);
+ }
+
+ private:
+ GURL url_;
+ std::string json_;
+ ReportingUploader::Callback callback_;
+ base::Callback<void(PendingUpload*)> complete_callback_;
+};
+
+void ErasePendingUpload(
+ std::vector<std::unique_ptr<TestReportingUploader::PendingUpload>>* uploads,
+ TestReportingUploader::PendingUpload* upload) {
+ for (auto it = uploads->begin(); it != uploads->end(); ++it) {
+ if (it->get() == upload) {
+ uploads->erase(it);
+ return;
+ }
+ }
+ NOTREACHED();
+}
+
+} // namespace
+
const ReportingClient* FindClientInCache(const ReportingCache* cache,
const url::Origin& origin,
const GURL& endpoint) {
@@ -25,4 +87,61 @@ const ReportingClient* FindClientInCache(const ReportingCache* cache,
return nullptr;
}
+TestReportingDelegate::TestReportingDelegate() {}
+TestReportingDelegate::~TestReportingDelegate() {}
+
+void TestReportingDelegate::PersistData(
+ std::unique_ptr<const base::Value> persisted_data) {
+ persisted_data_ = std::move(persisted_data);
+}
+
+std::unique_ptr<const base::Value> TestReportingDelegate::GetPersistedData() {
+ if (!persisted_data_)
+ return std::unique_ptr<const base::Value>();
+ return persisted_data_->CreateDeepCopy();
+}
+
+TestReportingUploader::PendingUpload::~PendingUpload() {}
+TestReportingUploader::PendingUpload::PendingUpload() {}
+
+TestReportingUploader::TestReportingUploader() {}
+TestReportingUploader::~TestReportingUploader() {}
+
+void TestReportingUploader::StartUpload(const GURL& url,
+ const std::string& json,
+ const Callback& callback) {
+ pending_uploads_.push_back(base::MakeUnique<PendingUploadImpl>(
+ url, json, callback, base::Bind(&ErasePendingUpload, &pending_uploads_)));
+}
+
+TestReportingContext::TestReportingContext(const ReportingPolicy& policy)
+ : ReportingContext(policy,
+ base::MakeUnique<TestReportingDelegate>(),
+ base::MakeUnique<base::SimpleTestClock>(),
+ base::MakeUnique<base::SimpleTestTickClock>(),
+ base::MakeUnique<TestReportingUploader>()) {}
+
+TestReportingContext::~TestReportingContext() {}
+
+ReportingTestBase::ReportingTestBase() {
+ // For tests, disable jitter.
+ ReportingPolicy policy;
+ policy.endpoint_backoff_policy.jitter_factor = 0.0;
+ UsePolicy(policy);
+}
+
+ReportingTestBase::~ReportingTestBase() {}
+
+void ReportingTestBase::UsePolicy(const ReportingPolicy& policy) {
+ context_ = base::MakeUnique<TestReportingContext>(policy);
+}
+
+base::TimeTicks ReportingTestBase::yesterday() {
+ return tick_clock()->NowTicks() - base::TimeDelta::FromDays(1);
+}
+
+base::TimeTicks ReportingTestBase::tomorrow() {
+ return tick_clock()->NowTicks() + base::TimeDelta::FromDays(1);
+}
+
} // namespace net
« no previous file with comments | « net/reporting/reporting_test_util.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698