Index: chrome/browser/spellchecker/spelling_service_client.cc |
diff --git a/chrome/browser/spellchecker/spelling_service_client.cc b/chrome/browser/spellchecker/spelling_service_client.cc |
index be81257ea7a97823b2a64b041d2cb6ce70ace399..ae93f397f1018724560b8c401bfb4f8868212161 100644 |
--- a/chrome/browser/spellchecker/spelling_service_client.cc |
+++ b/chrome/browser/spellchecker/spelling_service_client.cc |
@@ -11,6 +11,7 @@ |
#include "base/json/json_reader.h" |
#include "base/json/string_escape.h" |
#include "base/logging.h" |
+#include "base/memory/ptr_util.h" |
#include "base/stl_util.h" |
#include "base/strings/string_util.h" |
#include "base/strings/stringprintf.h" |
@@ -50,8 +51,6 @@ SpellingServiceClient::SpellingServiceClient() { |
} |
SpellingServiceClient::~SpellingServiceClient() { |
- base::STLDeleteContainerPairPointers(spellcheck_fetchers_.begin(), |
- spellcheck_fetchers_.end()); |
} |
bool SpellingServiceClient::RequestTextCheck( |
@@ -117,7 +116,9 @@ bool SpellingServiceClient::RequestTextCheck( |
fetcher->SetUploadData("application/json", request); |
fetcher->SetLoadFlags( |
net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES); |
- spellcheck_fetchers_[fetcher] = new TextCheckCallbackData(callback, text); |
+ |
+ spellcheck_fetchers_[fetcher] = base::MakeUnique<TextCheckCallbackData>( |
+ base::WrapUnique(fetcher), callback, text); |
fetcher->Start(); |
return true; |
} |
@@ -247,29 +248,27 @@ bool SpellingServiceClient::ParseResponse( |
} |
SpellingServiceClient::TextCheckCallbackData::TextCheckCallbackData( |
+ std::unique_ptr<net::URLFetcher> fetcher, |
TextCheckCompleteCallback callback, |
base::string16 text) |
- : callback(callback), |
- text(text) { |
-} |
+ : fetcher(std::move(fetcher)), callback(callback), text(text) {} |
SpellingServiceClient::TextCheckCallbackData::~TextCheckCallbackData() { |
} |
-void SpellingServiceClient::OnURLFetchComplete( |
- const net::URLFetcher* source) { |
- DCHECK(spellcheck_fetchers_[source]); |
- std::unique_ptr<const net::URLFetcher> fetcher(source); |
- std::unique_ptr<TextCheckCallbackData> callback_data( |
- spellcheck_fetchers_[fetcher.get()]); |
+void SpellingServiceClient::OnURLFetchComplete(const net::URLFetcher* source) { |
+ DCHECK(base::ContainsKey(spellcheck_fetchers_, source)); |
+ std::unique_ptr<TextCheckCallbackData> callback_data = |
+ std::move(spellcheck_fetchers_[source]); |
+ spellcheck_fetchers_.erase(source); |
+ |
bool success = false; |
std::vector<SpellCheckResult> results; |
- if (fetcher->GetResponseCode() / 100 == 2) { |
+ if (source->GetResponseCode() / 100 == 2) { |
std::string data; |
- fetcher->GetResponseAsString(&data); |
+ source->GetResponseAsString(&data); |
success = ParseResponse(data, &results); |
} |
- spellcheck_fetchers_.erase(fetcher.get()); |
// The callback may release the last (transitive) dependency on |this|. It |
// MUST be the last function called. |