diff options
author | davidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-12 23:05:14 +0000 |
---|---|---|
committer | davidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-12 23:05:14 +0000 |
commit | d667da0289e1a8b0b582b9a9b3ea1845d1f87aa2 (patch) | |
tree | 64c9e12e294feb4cdb66ff3a3cee86a9b27128e7 /content/browser/loader/async_resource_handler.cc | |
parent | 5b3e189402a2bfcba96ef3f0d701c0293e84f8f6 (diff) | |
download | chromium_src-d667da0289e1a8b0b582b9a9b3ea1845d1f87aa2.zip chromium_src-d667da0289e1a8b0b582b9a9b3ea1845d1f87aa2.tar.gz chromium_src-d667da0289e1a8b0b582b9a9b3ea1845d1f87aa2.tar.bz2 |
Fix various issues in RedirectToFileResourceHandler.
- Handle errors in creating temporary files.
- Cancel on write failure instead of resuming. This used to work, but got
lost in some refactoring in r142108.
- Fix the OnResponseCompleted resume logic to account for partial writes.
- Don't lose write errors which occur after OnResponseCompleted is received.
- WeakPtrFactory goes after other members.
- OnWillStart was never forwarded to downstream handlers.
- Make sure the file is closed before deleting it.
Also add a lot of machinery so we can better unit test this stack.
BUG=316634,347663
TEST=ResourceDispatcherHostTest.DownloadToFile
ResourceDispatcherHostTest.RegisterDownloadedTempFile
ResourceLoaderTest.RedirectToFile*
TemporaryFileStreamTest.Basic
Review URL: https://codereview.chromium.org/82273002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@256688 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/loader/async_resource_handler.cc')
-rw-r--r-- | content/browser/loader/async_resource_handler.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/content/browser/loader/async_resource_handler.cc b/content/browser/loader/async_resource_handler.cc index 5326b66..7014a47 100644 --- a/content/browser/loader/async_resource_handler.cc +++ b/content/browser/loader/async_resource_handler.cc @@ -200,6 +200,15 @@ bool AsyncResourceHandler::OnResponseStarted(int request_id, net::GetHostOrSpecFromURL(request_url)))); } + // If the parent handler downloaded the resource to a file, grant the child + // read permissions on it. Note: there is similar logic in + // SyncResourceHandler. + if (!response->head.download_file_path.empty()) { + rdh_->RegisterDownloadedTempFile( + info->GetChildID(), info->GetRequestID(), + response->head.download_file_path); + } + response->head.request_start = request()->creation_time(); response->head.response_start = TimeTicks::Now(); info->filter()->Send(new ResourceMsg_ReceivedResponse(request_id, |