summaryrefslogtreecommitdiff
path: root/chromium/net/reporting
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-02-13 15:05:36 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-02-14 10:33:47 +0000
commite684a3455bcc29a6e3e66a004e352dea4e1141e7 (patch)
treed55b4003bde34d7d05f558f02cfd82b2a66a7aac /chromium/net/reporting
parent2b94bfe47ccb6c08047959d1c26e392919550e86 (diff)
downloadqtwebengine-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.cc2
-rw-r--r--chromium/net/reporting/reporting_header_parser.cc71
-rw-r--r--chromium/net/reporting/reporting_header_parser.h49
-rw-r--r--chromium/net/reporting/reporting_header_parser_unittest.cc14
-rw-r--r--chromium/net/reporting/reporting_service.cc5
-rw-r--r--chromium/net/reporting/reporting_service.h5
-rw-r--r--chromium/net/reporting/reporting_test_util.cc5
-rw-r--r--chromium/net/reporting/reporting_test_util.h2
-rw-r--r--chromium/net/reporting/reporting_uploader.cc27
-rw-r--r--chromium/net/reporting/reporting_uploader.h4
-rw-r--r--chromium/net/reporting/reporting_uploader_unittest.cc8
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));