Index: chrome/browser/net/certificate_error_reporter.cc |
diff --git a/chrome/browser/net/certificate_error_reporter.cc b/chrome/browser/net/certificate_error_reporter.cc |
index c1f15914001244b9ebfb3fb563ea800e3d11f863..077b0abc00c9e2257d706be623caf787338380c1 100644 |
--- a/chrome/browser/net/certificate_error_reporter.cc |
+++ b/chrome/browser/net/certificate_error_reporter.cc |
@@ -16,11 +16,7 @@ |
#include "crypto/curve25519.h" |
#include "crypto/hkdf.h" |
#include "crypto/random.h" |
-#include "net/base/elements_upload_data_stream.h" |
-#include "net/base/load_flags.h" |
-#include "net/base/request_priority.h" |
-#include "net/base/upload_bytes_element_reader.h" |
-#include "net/url_request/url_request_context.h" |
+#include "net/url_request/certificate_report_sender.h" |
namespace { |
@@ -87,30 +83,28 @@ namespace chrome_browser_net { |
CertificateErrorReporter::CertificateErrorReporter( |
net::URLRequestContext* request_context, |
const GURL& upload_url, |
- CookiesPreference cookies_preference) |
- : CertificateErrorReporter(request_context, |
- upload_url, |
- cookies_preference, |
+ net::CertificateReportSender::CookiesPreference cookies_preference) |
+ : CertificateErrorReporter(upload_url, |
kServerPublicKey, |
- kServerPublicKeyVersion) { |
-} |
+ kServerPublicKeyVersion, |
+ make_scoped_ptr(new net::CertificateReportSender( |
+ request_context, |
+ cookies_preference))) {} |
CertificateErrorReporter::CertificateErrorReporter( |
- net::URLRequestContext* request_context, |
const GURL& upload_url, |
- CookiesPreference cookies_preference, |
const uint8 server_public_key[32], |
- const uint32 server_public_key_version) |
- : request_context_(request_context), |
+ const uint32 server_public_key_version, |
+ scoped_ptr<net::CertificateReportSender> certificate_report_sender) |
+ : certificate_report_sender_(certificate_report_sender.Pass()), |
upload_url_(upload_url), |
- cookies_preference_(cookies_preference), |
server_public_key_(server_public_key), |
server_public_key_version_(server_public_key_version) { |
+ DCHECK(certificate_report_sender_); |
DCHECK(!upload_url.is_empty()); |
} |
CertificateErrorReporter::~CertificateErrorReporter() { |
- STLDeleteElements(&inflight_requests_); |
} |
void CertificateErrorReporter::SendReport( |
@@ -118,11 +112,11 @@ void CertificateErrorReporter::SendReport( |
const std::string& serialized_report) { |
switch (type) { |
case REPORT_TYPE_PINNING_VIOLATION: |
- SendSerializedRequest(serialized_report); |
+ certificate_report_sender_->Send(upload_url_, serialized_report); |
break; |
case REPORT_TYPE_EXTENDED_REPORTING: |
if (upload_url_.SchemeIsCryptographic()) { |
- SendSerializedRequest(serialized_report); |
+ certificate_report_sender_->Send(upload_url_, serialized_report); |
} else { |
DCHECK(IsHttpUploadUrlSupported()); |
#if defined(USE_OPENSSL) |
@@ -135,7 +129,8 @@ void CertificateErrorReporter::SendReport( |
} |
std::string serialized_encrypted_report; |
encrypted_report.SerializeToString(&serialized_encrypted_report); |
- SendSerializedRequest(serialized_encrypted_report); |
+ certificate_report_sender_->Send(upload_url_, |
+ serialized_encrypted_report); |
#endif |
} |
break; |
@@ -144,34 +139,6 @@ void CertificateErrorReporter::SendReport( |
} |
} |
-void CertificateErrorReporter::OnResponseStarted(net::URLRequest* request) { |
- const net::URLRequestStatus& status(request->status()); |
- if (!status.is_success()) { |
- LOG(WARNING) << "Certificate upload failed" |
- << " status:" << status.status() |
- << " error:" << status.error(); |
- } else if (request->GetResponseCode() != 200) { |
- LOG(WARNING) << "Certificate upload HTTP status: " |
- << request->GetResponseCode(); |
- } |
- RequestComplete(request); |
-} |
- |
-void CertificateErrorReporter::OnReadCompleted(net::URLRequest* request, |
- int bytes_read) { |
-} |
- |
-scoped_ptr<net::URLRequest> CertificateErrorReporter::CreateURLRequest( |
- net::URLRequestContext* context) { |
- scoped_ptr<net::URLRequest> request = |
- context->CreateRequest(upload_url_, net::DEFAULT_PRIORITY, this); |
- if (cookies_preference_ != SEND_COOKIES) { |
- request->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | |
- net::LOAD_DO_NOT_SAVE_COOKIES); |
- } |
- return request.Pass(); |
-} |
- |
bool CertificateErrorReporter::IsHttpUploadUrlSupported() { |
#if defined(USE_OPENSSL) |
return true; |
@@ -211,31 +178,4 @@ bool CertificateErrorReporter::DecryptCertificateErrorReport( |
} |
#endif |
-void CertificateErrorReporter::SendSerializedRequest( |
- const std::string& serialized_request) { |
- scoped_ptr<net::URLRequest> url_request = CreateURLRequest(request_context_); |
- url_request->set_method("POST"); |
- |
- scoped_ptr<net::UploadElementReader> reader( |
- net::UploadOwnedBytesElementReader::CreateWithString(serialized_request)); |
- url_request->set_upload( |
- net::ElementsUploadDataStream::CreateWithReader(reader.Pass(), 0)); |
- |
- net::HttpRequestHeaders headers; |
- headers.SetHeader(net::HttpRequestHeaders::kContentType, |
- "x-application/chrome-fraudulent-cert-report"); |
- url_request->SetExtraRequestHeaders(headers); |
- |
- net::URLRequest* raw_url_request = url_request.get(); |
- inflight_requests_.insert(url_request.release()); |
- raw_url_request->Start(); |
-} |
- |
-void CertificateErrorReporter::RequestComplete(net::URLRequest* request) { |
- std::set<net::URLRequest*>::iterator i = inflight_requests_.find(request); |
- DCHECK(i != inflight_requests_.end()); |
- scoped_ptr<net::URLRequest> url_request(*i); |
- inflight_requests_.erase(i); |
-} |
- |
} // namespace chrome_browser_net |