diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-08-24 12:15:48 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-08-28 13:30:04 +0000 |
commit | b014812705fc80bff0a5c120dfcef88f349816dc (patch) | |
tree | 25a2e2d9fa285f1add86aa333389a839f81a39ae /chromium/net/network_error_logging | |
parent | 9f4560b1027ae06fdb497023cdcaf91b8511fa74 (diff) | |
download | qtwebengine-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')
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 |