summaryrefslogtreecommitdiff
path: root/chromium/net/reporting
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-01-29 16:35:13 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-02-01 15:33:35 +0000
commitc8c2d1901aec01e934adf561a9fdf0cc776cdef8 (patch)
tree9157c3d9815e5870799e070b113813bec53e0535 /chromium/net/reporting
parentabefd5095b41dac94ca451d784ab6e27372e981a (diff)
downloadqtwebengine-chromium-c8c2d1901aec01e934adf561a9fdf0cc776cdef8.tar.gz
BASELINE: Update Chromium to 64.0.3282.139
Change-Id: I1cae68fe9c94ff7608b26b8382fc19862cdb293a Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/net/reporting')
-rw-r--r--chromium/net/reporting/OWNERS1
-rw-r--r--chromium/net/reporting/reporting_browsing_data_remover_unittest.cc4
-rw-r--r--chromium/net/reporting/reporting_cache_unittest.cc43
-rw-r--r--chromium/net/reporting/reporting_delivery_agent.cc6
-rw-r--r--chromium/net/reporting/reporting_delivery_agent_unittest.cc11
-rw-r--r--chromium/net/reporting/reporting_endpoint_manager_unittest.cc2
-rw-r--r--chromium/net/reporting/reporting_header_parser.cc5
-rw-r--r--chromium/net/reporting/reporting_header_parser_fuzzer.cc71
-rw-r--r--chromium/net/reporting/reporting_header_parser_unittest.cc2
-rw-r--r--chromium/net/reporting/reporting_network_change_observer_unittest.cc2
-rw-r--r--chromium/net/reporting/reporting_persister_unittest.cc2
-rw-r--r--chromium/net/reporting/reporting_policy.proto31
-rw-r--r--chromium/net/reporting/reporting_service.cc2
-rw-r--r--chromium/net/reporting/reporting_service_unittest.cc2
14 files changed, 150 insertions, 34 deletions
diff --git a/chromium/net/reporting/OWNERS b/chromium/net/reporting/OWNERS
new file mode 100644
index 00000000000..510eb168acb
--- /dev/null
+++ b/chromium/net/reporting/OWNERS
@@ -0,0 +1 @@
+juliatuttle@chromium.org
diff --git a/chromium/net/reporting/reporting_browsing_data_remover_unittest.cc b/chromium/net/reporting/reporting_browsing_data_remover_unittest.cc
index 5cb2e0599c0..ceaf9d59d8a 100644
--- a/chromium/net/reporting/reporting_browsing_data_remover_unittest.cc
+++ b/chromium/net/reporting/reporting_browsing_data_remover_unittest.cc
@@ -57,8 +57,8 @@ class ReportingBrowsingDataRemoverTest : public ReportingTestBase {
const GURL kUrl1_ = GURL("https://origin1/path");
const GURL kUrl2_ = GURL("https://origin2/path");
- const url::Origin kOrigin1_ = url::Origin(kUrl1_);
- const url::Origin kOrigin2_ = url::Origin(kUrl2_);
+ const url::Origin kOrigin1_ = url::Origin::Create(kUrl1_);
+ const url::Origin kOrigin2_ = url::Origin::Create(kUrl2_);
const GURL kEndpoint_ = GURL("https://endpoint/");
const std::string kGroup_ = "group";
const std::string kType_ = "default";
diff --git a/chromium/net/reporting/reporting_cache_unittest.cc b/chromium/net/reporting/reporting_cache_unittest.cc
index 59bebe627a0..9c77e71b4b0 100644
--- a/chromium/net/reporting/reporting_cache_unittest.cc
+++ b/chromium/net/reporting/reporting_cache_unittest.cc
@@ -61,8 +61,8 @@ class ReportingCacheTest : public ReportingTestBase {
}
const GURL kUrl1_ = GURL("https://origin1/path");
- const url::Origin kOrigin1_ = url::Origin(GURL("https://origin1/"));
- const url::Origin kOrigin2_ = url::Origin(GURL("https://origin2/"));
+ const url::Origin kOrigin1_ = url::Origin::Create(GURL("https://origin1/"));
+ const url::Origin kOrigin2_ = url::Origin::Create(GURL("https://origin2/"));
const GURL kEndpoint1_ = GURL("https://endpoint1/");
const GURL kEndpoint2_ = GURL("https://endpoint2/");
const std::string kGroup1_ = "group1";
@@ -315,8 +315,9 @@ TEST_F(ReportingCacheTest, RemoveAllClients) {
}
TEST_F(ReportingCacheTest, ExcludeSubdomainsDifferentPort) {
- const url::Origin kOrigin(GURL("https://example/"));
- const url::Origin kDifferentPortOrigin(GURL("https://example:444/"));
+ const url::Origin kOrigin = url::Origin::Create(GURL("https://example/"));
+ const url::Origin kDifferentPortOrigin =
+ url::Origin::Create(GURL("https://example:444/"));
cache()->SetClient(kDifferentPortOrigin, kEndpoint1_,
ReportingClient::Subdomains::EXCLUDE, kGroup1_,
@@ -328,8 +329,9 @@ TEST_F(ReportingCacheTest, ExcludeSubdomainsDifferentPort) {
}
TEST_F(ReportingCacheTest, ExcludeSubdomainsSuperdomain) {
- const url::Origin kOrigin(GURL("https://foo.example/"));
- const url::Origin kSuperOrigin(GURL("https://example/"));
+ const url::Origin kOrigin = url::Origin::Create(GURL("https://foo.example/"));
+ const url::Origin kSuperOrigin =
+ url::Origin::Create(GURL("https://example/"));
cache()->SetClient(kSuperOrigin, kEndpoint1_,
ReportingClient::Subdomains::EXCLUDE, kGroup1_,
@@ -341,8 +343,9 @@ TEST_F(ReportingCacheTest, ExcludeSubdomainsSuperdomain) {
}
TEST_F(ReportingCacheTest, IncludeSubdomainsDifferentPort) {
- const url::Origin kOrigin(GURL("https://example/"));
- const url::Origin kDifferentPortOrigin(GURL("https://example:444/"));
+ const url::Origin kOrigin = url::Origin::Create(GURL("https://example/"));
+ const url::Origin kDifferentPortOrigin =
+ url::Origin::Create(GURL("https://example:444/"));
cache()->SetClient(kDifferentPortOrigin, kEndpoint1_,
ReportingClient::Subdomains::INCLUDE, kGroup1_,
@@ -355,8 +358,9 @@ TEST_F(ReportingCacheTest, IncludeSubdomainsDifferentPort) {
}
TEST_F(ReportingCacheTest, IncludeSubdomainsSuperdomain) {
- const url::Origin kOrigin(GURL("https://foo.example/"));
- const url::Origin kSuperOrigin(GURL("https://example/"));
+ const url::Origin kOrigin = url::Origin::Create(GURL("https://foo.example/"));
+ const url::Origin kSuperOrigin =
+ url::Origin::Create(GURL("https://example/"));
cache()->SetClient(kSuperOrigin, kEndpoint1_,
ReportingClient::Subdomains::INCLUDE, kGroup1_,
@@ -369,8 +373,9 @@ TEST_F(ReportingCacheTest, IncludeSubdomainsSuperdomain) {
}
TEST_F(ReportingCacheTest, IncludeSubdomainsPreferOriginToDifferentPort) {
- const url::Origin kOrigin(GURL("https://foo.example/"));
- const url::Origin kDifferentPortOrigin(GURL("https://example:444/"));
+ const url::Origin kOrigin = url::Origin::Create(GURL("https://foo.example/"));
+ const url::Origin kDifferentPortOrigin =
+ url::Origin::Create(GURL("https://example:444/"));
cache()->SetClient(kOrigin, kEndpoint1_, ReportingClient::Subdomains::INCLUDE,
kGroup1_, kExpires1_);
@@ -385,8 +390,9 @@ TEST_F(ReportingCacheTest, IncludeSubdomainsPreferOriginToDifferentPort) {
}
TEST_F(ReportingCacheTest, IncludeSubdomainsPreferOriginToSuperdomain) {
- const url::Origin kOrigin(GURL("https://foo.example/"));
- const url::Origin kSuperOrigin(GURL("https://example/"));
+ const url::Origin kOrigin = url::Origin::Create(GURL("https://foo.example/"));
+ const url::Origin kSuperOrigin =
+ url::Origin::Create(GURL("https://example/"));
cache()->SetClient(kOrigin, kEndpoint1_, ReportingClient::Subdomains::INCLUDE,
kGroup1_, kExpires1_);
@@ -401,9 +407,12 @@ TEST_F(ReportingCacheTest, IncludeSubdomainsPreferOriginToSuperdomain) {
}
TEST_F(ReportingCacheTest, IncludeSubdomainsPreferMoreSpecificSuperdomain) {
- const url::Origin kOrigin(GURL("https://foo.bar.example/"));
- const url::Origin kSuperOrigin(GURL("https://bar.example/"));
- const url::Origin kSuperSuperOrigin(GURL("https://example/"));
+ const url::Origin kOrigin =
+ url::Origin::Create(GURL("https://foo.bar.example/"));
+ const url::Origin kSuperOrigin =
+ url::Origin::Create(GURL("https://bar.example/"));
+ const url::Origin kSuperSuperOrigin =
+ url::Origin::Create(GURL("https://example/"));
cache()->SetClient(kSuperOrigin, kEndpoint1_,
ReportingClient::Subdomains::INCLUDE, kGroup1_,
diff --git a/chromium/net/reporting/reporting_delivery_agent.cc b/chromium/net/reporting/reporting_delivery_agent.cc
index 258fa5bf325..ad439cb2617 100644
--- a/chromium/net/reporting/reporting_delivery_agent.cc
+++ b/chromium/net/reporting/reporting_delivery_agent.cc
@@ -116,10 +116,10 @@ class ReportingDeliveryAgentImpl : public ReportingDeliveryAgent,
std::map<OriginGroup, std::vector<const ReportingReport*>>
origin_group_reports;
for (const ReportingReport* report : reports) {
- url::Origin origin(report->url);
+ url::Origin origin = url::Origin::Create(report->url);
if (!delegate()->CanSendReport(origin))
continue;
- OriginGroup origin_group(url::Origin(report->url), report->group);
+ OriginGroup origin_group(url::Origin::Create(report->url), report->group);
origin_group_reports[origin_group].push_back(report);
}
@@ -182,7 +182,7 @@ class ReportingDeliveryAgentImpl : public ReportingDeliveryAgent,
for (const ReportingReport* report : delivery->reports) {
pending_origin_groups_.erase(
- OriginGroup(url::Origin(report->url), report->group));
+ OriginGroup(url::Origin::Create(report->url), report->group));
}
endpoint_manager()->ClearEndpointPending(delivery->endpoint);
diff --git a/chromium/net/reporting/reporting_delivery_agent_unittest.cc b/chromium/net/reporting/reporting_delivery_agent_unittest.cc
index a0a0bcaff6f..4bc74893bfb 100644
--- a/chromium/net/reporting/reporting_delivery_agent_unittest.cc
+++ b/chromium/net/reporting/reporting_delivery_agent_unittest.cc
@@ -43,7 +43,7 @@ class ReportingDeliveryAgentTest : public ReportingTestBase {
}
const GURL kUrl_ = GURL("https://origin/path");
- const url::Origin kOrigin_ = url::Origin(GURL("https://origin/"));
+ const url::Origin kOrigin_ = url::Origin::Create(GURL("https://origin/"));
const GURL kEndpoint_ = GURL("https://endpoint/");
const std::string kGroup_ = "group";
const std::string kType_ = "type";
@@ -121,7 +121,8 @@ TEST_F(ReportingDeliveryAgentTest, FailedUpload) {
}
TEST_F(ReportingDeliveryAgentTest, RemoveEndpointUpload) {
- static const url::Origin kDifferentOrigin(GURL("https://origin2/"));
+ static const url::Origin kDifferentOrigin =
+ url::Origin::Create(GURL("https://origin2/"));
cache()->SetClient(kOrigin_, kEndpoint_, ReportingClient::Subdomains::EXCLUDE,
kGroup_, tomorrow());
@@ -196,7 +197,8 @@ TEST_F(ReportingDeliveryAgentTest, ConcurrentRemove) {
TEST_F(ReportingDeliveryAgentTest,
BatchReportsFromDifferentOriginsToSameEndpoint) {
static const GURL kDifferentUrl("https://origin2/path");
- static const url::Origin kDifferentOrigin(kDifferentUrl);
+ static const url::Origin kDifferentOrigin =
+ url::Origin::Create(kDifferentUrl);
cache()->SetClient(kOrigin_, kEndpoint_, ReportingClient::Subdomains::EXCLUDE,
kGroup_, tomorrow());
@@ -223,7 +225,8 @@ TEST_F(ReportingDeliveryAgentTest,
// pending.
TEST_F(ReportingDeliveryAgentTest, SerializeUploadsToEndpoint) {
static const GURL kDifferentUrl("https://origin2/path");
- static const url::Origin kDifferentOrigin(kDifferentUrl);
+ static const url::Origin kDifferentOrigin =
+ url::Origin::Create(kDifferentUrl);
cache()->SetClient(kOrigin_, kEndpoint_, ReportingClient::Subdomains::EXCLUDE,
kGroup_, tomorrow());
diff --git a/chromium/net/reporting/reporting_endpoint_manager_unittest.cc b/chromium/net/reporting/reporting_endpoint_manager_unittest.cc
index 113128dbf50..28915e07f66 100644
--- a/chromium/net/reporting/reporting_endpoint_manager_unittest.cc
+++ b/chromium/net/reporting/reporting_endpoint_manager_unittest.cc
@@ -22,7 +22,7 @@ namespace {
class ReportingEndpointManagerTest : public ReportingTestBase {
protected:
- const url::Origin kOrigin_ = url::Origin(GURL("https://origin/"));
+ const url::Origin kOrigin_ = url::Origin::Create(GURL("https://origin/"));
const GURL kEndpoint_ = GURL("https://endpoint/");
const std::string kGroup_ = "group";
};
diff --git a/chromium/net/reporting/reporting_header_parser.cc b/chromium/net/reporting/reporting_header_parser.cc
index 058b33548b2..e5db601c748 100644
--- a/chromium/net/reporting/reporting_header_parser.cc
+++ b/chromium/net/reporting/reporting_header_parser.cc
@@ -106,11 +106,12 @@ HeaderEndpointOutcome ProcessEndpoint(ReportingDelegate* delegate,
}
if (ttl_sec == 0) {
- cache->RemoveClientForOriginAndEndpoint(url::Origin(url), endpoint_url);
+ cache->RemoveClientForOriginAndEndpoint(url::Origin::Create(url),
+ endpoint_url);
return HeaderEndpointOutcome::REMOVED;
}
- url::Origin origin(url);
+ url::Origin origin = url::Origin::Create(url);
if (!delegate->CanSetClient(origin, endpoint_url))
return HeaderEndpointOutcome::SET_REJECTED_BY_DELEGATE;
diff --git a/chromium/net/reporting/reporting_header_parser_fuzzer.cc b/chromium/net/reporting/reporting_header_parser_fuzzer.cc
new file mode 100644
index 00000000000..1c31b9ec17b
--- /dev/null
+++ b/chromium/net/reporting/reporting_header_parser_fuzzer.cc
@@ -0,0 +1,71 @@
+// Copyright 2017 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.
+
+#include "base/time/time.h"
+#include "net/reporting/reporting_cache.h"
+#include "net/reporting/reporting_client.h"
+#include "net/reporting/reporting_header_parser.h"
+#include "net/reporting/reporting_policy.pb.h"
+#include "net/reporting/reporting_test_util.h"
+#include "url/gurl.h"
+
+#include "testing/libfuzzer/proto/json_proto_converter.h"
+#include "third_party/libprotobuf-mutator/src/src/libfuzzer/libfuzzer_macro.h"
+
+// Silence logging from the protobuf library.
+protobuf_mutator::protobuf::LogSilencer log_silencer;
+
+// TODO: consider including proto definition for URL after moving that to
+// testing/libfuzzer/proto and creating a separate converter.
+const GURL kUrl_ = GURL("https://origin/path");
+
+namespace net_reporting_header_parser_fuzzer {
+
+void FuzzReportingHeaderParser(const std::string& data,
+ const net::ReportingPolicy& policy) {
+ net::TestReportingContext context(policy);
+ net::ReportingHeaderParser::ParseHeader(&context, kUrl_, data.c_str());
+ std::vector<const net::ReportingClient*> clients;
+ context.cache()->GetClients(&clients);
+ if (clients.empty()) {
+ return;
+ }
+}
+
+void InitializeReportingPolicy(
+ net::ReportingPolicy& policy,
+ const net_reporting_policy_proto::ReportingPolicy& policy_data) {
+ policy.max_report_count = policy_data.max_report_count();
+ policy.max_client_count = policy_data.max_client_count();
+ policy.delivery_interval =
+ base::TimeDelta::FromMicroseconds(policy_data.delivery_interval_us());
+ policy.persistence_interval =
+ base::TimeDelta::FromMicroseconds(policy_data.persistence_interval_us());
+ policy.persist_reports_across_restarts =
+ policy_data.persist_reports_across_restarts();
+ policy.persist_clients_across_restarts =
+ policy_data.persist_clients_across_restarts();
+ policy.garbage_collection_interval = base::TimeDelta::FromMicroseconds(
+ policy_data.garbage_collection_interval_us());
+ policy.max_report_age =
+ base::TimeDelta::FromMicroseconds(policy_data.max_report_age_us());
+ policy.max_report_attempts = policy_data.max_report_attempts();
+ policy.clear_reports_on_network_changes =
+ policy_data.clear_reports_on_network_changes();
+ policy.clear_clients_on_network_changes =
+ policy_data.clear_clients_on_network_changes();
+}
+
+DEFINE_BINARY_PROTO_FUZZER(
+ const net_reporting_policy_proto::ReportingHeaderParserFuzzInput& input) {
+ net::ReportingPolicy policy;
+ InitializeReportingPolicy(policy, input.policy());
+
+ json_proto::JsonProtoConverter converter;
+ auto data = converter.Convert(input.headers());
+
+ FuzzReportingHeaderParser(data, policy);
+}
+
+} // namespace net_reporting_header_parser_fuzzer
diff --git a/chromium/net/reporting/reporting_header_parser_unittest.cc b/chromium/net/reporting/reporting_header_parser_unittest.cc
index 0c7d14a80ca..7d8710ad936 100644
--- a/chromium/net/reporting/reporting_header_parser_unittest.cc
+++ b/chromium/net/reporting/reporting_header_parser_unittest.cc
@@ -23,7 +23,7 @@ namespace {
class ReportingHeaderParserTest : public ReportingTestBase {
protected:
const GURL kUrl_ = GURL("https://origin/path");
- const url::Origin kOrigin_ = url::Origin(GURL("https://origin/"));
+ const url::Origin kOrigin_ = url::Origin::Create(GURL("https://origin/"));
const GURL kEndpoint_ = GURL("https://endpoint/");
const std::string kGroup_ = "group";
const std::string kType_ = "type";
diff --git a/chromium/net/reporting/reporting_network_change_observer_unittest.cc b/chromium/net/reporting/reporting_network_change_observer_unittest.cc
index f5b43ece26c..8350e8dd34d 100644
--- a/chromium/net/reporting/reporting_network_change_observer_unittest.cc
+++ b/chromium/net/reporting/reporting_network_change_observer_unittest.cc
@@ -45,7 +45,7 @@ class ReportingNetworkChangeObserverTest : public ReportingTestBase {
}
const GURL kUrl_ = GURL("https://origin/path");
- const url::Origin kOrigin_ = url::Origin(kUrl_);
+ const url::Origin kOrigin_ = url::Origin::Create(kUrl_);
const GURL kEndpoint_ = GURL("https://endpoint/");
const std::string kGroup_ = "group";
const std::string kType_ = "default";
diff --git a/chromium/net/reporting/reporting_persister_unittest.cc b/chromium/net/reporting/reporting_persister_unittest.cc
index 617d6213a68..547c7208382 100644
--- a/chromium/net/reporting/reporting_persister_unittest.cc
+++ b/chromium/net/reporting/reporting_persister_unittest.cc
@@ -24,7 +24,7 @@ namespace {
class ReportingPersisterTest : public ReportingTestBase {
protected:
const GURL kUrl_ = GURL("https://origin/path");
- const url::Origin kOrigin_ = url::Origin(kUrl_);
+ const url::Origin kOrigin_ = url::Origin::Create(kUrl_);
const GURL kEndpoint_ = GURL("https://endpoint/");
const std::string kGroup_ = "group";
const std::string kType_ = "default";
diff --git a/chromium/net/reporting/reporting_policy.proto b/chromium/net/reporting/reporting_policy.proto
new file mode 100644
index 00000000000..c908b8635de
--- /dev/null
+++ b/chromium/net/reporting/reporting_policy.proto
@@ -0,0 +1,31 @@
+// Copyright 2017 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.
+
+// Based on net::ReportingPolicy class declaration.
+
+syntax = "proto2";
+
+import "json.proto";
+
+package net_reporting_policy_proto;
+
+message ReportingPolicy {
+ // TODO: consider implementing proto for endpoint_backoff_policy.
+ required uint64 max_report_count = 1;
+ required uint64 max_client_count = 2;
+ required uint64 delivery_interval_us = 3;
+ required uint64 persistence_interval_us = 4;
+ required bool persist_reports_across_restarts = 5;
+ required bool persist_clients_across_restarts = 6;
+ required uint64 garbage_collection_interval_us = 7;
+ required uint64 max_report_age_us = 8;
+ required int32 max_report_attempts = 9;
+ required bool clear_reports_on_network_changes = 10;
+ required bool clear_clients_on_network_changes = 11;
+}
+
+message ReportingHeaderParserFuzzInput {
+ required ReportingPolicy policy = 1;
+ required json_proto.JsonObject headers = 2;
+}
diff --git a/chromium/net/reporting/reporting_service.cc b/chromium/net/reporting/reporting_service.cc
index 8db18fe4a70..e72eb7520cd 100644
--- a/chromium/net/reporting/reporting_service.cc
+++ b/chromium/net/reporting/reporting_service.cc
@@ -34,7 +34,7 @@ class ReportingServiceImpl : public ReportingService {
const std::string& group,
const std::string& type,
std::unique_ptr<const base::Value> body) override {
- if (!context_->delegate()->CanQueueReport(url::Origin(url)))
+ if (!context_->delegate()->CanQueueReport(url::Origin::Create(url)))
return;
context_->cache()->AddReport(url, group, type, std::move(body),
diff --git a/chromium/net/reporting/reporting_service_unittest.cc b/chromium/net/reporting/reporting_service_unittest.cc
index e6a3328a9a3..d8978c81f27 100644
--- a/chromium/net/reporting/reporting_service_unittest.cc
+++ b/chromium/net/reporting/reporting_service_unittest.cc
@@ -24,7 +24,7 @@ namespace {
class ReportingServiceTest : public ::testing::Test {
protected:
const GURL kUrl_ = GURL("https://origin/path");
- const url::Origin kOrigin_ = url::Origin(kUrl_);
+ const url::Origin kOrigin_ = url::Origin::Create(kUrl_);
const GURL kEndpoint_ = GURL("https://endpoint/");
const std::string kGroup_ = "group";
const std::string kType_ = "type";