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

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

Issue 9426029: Test file errors in downloads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merged with trunk. Created 8 years, 9 months 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 | « content/browser/download/download_item_impl.cc ('k') | content/content_tests.gypi » ('j') | 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) 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 "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/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 if (vector_size > kLoadsToWrite) 243 if (vector_size > kLoadsToWrite)
244 StartPauseTimer(); 244 StartPauseTimer();
245 245
246 return true; 246 return true;
247 } 247 }
248 248
249 bool DownloadResourceHandler::OnResponseCompleted( 249 bool DownloadResourceHandler::OnResponseCompleted(
250 int request_id, 250 int request_id,
251 const net::URLRequestStatus& status, 251 const net::URLRequestStatus& status,
252 const std::string& security_info) { 252 const std::string& security_info) {
253 VLOG(20) << __FUNCTION__ << "()" << DebugString()
254 << " request_id = " << request_id
255 << " status.status() = " << status.status()
256 << " status.error() = " << status.error();
253 if (download_id_.IsValid()) { 257 if (download_id_.IsValid()) {
254 OnResponseCompletedInternal(request_id, status, security_info); 258 OnResponseCompletedInternal(request_id, status, security_info);
255 } else { 259 } else {
256 // We got cancelled before the task which sets the id ran on the IO thread. 260 // We got cancelled before the task which sets the id ran on the IO thread.
257 // Wait for it. 261 // Wait for it.
258 BrowserThread::PostTaskAndReply( 262 BrowserThread::PostTaskAndReply(
259 BrowserThread::UI, FROM_HERE, 263 BrowserThread::UI, FROM_HERE,
260 base::Bind(&base::DoNothing), 264 base::Bind(&base::DoNothing),
261 base::Bind(&DownloadResourceHandler::OnResponseCompletedInternal, this, 265 base::Bind(&DownloadResourceHandler::OnResponseCompletedInternal, this,
262 request_id, status, security_info)); 266 request_id, status, security_info));
263 } 267 }
264 return true; 268 return true;
265 } 269 }
266 270
267 void DownloadResourceHandler::OnResponseCompletedInternal( 271 void DownloadResourceHandler::OnResponseCompletedInternal(
268 int request_id, 272 int request_id,
269 const net::URLRequestStatus& status, 273 const net::URLRequestStatus& status,
270 const std::string& security_info) { 274 const std::string& security_info) {
271 VLOG(20) << __FUNCTION__ << "()" << DebugString() 275 // NOTE: |request_| may be a dangling pointer at this point.
276 VLOG(20) << __FUNCTION__ << "()"
272 << " request_id = " << request_id 277 << " request_id = " << request_id
273 << " status.status() = " << status.status() 278 << " status.status() = " << status.status()
274 << " status.error() = " << status.error(); 279 << " status.error() = " << status.error();
275 net::Error error_code = net::OK; 280 net::Error error_code = net::OK;
276 if (status.status() == net::URLRequestStatus::FAILED) 281 if (status.status() == net::URLRequestStatus::FAILED)
277 error_code = static_cast<net::Error>(status.error()); // Normal case. 282 error_code = static_cast<net::Error>(status.error()); // Normal case.
278 // ERR_CONNECTION_CLOSED is allowed since a number of servers in the wild 283 // ERR_CONNECTION_CLOSED is allowed since a number of servers in the wild
279 // advertise a larger Content-Length than the amount of bytes in the message 284 // advertise a larger Content-Length than the amount of bytes in the message
280 // body, and then close the connection. Other browsers - IE8, Firefox 4.0.1, 285 // body, and then close the connection. Other browsers - IE8, Firefox 4.0.1,
281 // and Safari 5.0.4 - treat the download as complete in this case, so we 286 // and Safari 5.0.4 - treat the download as complete in this case, so we
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 " }", 429 " }",
425 request_ ? 430 request_ ?
426 request_->url().spec().c_str() : 431 request_->url().spec().c_str() :
427 "<NULL request>", 432 "<NULL request>",
428 download_id_.local(), 433 download_id_.local(),
429 global_id_.child_id, 434 global_id_.child_id,
430 global_id_.request_id, 435 global_id_.request_id,
431 render_view_id_, 436 render_view_id_,
432 save_info_.file_path.value().c_str()); 437 save_info_.file_path.value().c_str());
433 } 438 }
OLDNEW
« no previous file with comments | « content/browser/download/download_item_impl.cc ('k') | content/content_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698