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 |