summaryrefslogtreecommitdiff
path: root/chromium/net/network_error_logging
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-08-24 12:15:48 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-08-28 13:30:04 +0000
commitb014812705fc80bff0a5c120dfcef88f349816dc (patch)
tree25a2e2d9fa285f1add86aa333389a839f81a39ae /chromium/net/network_error_logging
parent9f4560b1027ae06fdb497023cdcaf91b8511fa74 (diff)
downloadqtwebengine-chromium-b014812705fc80bff0a5c120dfcef88f349816dc.tar.gz
BASELINE: Update Chromium to 68.0.3440.125
Change-Id: I23f19369e01f688e496f5bf179abb521ad73874f Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/net/network_error_logging')
-rw-r--r--chromium/net/network_error_logging/network_error_logging_end_to_end_test.cc3
-rw-r--r--chromium/net/network_error_logging/network_error_logging_service.cc56
-rw-r--r--chromium/net/network_error_logging/network_error_logging_service.h15
-rw-r--r--chromium/net/network_error_logging/network_error_logging_service_unittest.cc49
4 files changed, 113 insertions, 10 deletions
diff --git a/chromium/net/network_error_logging/network_error_logging_end_to_end_test.cc b/chromium/net/network_error_logging/network_error_logging_end_to_end_test.cc
index 56fadcf5ddf..a042c9de1d6 100644
--- a/chromium/net/network_error_logging/network_error_logging_end_to_end_test.cc
+++ b/chromium/net/network_error_logging/network_error_logging_end_to_end_test.cc
@@ -17,6 +17,7 @@
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "net/test/embedded_test_server/http_request.h"
#include "net/test/embedded_test_server/http_response.h"
+#include "net/test/test_with_scoped_task_environment.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
#include "net/url_request/url_request.h"
#include "net/url_request/url_request_context.h"
@@ -51,7 +52,7 @@ class HungHttpResponse : public test_server::HttpResponse {
DISALLOW_COPY_AND_ASSIGN(HungHttpResponse);
};
-class NetworkErrorLoggingEndToEndTest : public ::testing::Test {
+class NetworkErrorLoggingEndToEndTest : public TestWithScopedTaskEnvironment {
protected:
NetworkErrorLoggingEndToEndTest()
: main_task_runner_(base::ThreadTaskRunnerHandle::Get()),
diff --git a/chromium/net/network_error_logging/network_error_logging_service.cc b/chromium/net/network_error_logging/network_error_logging_service.cc
index 34dbf6e3b20..b0f7f12c859 100644
--- a/chromium/net/network_error_logging/network_error_logging_service.cc
+++ b/chromium/net/network_error_logging/network_error_logging_service.cc
@@ -7,6 +7,7 @@
#include <memory>
#include <string>
#include <utility>
+#include <vector>
#include "base/json/json_reader.h"
#include "base/logging.h"
@@ -18,6 +19,7 @@
#include "base/values.h"
#include "net/base/ip_address.h"
#include "net/base/net_errors.h"
+#include "net/log/net_log.h"
#include "net/network_error_logging/network_error_logging_delegate.h"
#include "net/reporting/reporting_service.h"
#include "url/gurl.h"
@@ -274,12 +276,6 @@ class NetworkErrorLoggingServiceImpl : public NetworkErrorLoggingService {
void RemoveBrowsingData(const base::RepeatingCallback<bool(const GURL&)>&
origin_filter) override {
- if (origin_filter.is_null()) {
- wildcard_policies_.clear();
- policies_.clear();
- return;
- }
-
std::vector<url::Origin> origins_to_remove;
for (auto it = policies_.begin(); it != policies_.end(); ++it) {
@@ -294,6 +290,44 @@ class NetworkErrorLoggingServiceImpl : public NetworkErrorLoggingService {
}
}
+ void RemoveAllBrowsingData() override {
+ wildcard_policies_.clear();
+ policies_.clear();
+ }
+
+ base::Value StatusAsValue() const override {
+ base::Value dict(base::Value::Type::DICTIONARY);
+ std::vector<base::Value> policy_list;
+ // We wanted sorted (or at least reproducible) output; luckily, policies_ is
+ // a std::map, and therefore already sorted.
+ for (const auto& origin_and_policy : policies_) {
+ const auto& origin = origin_and_policy.first;
+ const auto& policy = origin_and_policy.second;
+ base::Value policy_dict(base::Value::Type::DICTIONARY);
+ policy_dict.SetKey("origin", base::Value(origin.Serialize()));
+ policy_dict.SetKey("includeSubdomains",
+ base::Value(policy.include_subdomains));
+ policy_dict.SetKey("reportTo", base::Value(policy.report_to));
+ policy_dict.SetKey(
+ "expires", base::Value(NetLog::TickCountToString(policy.expires)));
+ policy_dict.SetKey("successFraction",
+ base::Value(policy.success_fraction));
+ policy_dict.SetKey("failureFraction",
+ base::Value(policy.failure_fraction));
+ policy_list.push_back(std::move(policy_dict));
+ }
+ dict.SetKey("originPolicies", base::Value(std::move(policy_list)));
+ return dict;
+ }
+
+ std::set<url::Origin> GetPolicyOriginsForTesting() override {
+ std::set<url::Origin> origins;
+ for (const auto& entry : policies_) {
+ origins.insert(entry.first);
+ }
+ return origins;
+ }
+
private:
// NEL Policy set by an origin.
struct OriginPolicy {
@@ -560,6 +594,16 @@ void NetworkErrorLoggingService::SetTickClockForTesting(
tick_clock_ = tick_clock;
}
+base::Value NetworkErrorLoggingService::StatusAsValue() const {
+ NOTIMPLEMENTED();
+ return base::Value();
+}
+
+std::set<url::Origin> NetworkErrorLoggingService::GetPolicyOriginsForTesting() {
+ NOTIMPLEMENTED();
+ return std::set<url::Origin>();
+}
+
NetworkErrorLoggingService::NetworkErrorLoggingService()
: tick_clock_(base::DefaultTickClock::GetInstance()),
reporting_service_(nullptr) {}
diff --git a/chromium/net/network_error_logging/network_error_logging_service.h b/chromium/net/network_error_logging/network_error_logging_service.h
index a25c0eea30a..7a8d5dfa1cb 100644
--- a/chromium/net/network_error_logging/network_error_logging_service.h
+++ b/chromium/net/network_error_logging/network_error_logging_service.h
@@ -20,6 +20,10 @@
#include "url/gurl.h"
#include "url/origin.h"
+namespace base {
+class Value;
+} // namespace base
+
namespace net {
class ReportingService;
} // namespace net
@@ -105,11 +109,14 @@ class NET_EXPORT NetworkErrorLoggingService {
virtual void OnRequest(const RequestDetails& details) = 0;
// Removes browsing data (origin policies) associated with any origin for
- // which |origin_filter| returns true, or for all origins if
- // |origin_filter.is_null()|.
+ // which |origin_filter| returns true.
virtual void RemoveBrowsingData(
const base::RepeatingCallback<bool(const GURL&)>& origin_filter) = 0;
+ // Removes browsing data (origin policies) for all origins. Allows slight
+ // optimization over passing an always-true filter to RemoveBrowsingData.
+ virtual void RemoveAllBrowsingData() = 0;
+
// Sets the ReportingService that will be used to queue network error reports.
// If |nullptr| is passed, reports will be queued locally or discarded.
// |reporting_service| must outlive the NetworkErrorLoggingService.
@@ -120,6 +127,10 @@ class NET_EXPORT NetworkErrorLoggingService {
// nullptr.
void SetTickClockForTesting(const base::TickClock* tick_clock);
+ virtual base::Value StatusAsValue() const;
+
+ virtual std::set<url::Origin> GetPolicyOriginsForTesting();
+
protected:
NetworkErrorLoggingService();
diff --git a/chromium/net/network_error_logging/network_error_logging_service_unittest.cc b/chromium/net/network_error_logging/network_error_logging_service_unittest.cc
index a1051402314..cdd68e4c5d5 100644
--- a/chromium/net/network_error_logging/network_error_logging_service_unittest.cc
+++ b/chromium/net/network_error_logging/network_error_logging_service_unittest.cc
@@ -9,6 +9,7 @@
#include "base/bind.h"
#include "base/callback.h"
#include "base/macros.h"
+#include "base/test/simple_test_tick_clock.h"
#include "base/test/values_test_util.h"
#include "base/time/time.h"
#include "base/values.h"
@@ -87,6 +88,8 @@ class TestReportingService : public ReportingService {
NOTREACHED();
}
+ void RemoveAllBrowsingData(int data_type_mask) override { NOTREACHED(); }
+
int GetUploadDepth(const URLRequest& request) override {
NOTREACHED();
return 0;
@@ -491,7 +494,7 @@ TEST_F(NetworkErrorLoggingServiceTest,
TEST_F(NetworkErrorLoggingServiceTest, RemoveAllBrowsingData) {
service()->OnHeader(kOrigin_, kHeader_);
- service()->RemoveBrowsingData(base::RepeatingCallback<bool(const GURL&)>());
+ service()->RemoveAllBrowsingData();
service()->OnRequest(MakeRequestDetails(kUrl_, ERR_CONNECTION_REFUSED));
@@ -543,5 +546,49 @@ TEST_F(NetworkErrorLoggingServiceTest, NestedTooDeep) {
EXPECT_TRUE(reports().empty());
}
+TEST_F(NetworkErrorLoggingServiceTest, StatusAsValue) {
+ base::SimpleTestTickClock clock;
+ service()->SetTickClockForTesting(&clock);
+
+ static const std::string kHeaderSuccessFraction1 =
+ "{\"report-to\":\"group\",\"max-age\":86400,\"success-fraction\":1.0}";
+ service()->OnHeader(kOrigin_, kHeaderSuccessFraction1);
+ service()->OnHeader(kOriginDifferentHost_, kHeader_);
+ service()->OnHeader(kOriginSubdomain_, kHeaderIncludeSubdomains_);
+
+ base::Value actual = service()->StatusAsValue();
+ std::unique_ptr<base::Value> expected = base::test::ParseJson(R"json(
+ {
+ "originPolicies": [
+ {
+ "origin": "https://example.com",
+ "includeSubdomains": false,
+ "expires": "86400000",
+ "reportTo": "group",
+ "successFraction": 1.0,
+ "failureFraction": 1.0,
+ },
+ {
+ "origin": "https://example2.com",
+ "includeSubdomains": false,
+ "expires": "86400000",
+ "reportTo": "group",
+ "successFraction": 0.0,
+ "failureFraction": 1.0,
+ },
+ {
+ "origin": "https://subdomain.example.com",
+ "includeSubdomains": true,
+ "expires": "86400000",
+ "reportTo": "group",
+ "successFraction": 0.0,
+ "failureFraction": 1.0,
+ },
+ ]
+ }
+ )json");
+ EXPECT_EQ(*expected, actual);
+}
+
} // namespace
} // namespace net