| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/net/chrome_dns_cert_provenance_checker.h" | 5 #include "chrome/browser/net/chrome_dns_cert_provenance_checker.h" |
| 6 | 6 |
| 7 #include "base/scoped_ptr.h" | 7 #include "base/scoped_ptr.h" |
| 8 #include "base/stl_util-inl.h" | 8 #include "base/stl_util-inl.h" |
| 9 #include "chrome/browser/net/chrome_url_request_context.h" | 9 #include "chrome/browser/net/chrome_url_request_context.h" |
| 10 #include "net/url_request/url_request.h" | 10 #include "net/url_request/url_request.h" |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 inflight_requests_.end()); | 41 inflight_requests_.end()); |
| 42 inflight_requests_.clear(); | 42 inflight_requests_.clear(); |
| 43 } | 43 } |
| 44 | 44 |
| 45 // DnsCertProvenanceChecker::Delegate interface | 45 // DnsCertProvenanceChecker::Delegate interface |
| 46 virtual void OnDnsCertLookupFailed( | 46 virtual void OnDnsCertLookupFailed( |
| 47 const std::string& hostname, | 47 const std::string& hostname, |
| 48 const std::vector<std::string>& der_certs) { | 48 const std::vector<std::string>& der_certs) { |
| 49 const std::string report = BuildEncryptedReport(hostname, der_certs); | 49 const std::string report = BuildEncryptedReport(hostname, der_certs); |
| 50 | 50 |
| 51 URLRequest* url_request(new URLRequest(upload_url_, &delegate_)); | 51 net::URLRequest* url_request(new net::URLRequest(upload_url_, &delegate_)); |
| 52 url_request->set_context(url_req_context_); | 52 url_request->set_context(url_req_context_); |
| 53 url_request->set_method("POST"); | 53 url_request->set_method("POST"); |
| 54 url_request->AppendBytesToUpload(report.data(), report.size()); | 54 url_request->AppendBytesToUpload(report.data(), report.size()); |
| 55 net::HttpRequestHeaders headers; | 55 net::HttpRequestHeaders headers; |
| 56 headers.SetHeader(net::HttpRequestHeaders::kContentType, | 56 headers.SetHeader(net::HttpRequestHeaders::kContentType, |
| 57 "x-application/chrome-cert-provenance-report"); | 57 "x-application/chrome-cert-provenance-report"); |
| 58 url_request->SetExtraRequestHeaders(headers); | 58 url_request->SetExtraRequestHeaders(headers); |
| 59 inflight_requests_.insert(url_request); | 59 inflight_requests_.insert(url_request); |
| 60 url_request->Start(); | 60 url_request->Start(); |
| 61 } | 61 } |
| 62 | 62 |
| 63 private: | 63 private: |
| 64 void RequestComplete(URLRequest* request) { | 64 void RequestComplete(net::URLRequest* request) { |
| 65 std::set<URLRequest*>::iterator i = inflight_requests_.find(request); | 65 std::set<net::URLRequest*>::iterator i = inflight_requests_.find(request); |
| 66 DCHECK(i != inflight_requests_.end()); | 66 DCHECK(i != inflight_requests_.end()); |
| 67 delete *i; | 67 delete *i; |
| 68 inflight_requests_.erase(i); | 68 inflight_requests_.erase(i); |
| 69 } | 69 } |
| 70 | 70 |
| 71 // URLRequestDelegate is the delegate for the upload. Since this is a | 71 // URLRequestDelegate is the delegate for the upload. Since this is a |
| 72 // fire-and-forget operation, we don't care if there are any errors in the | 72 // fire-and-forget operation, we don't care if there are any errors in the |
| 73 // upload. | 73 // upload. |
| 74 class URLRequestDelegate : public URLRequest::Delegate { | 74 class URLRequestDelegate : public net::URLRequest::Delegate { |
| 75 public: | 75 public: |
| 76 explicit URLRequestDelegate(ChromeDnsCertProvenanceChecker* checker) | 76 explicit URLRequestDelegate(ChromeDnsCertProvenanceChecker* checker) |
| 77 : checker_(checker) { | 77 : checker_(checker) { |
| 78 } | 78 } |
| 79 | 79 |
| 80 // Delegate implementation | 80 // Delegate implementation |
| 81 void OnResponseStarted(URLRequest* request) { | 81 void OnResponseStarted(net::URLRequest* request) { |
| 82 const URLRequestStatus& status(request->status()); | 82 const URLRequestStatus& status(request->status()); |
| 83 if (!status.is_success()) { | 83 if (!status.is_success()) { |
| 84 LOG(WARNING) << "Certificate upload failed" | 84 LOG(WARNING) << "Certificate upload failed" |
| 85 << " status:" << status.status() | 85 << " status:" << status.status() |
| 86 << " os_error:" << status.os_error(); | 86 << " os_error:" << status.os_error(); |
| 87 } else if (request->GetResponseCode() != 200) { | 87 } else if (request->GetResponseCode() != 200) { |
| 88 LOG(WARNING) << "Certificate upload HTTP status: " | 88 LOG(WARNING) << "Certificate upload HTTP status: " |
| 89 << request->GetResponseCode(); | 89 << request->GetResponseCode(); |
| 90 } | 90 } |
| 91 checker_->RequestComplete(request); | 91 checker_->RequestComplete(request); |
| 92 } | 92 } |
| 93 | 93 |
| 94 void OnReadCompleted(URLRequest* request, int bytes_read) { | 94 void OnReadCompleted(net::URLRequest* request, int bytes_read) { |
| 95 NOTREACHED(); | 95 NOTREACHED(); |
| 96 } | 96 } |
| 97 | 97 |
| 98 private: | 98 private: |
| 99 ChromeDnsCertProvenanceChecker* const checker_; | 99 ChromeDnsCertProvenanceChecker* const checker_; |
| 100 }; | 100 }; |
| 101 | 101 |
| 102 net::DnsRRResolver* const dnsrr_resolver_; | 102 net::DnsRRResolver* const dnsrr_resolver_; |
| 103 ChromeURLRequestContext* const url_req_context_; | 103 ChromeURLRequestContext* const url_req_context_; |
| 104 const GURL upload_url_; | 104 const GURL upload_url_; |
| 105 URLRequestDelegate delegate_; | 105 URLRequestDelegate delegate_; |
| 106 std::set<URLRequest*> inflight_requests_; | 106 std::set<net::URLRequest*> inflight_requests_; |
| 107 }; | 107 }; |
| 108 | 108 |
| 109 } // namespace | 109 } // namespace |
| 110 | 110 |
| 111 net::DnsCertProvenanceChecker* CreateChromeDnsCertProvenanceChecker( | 111 net::DnsCertProvenanceChecker* CreateChromeDnsCertProvenanceChecker( |
| 112 net::DnsRRResolver* dnsrr_resolver, | 112 net::DnsRRResolver* dnsrr_resolver, |
| 113 ChromeURLRequestContext* url_req_context) { | 113 ChromeURLRequestContext* url_req_context) { |
| 114 return new ChromeDnsCertProvenanceChecker(dnsrr_resolver, url_req_context); | 114 return new ChromeDnsCertProvenanceChecker(dnsrr_resolver, url_req_context); |
| 115 } | 115 } |
| OLD | NEW |