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

Unified Diff: chrome/browser/renderer_host/redirect_to_file_resource_handler.cc

Issue 3455022: Revert 60378 (trying to track down http://crbug.com/56752 )- Flesh out URLLoa... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/renderer_host/redirect_to_file_resource_handler.cc
===================================================================
--- chrome/browser/renderer_host/redirect_to_file_resource_handler.cc (revision 60424)
+++ chrome/browser/renderer_host/redirect_to_file_resource_handler.cc (working copy)
@@ -16,10 +16,7 @@
#include "net/base/io_buffer.h"
#include "net/base/mime_sniffer.h"
#include "net/base/net_errors.h"
-#include "webkit/blob/deletable_file_reference.h"
-using webkit_blob::DeletableFileReference;
-
// TODO(darin): Use the buffer sizing algorithm from AsyncResourceHandler.
static const int kReadBufSize = 32768;
@@ -59,8 +56,8 @@
int request_id,
ResourceResponse* response) {
if (response->response_head.status.is_success()) {
- DCHECK(deletable_file_ && !deletable_file_->path().empty());
- response->response_head.download_file_path = deletable_file_->path();
+ DCHECK(!file_path_.empty());
+ response->response_head.download_file_path = file_path_;
}
return next_handler_->OnResponseStarted(request_id, response);
}
@@ -69,7 +66,7 @@
const GURL& url,
bool* defer) {
request_id_ = request_id;
- if (!deletable_file_) {
+ if (file_path_.empty()) {
// Defer starting the request until we have created the temporary file.
// TODO(darin): This is sub-optimal. We should not delay starting the
// network request like this.
@@ -126,9 +123,6 @@
if (BufIsFull())
host_->PauseRequest(process_id_, request_id, true);
- if (*bytes_read > 0)
- next_handler_->OnDataDownloaded(request_id, *bytes_read);
-
return WriteMore();
}
@@ -140,13 +134,21 @@
}
void RedirectToFileResourceHandler::OnRequestClosed() {
+ next_handler_->OnRequestClosed();
+
+ // The renderer no longer has a WebURLLoader open to this request, so we can
+ // close and unlink the file.
+
// We require this explicit call to Close since file_stream_ was constructed
// directly from a PlatformFile.
file_stream_->Close();
file_stream_.reset();
- deletable_file_ = NULL;
- next_handler_->OnRequestClosed();
+ // TODO(dumi): delete the temp file when it's no longer needed.
+ // TODO(dumi): revoke the privilege to upload this file.
+ // base::FileUtilProxy::Delete(
+ // ChromeThread::GetMessageLoopProxyForThread(ChromeThread::FILE),
+ // file_path_, NULL);
}
RedirectToFileResourceHandler::~RedirectToFileResourceHandler() {
@@ -157,14 +159,12 @@
base::PlatformFileError /*error_code*/,
base::PassPlatformFile file_handle,
FilePath file_path) {
- deletable_file_ = DeletableFileReference::GetOrCreate(
- file_path,
- ChromeThread::GetMessageLoopProxyForThread(ChromeThread::FILE));
+ file_path_ = file_path;
file_stream_.reset(new net::FileStream(file_handle.ReleaseValue(),
base::PLATFORM_FILE_WRITE |
base::PLATFORM_FILE_ASYNC));
- host_->RegisterDownloadedTempFile(
- process_id_, request_id_, deletable_file_.get());
+ ChildProcessSecurityPolicy::GetInstance()->GrantUploadFile(
+ process_id_, file_path);
host_->StartDeferredRequest(process_id_, request_id_);
}

Powered by Google App Engine
This is Rietveld 408576698