OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/download/download_extension_api.h" | 5 #include "chrome/browser/download/download_extension_api.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cctype> | 8 #include <cctype> |
9 #include <iterator> | 9 #include <iterator> |
10 #include <set> | 10 #include <set> |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 return true; | 249 return true; |
250 } | 250 } |
251 | 251 |
252 void DownloadsDownloadFunction::BeginDownloadOnIOThread() { | 252 void DownloadsDownloadFunction::BeginDownloadOnIOThread() { |
253 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 253 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
254 DVLOG(1) << __FUNCTION__ << " " << iodata_->url.spec(); | 254 DVLOG(1) << __FUNCTION__ << " " << iodata_->url.spec(); |
255 DownloadSaveInfo save_info; | 255 DownloadSaveInfo save_info; |
256 // TODO(benjhayden) Ensure that this filename is interpreted as a path | 256 // TODO(benjhayden) Ensure that this filename is interpreted as a path |
257 // relative to the default downloads directory without allowing '..'. | 257 // relative to the default downloads directory without allowing '..'. |
258 save_info.suggested_name = iodata_->filename; | 258 save_info.suggested_name = iodata_->filename; |
259 net::URLRequest* request = new net::URLRequest(iodata_->url, iodata_->rdh); | 259 scoped_ptr<net::URLRequest> request( |
| 260 new net::URLRequest(iodata_->url, iodata_->rdh)); |
260 request->set_method(iodata_->method); | 261 request->set_method(iodata_->method); |
261 if (iodata_->extra_headers != NULL) { | 262 if (iodata_->extra_headers != NULL) { |
262 for (size_t index = 0; index < iodata_->extra_headers->GetSize(); ++index) { | 263 for (size_t index = 0; index < iodata_->extra_headers->GetSize(); ++index) { |
263 base::DictionaryValue* header = NULL; | 264 base::DictionaryValue* header = NULL; |
264 std::string name, value; | 265 std::string name, value; |
265 CHECK(iodata_->extra_headers->GetDictionary(index, &header)); | 266 CHECK(iodata_->extra_headers->GetDictionary(index, &header)); |
266 CHECK(header->GetString("name", &name)); | 267 CHECK(header->GetString("name", &name)); |
267 CHECK(header->GetString("value", &value)); | 268 CHECK(header->GetString("value", &value)); |
268 request->SetExtraRequestHeaderByName(name, value, false/*overwrite*/); | 269 request->SetExtraRequestHeaderByName(name, value, false/*overwrite*/); |
269 } | 270 } |
270 } | 271 } |
271 if (!iodata_->post_body.empty()) { | 272 if (!iodata_->post_body.empty()) { |
272 request->AppendBytesToUpload(iodata_->post_body.data(), | 273 request->AppendBytesToUpload(iodata_->post_body.data(), |
273 iodata_->post_body.size()); | 274 iodata_->post_body.size()); |
274 } | 275 } |
275 iodata_->rdh->BeginDownload( | 276 iodata_->rdh->BeginDownload( |
276 request, | 277 request.Pass(), |
277 save_info, | 278 save_info, |
278 iodata_->save_as, | 279 iodata_->save_as, |
279 base::Bind(&DownloadsDownloadFunction::OnStarted, this), | 280 base::Bind(&DownloadsDownloadFunction::OnStarted, this), |
280 iodata_->render_process_host_id, | 281 iodata_->render_process_host_id, |
281 iodata_->render_view_host_routing_id, | 282 iodata_->render_view_host_routing_id, |
282 *(iodata_->resource_context)); | 283 *(iodata_->resource_context)); |
283 iodata_.reset(); | 284 iodata_.reset(); |
284 } | 285 } |
285 | 286 |
286 void DownloadsDownloadFunction::OnStarted(DownloadId dl_id, net::Error error) { | 287 void DownloadsDownloadFunction::OnStarted(DownloadId dl_id, net::Error error) { |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
727 ListValue args; | 728 ListValue args; |
728 args.Append(arg); | 729 args.Append(arg); |
729 std::string json_args; | 730 std::string json_args; |
730 base::JSONWriter::Write(&args, false, &json_args); | 731 base::JSONWriter::Write(&args, false, &json_args); |
731 profile_->GetExtensionEventRouter()->DispatchEventToRenderers( | 732 profile_->GetExtensionEventRouter()->DispatchEventToRenderers( |
732 event_name, | 733 event_name, |
733 json_args, | 734 json_args, |
734 profile_, | 735 profile_, |
735 GURL()); | 736 GURL()); |
736 } | 737 } |
OLD | NEW |