Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: content/browser/download/download_resource_handler.cc

Issue 8343042: Replace NewRunnableMethod with Callback in DownloadResourceHandler. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: add missing include Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "content/browser/download/download_resource_handler.h" 5 #include "content/browser/download/download_resource_handler.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h"
9 #include "base/logging.h" 10 #include "base/logging.h"
10 #include "base/metrics/histogram.h" 11 #include "base/metrics/histogram.h"
11 #include "base/metrics/stats_counters.h" 12 #include "base/metrics/stats_counters.h"
12 #include "base/stringprintf.h" 13 #include "base/stringprintf.h"
13 #include "content/browser/browser_thread.h" 14 #include "content/browser/browser_thread.h"
14 #include "content/browser/download/download_buffer.h" 15 #include "content/browser/download/download_buffer.h"
15 #include "content/browser/download/download_create_info.h" 16 #include "content/browser/download/download_create_info.h"
16 #include "content/browser/download/download_file_manager.h" 17 #include "content/browser/download/download_file_manager.h"
17 #include "content/browser/download/download_item.h" 18 #include "content/browser/download/download_item.h"
18 #include "content/browser/download/download_request_handle.h" 19 #include "content/browser/download/download_request_handle.h"
19 #include "content/browser/download/download_request_handle.h"
20 #include "content/browser/download/download_stats.h" 20 #include "content/browser/download/download_stats.h"
21 #include "content/browser/download/interrupt_reasons.h" 21 #include "content/browser/download/interrupt_reasons.h"
22 #include "content/browser/renderer_host/global_request_id.h" 22 #include "content/browser/renderer_host/global_request_id.h"
23 #include "content/browser/renderer_host/resource_dispatcher_host.h" 23 #include "content/browser/renderer_host/resource_dispatcher_host.h"
24 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" 24 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h"
25 #include "content/common/resource_response.h" 25 #include "content/common/resource_response.h"
26 #include "net/base/io_buffer.h" 26 #include "net/base/io_buffer.h"
27 #include "net/base/net_errors.h" 27 #include "net/base/net_errors.h"
28 #include "net/http/http_response_headers.h" 28 #include "net/http/http_response_headers.h"
29 #include "net/url_request/url_request_context.h" 29 #include "net/url_request/url_request_context.h"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 !response->response_head.headers->GetMimeType(&content_type_header)) 116 !response->response_head.headers->GetMimeType(&content_type_header))
117 content_type_header = ""; 117 content_type_header = "";
118 info->original_mime_type = content_type_header; 118 info->original_mime_type = content_type_header;
119 119
120 info->prompt_user_for_save_location = 120 info->prompt_user_for_save_location =
121 save_as_ && save_info_.file_path.empty(); 121 save_as_ && save_info_.file_path.empty();
122 info->referrer_charset = request_->context()->referrer_charset(); 122 info->referrer_charset = request_->context()->referrer_charset();
123 info->save_info = save_info_; 123 info->save_info = save_info_;
124 BrowserThread::PostTask( 124 BrowserThread::PostTask(
125 BrowserThread::UI, FROM_HERE, 125 BrowserThread::UI, FROM_HERE,
126 NewRunnableMethod( 126 base::Bind(&DownloadFileManager::StartDownload,
127 download_file_manager_, &DownloadFileManager::StartDownload, 127 download_file_manager_, info, request_handle));
128 info, request_handle));
129 128
130 // We can't start saving the data before we create the file on disk. 129 // We can't start saving the data before we create the file on disk.
131 // The request will be un-paused in DownloadFileManager::CreateDownloadFile. 130 // The request will be un-paused in DownloadFileManager::CreateDownloadFile.
132 rdh_->PauseRequest(global_id_.child_id, global_id_.request_id, true); 131 rdh_->PauseRequest(global_id_.child_id, global_id_.request_id, true);
133 132
134 return true; 133 return true;
135 } 134 }
136 135
137 void DownloadResourceHandler::CallStartedCB(net::Error error) { 136 void DownloadResourceHandler::CallStartedCB(net::Error error) {
138 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 137 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
(...skipping 30 matching lines...) Expand all
169 // Swap the data. 168 // Swap the data.
170 net::IOBuffer* io_buffer = NULL; 169 net::IOBuffer* io_buffer = NULL;
171 read_buffer_.swap(&io_buffer); 170 read_buffer_.swap(&io_buffer);
172 size_t vector_size = buffer_->AddData(io_buffer, *bytes_read); 171 size_t vector_size = buffer_->AddData(io_buffer, *bytes_read);
173 bool need_update = (vector_size == 1); // Buffer was empty. 172 bool need_update = (vector_size == 1); // Buffer was empty.
174 173
175 // We are passing ownership of this buffer to the download file manager. 174 // We are passing ownership of this buffer to the download file manager.
176 if (need_update) { 175 if (need_update) {
177 BrowserThread::PostTask( 176 BrowserThread::PostTask(
178 BrowserThread::FILE, FROM_HERE, 177 BrowserThread::FILE, FROM_HERE,
179 NewRunnableMethod(download_file_manager_, 178 base::Bind(&DownloadFileManager::UpdateDownload,
180 &DownloadFileManager::UpdateDownload, 179 download_file_manager_, download_id_, buffer_));
181 download_id_,
182 buffer_));
183 } 180 }
184 181
185 // We schedule a pause outside of the read loop if there is too much file 182 // We schedule a pause outside of the read loop if there is too much file
186 // writing work to do. 183 // writing work to do.
187 if (vector_size > kLoadsToWrite) 184 if (vector_size > kLoadsToWrite)
188 StartPauseTimer(); 185 StartPauseTimer();
189 186
190 return true; 187 return true;
191 } 188 }
192 189
(...skipping 24 matching lines...) Expand all
217 // CANCELED/ERR_ABORTED can occur for reasons other than user cancel. 214 // CANCELED/ERR_ABORTED can occur for reasons other than user cancel.
218 reason = DOWNLOAD_INTERRUPT_REASON_USER_CANCELED; // User canceled. 215 reason = DOWNLOAD_INTERRUPT_REASON_USER_CANCELED; // User canceled.
219 } 216 }
220 if (!download_id_.IsValid()) 217 if (!download_id_.IsValid())
221 CallStartedCB(error_code); 218 CallStartedCB(error_code);
222 // We transfer ownership to |DownloadFileManager| to delete |buffer_|, 219 // We transfer ownership to |DownloadFileManager| to delete |buffer_|,
223 // so that any functions queued up on the FILE thread are executed 220 // so that any functions queued up on the FILE thread are executed
224 // before deletion. 221 // before deletion.
225 BrowserThread::PostTask( 222 BrowserThread::PostTask(
226 BrowserThread::FILE, FROM_HERE, 223 BrowserThread::FILE, FROM_HERE,
227 NewRunnableMethod(download_file_manager_, 224 base::Bind(&DownloadFileManager::OnResponseCompleted,
228 &DownloadFileManager::OnResponseCompleted, 225 download_file_manager_, download_id_, reason, security_info));
229 download_id_,
230 reason,
231 security_info));
232 buffer_ = NULL; // The buffer is longer needed by |DownloadResourceHandler|. 226 buffer_ = NULL; // The buffer is longer needed by |DownloadResourceHandler|.
233 read_buffer_ = NULL; 227 read_buffer_ = NULL;
234 return true; 228 return true;
235 } 229 }
236 230
237 void DownloadResourceHandler::OnRequestClosed() { 231 void DownloadResourceHandler::OnRequestClosed() {
238 UMA_HISTOGRAM_TIMES("SB2.DownloadDuration", 232 UMA_HISTOGRAM_TIMES("SB2.DownloadDuration",
239 base::TimeTicks::Now() - download_start_time_); 233 base::TimeTicks::Now() - download_start_time_);
240 } 234 }
241 235
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 " render_view_id_ = " "%d" 287 " render_view_id_ = " "%d"
294 " save_info_.file_path = \"%" PRFilePath "\"" 288 " save_info_.file_path = \"%" PRFilePath "\""
295 " }", 289 " }",
296 request_->url().spec().c_str(), 290 request_->url().spec().c_str(),
297 download_id_.local(), 291 download_id_.local(),
298 global_id_.child_id, 292 global_id_.child_id,
299 global_id_.request_id, 293 global_id_.request_id,
300 render_view_id_, 294 render_view_id_,
301 save_info_.file_path.value().c_str()); 295 save_info_.file_path.value().c_str());
302 } 296 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698