summaryrefslogtreecommitdiffstats
path: root/content/browser/loader/async_resource_handler.cc
diff options
context:
space:
mode:
authordavidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-12 23:05:14 +0000
committerdavidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-12 23:05:14 +0000
commitd667da0289e1a8b0b582b9a9b3ea1845d1f87aa2 (patch)
tree64c9e12e294feb4cdb66ff3a3cee86a9b27128e7 /content/browser/loader/async_resource_handler.cc
parent5b3e189402a2bfcba96ef3f0d701c0293e84f8f6 (diff)
downloadchromium_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.cc9
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,