Chromium Code Reviews| Index: net/url_request/report_sender.cc |
| diff --git a/net/url_request/report_sender.cc b/net/url_request/report_sender.cc |
| index 16503608f9c4354f5b807135b909b57ddd149a48..226eaba7c32035e62c9c59c1d1732cc7ff77ccac 100644 |
| --- a/net/url_request/report_sender.cc |
| +++ b/net/url_request/report_sender.cc |
| @@ -6,7 +6,6 @@ |
| #include <utility> |
| -#include "base/stl_util.h" |
| #include "net/base/elements_upload_data_stream.h" |
| #include "net/base/load_flags.h" |
| #include "net/base/request_priority.h" |
| @@ -28,8 +27,6 @@ ReportSender::ReportSender(URLRequestContext* request_context, |
| error_callback_(error_callback) {} |
| ReportSender::~ReportSender() { |
| - // Cancel all of the uncompleted requests. |
| - base::STLDeleteElements(&inflight_requests_); |
| } |
| void ReportSender::Send(const GURL& report_uri, |
| @@ -59,7 +56,7 @@ void ReportSender::Send(const GURL& report_uri, |
| ElementsUploadDataStream::CreateWithReader(std::move(reader), 0)); |
| URLRequest* raw_url_request = url_request.get(); |
| - inflight_requests_.insert(url_request.release()); |
| + inflight_requests_.insert(std::move(url_request)); |
| raw_url_request->Start(); |
| } |
| @@ -76,9 +73,12 @@ void ReportSender::OnResponseStarted(URLRequest* request, int net_error) { |
| error_callback_.Run(request->url(), net_error); |
| } |
| - CHECK_GT(inflight_requests_.erase(request), 0u); |
| - // Clean up the request, which cancels it. |
| - delete request; |
| + auto it = std::find_if(inflight_requests_.begin(), inflight_requests_.end(), |
| + [request](const std::unique_ptr<URLRequest>& ptr) { |
| + return ptr.get() == request; |
| + }); |
| + CHECK(it != inflight_requests_.end()); |
| + inflight_requests_.erase(it); |
|
davidben
2016/10/03 16:01:38
I should have noticed this for the other CL, but i
Avi (use Gerrit)
2016/10/03 16:27:25
If we're talking efficiency, linked lists and sets
|
| } |
| void ReportSender::OnReadCompleted(URLRequest* request, int bytes_read) { |