Index: components/safe_browsing_db/v4_get_hash_protocol_manager.cc |
diff --git a/components/safe_browsing_db/v4_get_hash_protocol_manager.cc b/components/safe_browsing_db/v4_get_hash_protocol_manager.cc |
index 4b5f911d3aea69310fb8be800b29b7dff126aac1..8db01aca8cb180753c1e9941d74a2c4e090a013f 100644 |
--- a/components/safe_browsing_db/v4_get_hash_protocol_manager.cc |
+++ b/components/safe_browsing_db/v4_get_hash_protocol_manager.cc |
@@ -8,6 +8,7 @@ |
#include "base/base64url.h" |
#include "base/macros.h" |
+#include "base/memory/ptr_util.h" |
#include "base/metrics/histogram_macros.h" |
#include "base/timer/timer.h" |
#include "net/base/load_flags.h" |
@@ -119,10 +120,6 @@ V4GetHashProtocolManager::V4GetHashProtocolManager( |
clock_(new base::DefaultClock()) {} |
V4GetHashProtocolManager::~V4GetHashProtocolManager() { |
- // Delete in-progress SafeBrowsing requests. |
- STLDeleteContainerPairFirstPointers(hash_requests_.begin(), |
- hash_requests_.end()); |
- hash_requests_.clear(); |
} |
// static |
@@ -323,12 +320,11 @@ void V4GetHashProtocolManager::GetFullHashes( |
net::HttpRequestHeaders headers; |
GetHashUrlAndHeaders(req_base64, &gethash_url, &headers); |
- net::URLFetcher* fetcher = |
- net::URLFetcher::Create(url_fetcher_id_++, gethash_url, |
- net::URLFetcher::GET, this) |
- .release(); |
+ std::unique_ptr<net::URLFetcher> owned_fetcher = net::URLFetcher::Create( |
+ url_fetcher_id_++, gethash_url, net::URLFetcher::GET, this); |
+ net::URLFetcher* fetcher = owned_fetcher.get(); |
fetcher->SetExtraRequestHeaders(headers.ToString()); |
- hash_requests_[fetcher] = callback; |
+ hash_requests_[fetcher] = std::make_pair(std::move(owned_fetcher), callback); |
fetcher->SetLoadFlags(net::LOAD_DISABLE_CACHE); |
fetcher->SetRequestContext(request_context_getter_.get()); |
@@ -357,16 +353,12 @@ void V4GetHashProtocolManager::OnURLFetchComplete( |
HashRequests::iterator it = hash_requests_.find(source); |
DCHECK(it != hash_requests_.end()) << "Request not found"; |
- // FindFullHashes response. |
- // Reset the scoped pointer so the fetcher gets destroyed properly. |
- std::unique_ptr<const net::URLFetcher> fetcher(it->first); |
- |
int response_code = source->GetResponseCode(); |
net::URLRequestStatus status = source->GetStatus(); |
V4ProtocolManagerUtil::RecordHttpResponseOrErrorCode( |
kUmaV4HashResponseMetricName, status, response_code); |
- const FullHashCallback& callback = it->second; |
+ const FullHashCallback& callback = it->second.second; |
std::vector<SBFullHashResult> full_hashes; |
base::Time negative_cache_expire; |
if (status.is_success() && response_code == net::HTTP_OK) { |