Chromium Code Reviews| Index: third_party/libaddressinput/chromium/chrome_downloader_impl.cc |
| diff --git a/third_party/libaddressinput/chromium/chrome_downloader_impl.cc b/third_party/libaddressinput/chromium/chrome_downloader_impl.cc |
| index 507cc9ed8f17b3389cafd78ac17e0696a0d7d7b1..433a1161403812f3763122d843d1b12094352525 100644 |
| --- a/third_party/libaddressinput/chromium/chrome_downloader_impl.cc |
| +++ b/third_party/libaddressinput/chromium/chrome_downloader_impl.cc |
| @@ -55,27 +55,9 @@ ChromeDownloaderImpl::~ChromeDownloaderImpl() { |
| STLDeleteValues(&requests_); |
| } |
| -void ChromeDownloaderImpl::Download( |
| - const std::string& url, |
| - scoped_ptr<Callback> downloaded) { |
| - GURL resource(url); |
| - if (!resource.SchemeIsSecure()) { |
| - (*downloaded)(false, url, make_scoped_ptr(new std::string())); |
| - return; |
| - } |
| - |
| - scoped_ptr<net::URLFetcher> fetcher( |
| - net::URLFetcher::Create(resource, net::URLFetcher::GET, this)); |
| - fetcher->SetLoadFlags( |
| - net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES); |
| - fetcher->SetRequestContext(getter_); |
| - |
| - Request* request = new Request(url, fetcher.Pass(), downloaded.Pass()); |
| - request->fetcher->SaveResponseWithWriter( |
| - scoped_ptr<net::URLFetcherResponseWriter>( |
| - new UnownedStringWriter(&request->data))); |
| - requests_[request->fetcher.get()] = request; |
| - request->fetcher->Start(); |
| +void ChromeDownloaderImpl::Download(const std::string& url, |
| + const Callback& downloaded) const { |
| + const_cast<ChromeDownloaderImpl*>(this)->DoDownload(url, downloaded); |
| } |
| void ChromeDownloaderImpl::OnURLFetchComplete(const net::URLFetcher* source) { |
| @@ -84,10 +66,10 @@ void ChromeDownloaderImpl::OnURLFetchComplete(const net::URLFetcher* source) { |
| DCHECK(request != requests_.end()); |
| bool ok = source->GetResponseCode() == net::HTTP_OK; |
| - scoped_ptr<std::string> data(new std::string()); |
| + std::string data; |
| if (ok) |
| - data->swap(request->second->data); |
| - (*request->second->callback)(ok, request->second->url, data.Pass()); |
| + data.swap(request->second->data); |
| + request->second->callback(ok, request->second->url, data); |
|
Evan Stade
2014/06/12 00:18:09
why add a copy operation?
please use gerrit instead
2014/06/13 19:22:09
Done.
|
| delete request->second; |
| requests_.erase(request); |
| @@ -95,9 +77,31 @@ void ChromeDownloaderImpl::OnURLFetchComplete(const net::URLFetcher* source) { |
| ChromeDownloaderImpl::Request::Request(const std::string& url, |
| scoped_ptr<net::URLFetcher> fetcher, |
| - scoped_ptr<Callback> callback) |
| + const Callback& callback) |
| : url(url), |
| fetcher(fetcher.Pass()), |
| - callback(callback.Pass()) {} |
| + callback(callback) {} |
| + |
| +void ChromeDownloaderImpl::DoDownload(const std::string& url, |
| + const Callback& downloaded) { |
| + GURL resource(url); |
| + if (!resource.SchemeIsSecure()) { |
| + downloaded(false, url, std::string()); |
| + return; |
| + } |
| + |
| + scoped_ptr<net::URLFetcher> fetcher( |
| + net::URLFetcher::Create(resource, net::URLFetcher::GET, this)); |
| + fetcher->SetLoadFlags( |
| + net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES); |
| + fetcher->SetRequestContext(getter_); |
| + |
| + Request* request = new Request(url, fetcher.Pass(), downloaded); |
| + request->fetcher->SaveResponseWithWriter( |
| + scoped_ptr<net::URLFetcherResponseWriter>( |
| + new UnownedStringWriter(&request->data))); |
| + requests_[request->fetcher.get()] = request; |
| + request->fetcher->Start(); |
| +} |
| } // namespace autofill |