Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(834)

Unified Diff: net/url_request/url_request_http_job.cc

Issue 2249213002: [OBSOLETE] Reporting: Initial implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/url_request/url_request_http_job.cc
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
index e35938088eaf77926a08624e14578e8666249ec8..b02bec4e1d40f1ce179eac81844af93054b7f920 100644
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -55,6 +55,8 @@
#include "net/proxy/proxy_info.h"
#include "net/proxy/proxy_retry_info.h"
#include "net/proxy/proxy_service.h"
+#include "net/reporting/reporting_metrics.h"
+#include "net/reporting/reporting_service.h"
#include "net/ssl/channel_id_service.h"
#include "net/ssl/ssl_cert_request_info.h"
#include "net/ssl/ssl_config_service.h"
@@ -368,6 +370,7 @@ void URLRequestHttpJob::NotifyHeadersComplete() {
ProcessStrictTransportSecurityHeader();
ProcessPublicKeyPinsHeader();
ProcessExpectCTHeader();
+ ProcessReportToHeader();
// Handle the server notification of a new SDCH dictionary.
SdchManager* sdch_manager(request()->context()->sdch_manager());
@@ -860,6 +863,31 @@ void URLRequestHttpJob::ProcessExpectCTHeader() {
}
}
+void URLRequestHttpJob::ProcessReportToHeader() {
+ DCHECK(response_info_);
+
+ ReportingService* reporting_service =
+ request_->context()->reporting_service();
+ if (!reporting_service) {
+ HistogramHeader(HEADER_FATE_DROPPED_NO_SERVICE);
+ return;
+ }
+
+ // Only accept Report-To headers on HTTPS connections that have no
+ // certificate errors.
+ // TODO(juliatuttle): Do we need to check cert status?
+ const SSLInfo& ssl_info = response_info_->ssl_info;
+ if (!ssl_info.is_valid() || IsCertStatusError(ssl_info.cert_status))
+ return;
+
+ HttpResponseHeaders* headers = GetResponseHeaders();
+ std::string value;
+ if (!headers->GetNormalizedHeader("Report-To", &value))
+ return;
+
+ reporting_service->ProcessHeader(request_info_.url.GetOrigin(), value);
+}
+
void URLRequestHttpJob::OnStartCompleted(int result) {
TRACE_EVENT0(kNetTracingCategory, "URLRequestHttpJob::OnStartCompleted");
RecordTimer();

Powered by Google App Engine
This is Rietveld 408576698