diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-02-13 15:05:36 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-02-14 10:33:47 +0000 |
commit | e684a3455bcc29a6e3e66a004e352dea4e1141e7 (patch) | |
tree | d55b4003bde34d7d05f558f02cfd82b2a66a7aac /chromium/net/reporting | |
parent | 2b94bfe47ccb6c08047959d1c26e392919550e86 (diff) | |
download | qtwebengine-chromium-e684a3455bcc29a6e3e66a004e352dea4e1141e7.tar.gz |
BASELINE: Update Chromium to 72.0.3626.110 and Ninja to 1.9.0
Change-Id: Ic57220b00ecc929a893c91f5cc552f5d3e99e922
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/net/reporting')
-rw-r--r-- | chromium/net/reporting/reporting_cache.cc | 2 | ||||
-rw-r--r-- | chromium/net/reporting/reporting_header_parser.cc | 71 | ||||
-rw-r--r-- | chromium/net/reporting/reporting_header_parser.h | 49 | ||||
-rw-r--r-- | chromium/net/reporting/reporting_header_parser_unittest.cc | 14 | ||||
-rw-r--r-- | chromium/net/reporting/reporting_service.cc | 5 | ||||
-rw-r--r-- | chromium/net/reporting/reporting_service.h | 5 | ||||
-rw-r--r-- | chromium/net/reporting/reporting_test_util.cc | 5 | ||||
-rw-r--r-- | chromium/net/reporting/reporting_test_util.h | 2 | ||||
-rw-r--r-- | chromium/net/reporting/reporting_uploader.cc | 27 | ||||
-rw-r--r-- | chromium/net/reporting/reporting_uploader.h | 4 | ||||
-rw-r--r-- | chromium/net/reporting/reporting_uploader_unittest.cc | 8 |
11 files changed, 96 insertions, 96 deletions
diff --git a/chromium/net/reporting/reporting_cache.cc b/chromium/net/reporting/reporting_cache.cc index 9756fc9dcaa..21776f56c53 100644 --- a/chromium/net/reporting/reporting_cache.cc +++ b/chromium/net/reporting/reporting_cache.cc @@ -414,6 +414,8 @@ class ReportingCacheImpl : public ReportingCache { const GURL& endpoint) override { const ReportingClient* client = GetClientByOriginAndEndpoint(origin, endpoint); + if (!client) + return; RemoveClient(client); context_->NotifyCacheUpdated(); diff --git a/chromium/net/reporting/reporting_header_parser.cc b/chromium/net/reporting/reporting_header_parser.cc index f927b4dfe34..6d77afa84fc 100644 --- a/chromium/net/reporting/reporting_header_parser.cc +++ b/chromium/net/reporting/reporting_header_parser.cc @@ -22,58 +22,22 @@ namespace net { namespace { -enum class HeaderOutcome { - DISCARDED_NO_REPORTING_SERVICE = 0, - DISCARDED_INVALID_SSL_INFO = 1, - DISCARDED_CERT_STATUS_ERROR = 2, - DISCARDED_JSON_TOO_BIG = 3, - DISCARDED_JSON_INVALID = 4, - PARSED = 5, - - MAX -}; +using HeaderEndpointGroupOutcome = + ReportingHeaderParser::HeaderEndpointGroupOutcome; +using HeaderEndpointOutcome = ReportingHeaderParser::HeaderEndpointOutcome; +using HeaderOutcome = ReportingHeaderParser::HeaderOutcome; void RecordHeaderOutcome(HeaderOutcome outcome) { - UMA_HISTOGRAM_ENUMERATION("Net.Reporting.HeaderOutcome", outcome, - HeaderOutcome::MAX); + UMA_HISTOGRAM_ENUMERATION(ReportingHeaderParser::kHeaderOutcomeHistogram, + outcome, HeaderOutcome::MAX); } -enum class HeaderEndpointGroupOutcome { - DISCARDED_NOT_DICTIONARY = 0, - DISCARDED_GROUP_NOT_STRING = 1, - DISCARDED_TTL_MISSING = 2, - DISCARDED_TTL_NOT_INTEGER = 3, - DISCARDED_TTL_NEGATIVE = 4, - DISCARDED_ENDPOINTS_MISSING = 5, - DISCARDED_ENDPOINTS_NOT_LIST = 6, - - PARSED = 7, - - MAX -}; - void RecordHeaderEndpointGroupOutcome(HeaderEndpointGroupOutcome outcome) { - UMA_HISTOGRAM_ENUMERATION("Net.Reporting.HeaderEndpointGroupOutcome", outcome, - HeaderEndpointGroupOutcome::MAX); + UMA_HISTOGRAM_ENUMERATION( + ReportingHeaderParser::kHeaderEndpointGroupOutcomeHistogram, outcome, + HeaderEndpointGroupOutcome::MAX); } -enum class HeaderEndpointOutcome { - DISCARDED_NOT_DICTIONARY = 0, - DISCARDED_URL_MISSING = 1, - DISCARDED_URL_NOT_STRING = 2, - DISCARDED_URL_INVALID = 3, - DISCARDED_URL_INSECURE = 4, - DISCARDED_PRIORITY_NOT_INTEGER = 5, - DISCARDED_WEIGHT_NOT_INTEGER = 6, - DISCARDED_WEIGHT_NOT_POSITIVE = 7, - - REMOVED = 8, - SET_REJECTED_BY_DELEGATE = 9, - SET = 10, - - MAX -}; - bool EndpointParsedSuccessfully(HeaderEndpointOutcome outcome) { return outcome == HeaderEndpointOutcome::REMOVED || outcome == HeaderEndpointOutcome::SET_REJECTED_BY_DELEGATE || @@ -81,8 +45,9 @@ bool EndpointParsedSuccessfully(HeaderEndpointOutcome outcome) { } void RecordHeaderEndpointOutcome(HeaderEndpointOutcome outcome) { - UMA_HISTOGRAM_ENUMERATION("Net.Reporting.HeaderEndpointOutcome", outcome, - HeaderEndpointOutcome::MAX); + UMA_HISTOGRAM_ENUMERATION( + ReportingHeaderParser::kHeaderEndpointOutcomeHistogram, outcome, + HeaderEndpointOutcome::MAX); } const char kUrlKey[] = "url"; @@ -217,6 +182,18 @@ HeaderEndpointGroupOutcome ProcessEndpointGroup(ReportingDelegate* delegate, } // namespace // static +const char ReportingHeaderParser::kHeaderOutcomeHistogram[] = + "Net.Reporting.HeaderOutcome"; + +// static +const char ReportingHeaderParser::kHeaderEndpointGroupOutcomeHistogram[] = + "Net.Reporting.HeaderEndpointGroupOutcome"; + +// static +const char ReportingHeaderParser::kHeaderEndpointOutcomeHistogram[] = + "Net.Reporting.HeaderEndpointOutcome"; + +// static void ReportingHeaderParser::RecordHeaderDiscardedForNoReportingService() { RecordHeaderOutcome(HeaderOutcome::DISCARDED_NO_REPORTING_SERVICE); } diff --git a/chromium/net/reporting/reporting_header_parser.h b/chromium/net/reporting/reporting_header_parser.h index 7613add4d56..4b069a86fdf 100644 --- a/chromium/net/reporting/reporting_header_parser.h +++ b/chromium/net/reporting/reporting_header_parser.h @@ -22,6 +22,55 @@ class ReportingContext; class NET_EXPORT ReportingHeaderParser { public: + // Histograms. These are mainly used in test cases to verify that interesting + // events occurred. + + static const char kHeaderOutcomeHistogram[]; + static const char kHeaderEndpointGroupOutcomeHistogram[]; + static const char kHeaderEndpointOutcomeHistogram[]; + + enum class HeaderOutcome { + DISCARDED_NO_REPORTING_SERVICE = 0, + DISCARDED_INVALID_SSL_INFO = 1, + DISCARDED_CERT_STATUS_ERROR = 2, + DISCARDED_JSON_TOO_BIG = 3, + DISCARDED_JSON_INVALID = 4, + PARSED = 5, + + MAX + }; + + enum class HeaderEndpointGroupOutcome { + DISCARDED_NOT_DICTIONARY = 0, + DISCARDED_GROUP_NOT_STRING = 1, + DISCARDED_TTL_MISSING = 2, + DISCARDED_TTL_NOT_INTEGER = 3, + DISCARDED_TTL_NEGATIVE = 4, + DISCARDED_ENDPOINTS_MISSING = 5, + DISCARDED_ENDPOINTS_NOT_LIST = 6, + + PARSED = 7, + + MAX + }; + + enum class HeaderEndpointOutcome { + DISCARDED_NOT_DICTIONARY = 0, + DISCARDED_URL_MISSING = 1, + DISCARDED_URL_NOT_STRING = 2, + DISCARDED_URL_INVALID = 3, + DISCARDED_URL_INSECURE = 4, + DISCARDED_PRIORITY_NOT_INTEGER = 5, + DISCARDED_WEIGHT_NOT_INTEGER = 6, + DISCARDED_WEIGHT_NOT_POSITIVE = 7, + + REMOVED = 8, + SET_REJECTED_BY_DELEGATE = 9, + SET = 10, + + MAX + }; + static void RecordHeaderDiscardedForNoReportingService(); static void RecordHeaderDiscardedForInvalidSSLInfo(); static void RecordHeaderDiscardedForCertStatusError(); diff --git a/chromium/net/reporting/reporting_header_parser_unittest.cc b/chromium/net/reporting/reporting_header_parser_unittest.cc index d43059451f2..6c900e02ffe 100644 --- a/chromium/net/reporting/reporting_header_parser_unittest.cc +++ b/chromium/net/reporting/reporting_header_parser_unittest.cc @@ -113,11 +113,25 @@ TEST_F(ReportingHeaderParserTest, ZeroMaxAge) { kOrigin_, kEndpoint_, ReportingClient::Subdomains::EXCLUDE, kGroup_, tick_clock()->NowTicks() + base::TimeDelta::FromDays(1), ReportingClient::kDefaultPriority, ReportingClient::kDefaultWeight); + EXPECT_NE(nullptr, FindClientInCache(cache(), kOrigin_, kEndpoint_)); ParseHeader(kUrl_, "{\"endpoints\":[{\"url\":\"" + kEndpoint_.spec() + "\"}],\"max_age\":0}"); + // max_age: 0 should clear the pre-existing client. EXPECT_EQ(nullptr, FindClientInCache(cache(), kOrigin_, kEndpoint_)); + + std::vector<const ReportingClient*> clients; + cache()->GetClients(&clients); + EXPECT_TRUE(clients.empty()); + + // Without a pre-existing client, max_age: 0 should do nothing. + ParseHeader(kUrl_, "{\"endpoints\":[{\"url\":\"" + kEndpoint_.spec() + + "\"}],\"max_age\":0}"); + + EXPECT_EQ(nullptr, FindClientInCache(cache(), kOrigin_, kEndpoint_)); + cache()->GetClients(&clients); + EXPECT_TRUE(clients.empty()); } TEST_F(ReportingHeaderParserTest, Subdomains) { diff --git a/chromium/net/reporting/reporting_service.cc b/chromium/net/reporting/reporting_service.cc index 6cb87a75075..1b8ca071c07 100644 --- a/chromium/net/reporting/reporting_service.cc +++ b/chromium/net/reporting/reporting_service.cc @@ -67,6 +67,7 @@ class ReportingServiceImpl : public ReportingService { return; } + DVLOG(1) << "Received Reporting policy for " << url.GetOrigin(); ReportingHeaderParser::ParseHeader(context_.get(), url, std::move(header_value)); } @@ -83,10 +84,6 @@ class ReportingServiceImpl : public ReportingService { data_type_mask); } - int GetUploadDepth(const URLRequest& request) override { - return context_->uploader()->GetUploadDepth(request); - } - const ReportingPolicy& GetPolicy() const override { return context_->policy(); } diff --git a/chromium/net/reporting/reporting_service.h b/chromium/net/reporting/reporting_service.h index a852d0f7134..b13c8f6d29c 100644 --- a/chromium/net/reporting/reporting_service.h +++ b/chromium/net/reporting/reporting_service.h @@ -22,7 +22,6 @@ namespace net { class ReportingContext; struct ReportingPolicy; -class URLRequest; class URLRequestContext; // The external interface to the Reporting system, used by the embedder of //net @@ -73,10 +72,6 @@ class NET_EXPORT ReportingService { // filter. virtual void RemoveAllBrowsingData(int data_type_mask) = 0; - // Checks how many uploads deep |request| is: 0 if it's not an upload, n+1 if - // it's an upload reporting on requests of at most depth n. - virtual int GetUploadDepth(const URLRequest& request) = 0; - virtual const ReportingPolicy& GetPolicy() const = 0; virtual base::Value StatusAsValue() const; diff --git a/chromium/net/reporting/reporting_test_util.cc b/chromium/net/reporting/reporting_test_util.cc index 921bacd0ae8..321cbf4bd15 100644 --- a/chromium/net/reporting/reporting_test_util.cc +++ b/chromium/net/reporting/reporting_test_util.cc @@ -112,11 +112,6 @@ void TestReportingUploader::StartUpload(const url::Origin& report_origin, base::BindOnce(&ErasePendingUpload, &pending_uploads_))); } -int TestReportingUploader::GetUploadDepth(const URLRequest& request) { - NOTIMPLEMENTED(); - return 0; -} - TestReportingDelegate::TestReportingDelegate() : test_request_context_(std::make_unique<TestURLRequestContext>()) {} diff --git a/chromium/net/reporting/reporting_test_util.h b/chromium/net/reporting/reporting_test_util.h index 09b1f01572c..d0c3f5cea20 100644 --- a/chromium/net/reporting/reporting_test_util.h +++ b/chromium/net/reporting/reporting_test_util.h @@ -79,8 +79,6 @@ class TestReportingUploader : public ReportingUploader { int max_depth, UploadCallback callback) override; - int GetUploadDepth(const URLRequest& request) override; - private: std::vector<std::unique_ptr<PendingUpload>> pending_uploads_; diff --git a/chromium/net/reporting/reporting_uploader.cc b/chromium/net/reporting/reporting_uploader.cc index f1c06be04cf..87e13188a3f 100644 --- a/chromium/net/reporting/reporting_uploader.cc +++ b/chromium/net/reporting/reporting_uploader.cc @@ -50,15 +50,6 @@ constexpr net::NetworkTrafficAnnotationTag kReportUploadTrafficAnnotation = policy_exception_justification: "Not implemented." })"); -class UploadUserData : public base::SupportsUserData::Data { - public: - static const void* const kUserDataKey; - - UploadUserData(int depth) : depth(depth) {} - - int depth; -}; - // Returns true if |request| contains any of the |allowed_values| in a response // header field named |header|. |allowed_values| are expected to be lower-case // and the check is case-insensitive. @@ -77,10 +68,6 @@ bool HasHeaderValues(URLRequest* request, return false; } -// SetUserData needs a unique const void* to serve as the key, so create a const -// void* and use its own address as the unique pointer. -const void* const UploadUserData::kUserDataKey = &UploadUserData::kUserDataKey; - ReportingUploader::Outcome ResponseCodeToOutcome(int response_code) { if (response_code >= 200 && response_code <= 299) return ReportingUploader::Outcome::SUCCESS; @@ -192,9 +179,7 @@ class ReportingUploaderImpl : public ReportingUploader, URLRequest::Delegate { // about reports" can get. (Without this, a Reporting policy that uploads // reports to the same origin can cause an infinite stack of reports about // reports.) - upload->request->SetUserData( - UploadUserData::kUserDataKey, - std::make_unique<UploadUserData>(upload->max_depth)); + upload->request->set_reporting_upload_depth(upload->max_depth + 1); URLRequest* raw_request = upload->request.get(); uploads_[raw_request] = std::move(upload); @@ -225,21 +210,13 @@ class ReportingUploaderImpl : public ReportingUploader, URLRequest::Delegate { // about reports" can get. (Without this, a Reporting policy that uploads // reports to the same origin can cause an infinite stack of reports about // reports.) - upload->request->SetUserData( - UploadUserData::kUserDataKey, - std::make_unique<UploadUserData>(upload->max_depth)); + upload->request->set_reporting_upload_depth(upload->max_depth + 1); URLRequest* raw_request = upload->request.get(); uploads_[raw_request] = std::move(upload); raw_request->Start(); } - int GetUploadDepth(const net::URLRequest& request) override { - UploadUserData* data = static_cast<UploadUserData*>( - request.GetUserData(UploadUserData::kUserDataKey)); - return data ? data->depth + 1 : 0; - } - // URLRequest::Delegate implementation: void OnReceivedRedirect(URLRequest* request, diff --git a/chromium/net/reporting/reporting_uploader.h b/chromium/net/reporting/reporting_uploader.h index 919b3f8af3a..96c91cc0fb3 100644 --- a/chromium/net/reporting/reporting_uploader.h +++ b/chromium/net/reporting/reporting_uploader.h @@ -19,7 +19,6 @@ class Origin; namespace net { -class URLRequest; class URLRequestContext; // Uploads already-serialized reports and converts responses to one of the @@ -42,9 +41,6 @@ class NET_EXPORT ReportingUploader { int max_depth, UploadCallback callback) = 0; - // Returns whether |request| is an upload request sent by this uploader. - virtual int GetUploadDepth(const URLRequest& request) = 0; - // Creates a real implementation of |ReportingUploader| that uploads reports // using |context|. static std::unique_ptr<ReportingUploader> Create( diff --git a/chromium/net/reporting/reporting_uploader_unittest.cc b/chromium/net/reporting/reporting_uploader_unittest.cc index 04c815582d8..1cf86c908af 100644 --- a/chromium/net/reporting/reporting_uploader_unittest.cc +++ b/chromium/net/reporting/reporting_uploader_unittest.cc @@ -244,7 +244,7 @@ std::unique_ptr<test_server::HttpResponse> ReturnPreflightError( return std::move(response); } -TEST_F(ReportingUploaderTest, FailedCORSPreflight) { +TEST_F(ReportingUploaderTest, FailedCorsPreflight) { server_.RegisterRequestHandler(base::BindRepeating(&ReturnPreflightError)); server_.RegisterRequestHandler(base::BindRepeating(&ReturnResponse, HTTP_OK)); ASSERT_TRUE(server_.Start()); @@ -273,7 +273,7 @@ std::unique_ptr<test_server::HttpResponse> ReturnPreflightWithoutOrigin( return std::move(response); } -TEST_F(ReportingUploaderTest, CORSPreflightWithoutOrigin) { +TEST_F(ReportingUploaderTest, CorsPreflightWithoutOrigin) { server_.RegisterRequestHandler( base::BindRepeating(&ReturnPreflightWithoutOrigin)); server_.RegisterRequestHandler(base::BindRepeating(&ReturnResponse, HTTP_OK)); @@ -303,7 +303,7 @@ std::unique_ptr<test_server::HttpResponse> ReturnPreflightWithoutMethods( return std::move(response); } -TEST_F(ReportingUploaderTest, CORSPreflightWithoutMethods) { +TEST_F(ReportingUploaderTest, CorsPreflightWithoutMethods) { server_.RegisterRequestHandler( base::BindRepeating(&ReturnPreflightWithoutMethods)); server_.RegisterRequestHandler(base::BindRepeating(&ReturnResponse, HTTP_OK)); @@ -333,7 +333,7 @@ std::unique_ptr<test_server::HttpResponse> ReturnPreflightWithoutHeaders( return std::move(response); } -TEST_F(ReportingUploaderTest, CORSPreflightWithoutHeaders) { +TEST_F(ReportingUploaderTest, CorsPreflightWithoutHeaders) { server_.RegisterRequestHandler( base::BindRepeating(&ReturnPreflightWithoutHeaders)); server_.RegisterRequestHandler(base::BindRepeating(&ReturnResponse, HTTP_OK)); |