diff options
author | michaeln@chromium.org <michaeln@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-23 23:16:45 +0000 |
---|---|---|
committer | michaeln@chromium.org <michaeln@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-23 23:16:45 +0000 |
commit | 145d22229a434580485e7059cf97f2fd5b6f5242 (patch) | |
tree | 5b6bf96cea21ba4e704912077c6de0f4af7b26ed /webkit/glue/weburlloader_impl.cc | |
parent | 508f9b4095e005aaf949f925042d9283c71020a5 (diff) | |
download | chromium_src-145d22229a434580485e7059cf97f2fd5b6f5242.zip chromium_src-145d22229a434580485e7059cf97f2fd5b6f5242.tar.gz chromium_src-145d22229a434580485e7059cf97f2fd5b6f5242.tar.bz2 |
Flesh out URLLoader's download_to_file function.
* tie the lifetime of the resulting temp file to the lifetime of the URLLoader
(the plan is to later extend the lifetime of the temp file to support xhr.responseBlob)
* make it work in test_shell
* make it work for sync requests
* added OnDataDownloaded messages to report progress
A related BlobURL loading change.
* grab a reference to the blob early on to ensure it's still there when the 'job' is finally started.
TEST=manual and deletable_file_reference_unittest.cc
BUG=52486
Review URL: http://codereview.chromium.org/3165062
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60378 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/weburlloader_impl.cc')
-rw-r--r-- | webkit/glue/weburlloader_impl.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/webkit/glue/weburlloader_impl.cc b/webkit/glue/weburlloader_impl.cc index 528626e..aa63fc2 100644 --- a/webkit/glue/weburlloader_impl.cc +++ b/webkit/glue/weburlloader_impl.cc @@ -284,6 +284,7 @@ class WebURLLoaderImpl::Context : public base::RefCounted<Context>, scoped_ptr<ResourceLoaderBridge> bridge_; scoped_ptr<FtpDirectoryListingResponseDelegate> ftp_listing_delegate_; scoped_ptr<MultipartResponseDelegate> multipart_delegate_; + scoped_ptr<ResourceLoaderBridge> completed_bridge_; // TODO(japhet): Storing this is a temporary hack for site isolation logging. WebURL response_url_; @@ -598,8 +599,10 @@ void WebURLLoaderImpl::Context::OnCompletedRequest( multipart_delegate_.reset(NULL); } - // Prevent any further IPC to the browser now that we're complete. - bridge_.reset(); + // Prevent any further IPC to the browser now that we're complete, but + // don't delete it to keep any downloaded temp files alive. + DCHECK(!completed_bridge_.get()); + completed_bridge_.swap(bridge_); if (client_) { if (status.status() != URLRequestStatus::SUCCESS) { |