Index: content/browser/loader/redirect_to_file_resource_handler.h |
diff --git a/content/browser/loader/redirect_to_file_resource_handler.h b/content/browser/loader/redirect_to_file_resource_handler.h |
index bdd59e077304eaa587f9bf3c7dc99c23fdf09b12..2de7c8722087cb35a90dab6cb94ab5a3a868dbb2 100644 |
--- a/content/browser/loader/redirect_to_file_resource_handler.h |
+++ b/content/browser/loader/redirect_to_file_resource_handler.h |
@@ -32,6 +32,8 @@ class ShareableFileReference; |
namespace content { |
+class ResourceController; |
+ |
// Redirects network data to a file. This is intended to be layered in front of |
// either the AsyncResourceHandler or the SyncResourceHandler. The downstream |
// resource handler does not see OnWillRead or OnReadCompleted calls. Instead, |
@@ -61,14 +63,19 @@ class CONTENT_EXPORT RedirectToFileResourceHandler |
const CreateTemporaryFileStreamFunction& create_temporary_file_stream); |
// LayeredResourceHandler implementation: |
- bool OnResponseStarted(ResourceResponse* response, bool* defer) override; |
- bool OnWillStart(const GURL& url, bool* defer) override; |
+ void OnResponseStarted( |
+ ResourceResponse* response, |
+ std::unique_ptr<ResourceController> controller) override; |
+ void OnWillStart(const GURL& url, |
+ std::unique_ptr<ResourceController> controller) override; |
bool OnWillRead(scoped_refptr<net::IOBuffer>* buf, |
int* buf_size, |
int min_size) override; |
- bool OnReadCompleted(int bytes_read, bool* defer) override; |
- void OnResponseCompleted(const net::URLRequestStatus& status, |
- bool* defer) override; |
+ void OnReadCompleted(int bytes_read, |
+ std::unique_ptr<ResourceController> controller) override; |
+ void OnResponseCompleted( |
+ const net::URLRequestStatus& status, |
+ std::unique_ptr<ResourceController> controller) override; |
// Returns the size of |buf_|, to make sure it's being increased as expected. |
int GetBufferSizeForTesting() const; |
@@ -81,9 +88,14 @@ class CONTENT_EXPORT RedirectToFileResourceHandler |
// Called by RedirectToFileResourceHandler::Writer. |
void DidWriteToFile(int result); |
+ // Attempts to write more data to the file, if possible. Returns false on |
+ // error. Returns true if there's already a write in progress, all data was |
+ // written successfully, or a new write was started that will complete |
+ // asynchronously. Resumes the request if there's more data to read and more |
+ // buffer space available. |
bool WriteMore(); |
+ |
bool BufIsFull() const; |
- void Resume(); |
CreateTemporaryFileStreamFunction create_temporary_file_stream_; |
@@ -111,8 +123,6 @@ class CONTENT_EXPORT RedirectToFileResourceHandler |
// was filled, up to a maximum size of 512k. |
int next_buffer_size_; |
- bool did_defer_; |
- |
bool completed_during_write_; |
GURL will_start_url_; |
net::URLRequestStatus completed_status_; |