Chromium Code Reviews| Index: content/browser/download/save_file_resource_handler.cc |
| diff --git a/content/browser/download/save_file_resource_handler.cc b/content/browser/download/save_file_resource_handler.cc |
| index 854c15a837437d19c9fd125f09266ac6a9f99b06..31d111717ebed4741c5536ca3f180ade6276def7 100644 |
| --- a/content/browser/download/save_file_resource_handler.cc |
| +++ b/content/browser/download/save_file_resource_handler.cc |
| @@ -10,6 +10,7 @@ |
| #include "base/strings/string_number_conversions.h" |
| #include "content/browser/download/save_file_manager.h" |
| #include "content/public/browser/browser_thread.h" |
| +#include "content/public/browser/resource_controller.h" |
| #include "net/base/io_buffer.h" |
| #include "net/url_request/redirect_info.h" |
| #include "net/url_request/url_request_status.h" |
| @@ -37,16 +38,17 @@ SaveFileResourceHandler::SaveFileResourceHandler( |
| SaveFileResourceHandler::~SaveFileResourceHandler() { |
| } |
| -bool SaveFileResourceHandler::OnRequestRedirected( |
| +void SaveFileResourceHandler::OnRequestRedirected( |
| const net::RedirectInfo& redirect_info, |
| ResourceResponse* response, |
| - bool* defer) { |
| + std::unique_ptr<ResourceController> controller) { |
| final_url_ = redirect_info.new_url; |
| - return true; |
| + controller->Resume(); |
| } |
| -bool SaveFileResourceHandler::OnResponseStarted(ResourceResponse* response, |
| - bool* defer) { |
| +void SaveFileResourceHandler::OnResponseStarted( |
| + ResourceResponse* response, |
| + std::unique_ptr<ResourceController> controller) { |
| // |save_manager_| consumes (deletes): |
| SaveFileCreateInfo* info = new SaveFileCreateInfo( |
| url_, final_url_, save_item_id_, save_package_id_, render_process_id_, |
| @@ -55,11 +57,17 @@ bool SaveFileResourceHandler::OnResponseStarted(ResourceResponse* response, |
| BrowserThread::PostTask( |
| BrowserThread::FILE, FROM_HERE, |
| base::Bind(&SaveFileManager::StartSave, save_manager_, info)); |
| - return true; |
| + controller->Resume(); |
| } |
| -bool SaveFileResourceHandler::OnWillStart(const GURL& url, bool* defer) { |
| - return authorization_state_ == AuthorizationState::AUTHORIZED; |
| +void SaveFileResourceHandler::OnWillStart( |
| + const GURL& url, |
| + std::unique_ptr<ResourceController> controller) { |
| + if (authorization_state_ == AuthorizationState::AUTHORIZED) { |
| + controller->Resume(); |
| + } else { |
| + controller->Cancel(); |
| + } |
| } |
| bool SaveFileResourceHandler::OnWillRead(scoped_refptr<net::IOBuffer>* buf, |
| @@ -75,7 +83,9 @@ bool SaveFileResourceHandler::OnWillRead(scoped_refptr<net::IOBuffer>* buf, |
| return true; |
| } |
| -bool SaveFileResourceHandler::OnReadCompleted(int bytes_read, bool* defer) { |
| +void SaveFileResourceHandler::OnReadCompleted( |
| + int bytes_read, |
| + std::unique_ptr<ResourceController> controller) { |
| DCHECK_EQ(AuthorizationState::AUTHORIZED, authorization_state_); |
| DCHECK(read_buffer_.get()); |
| // We are passing ownership of this buffer to the save file manager. |
| @@ -85,12 +95,12 @@ bool SaveFileResourceHandler::OnReadCompleted(int bytes_read, bool* defer) { |
| BrowserThread::FILE, FROM_HERE, |
| base::Bind(&SaveFileManager::UpdateSaveProgress, save_manager_, |
| save_item_id_, base::RetainedRef(buffer), bytes_read)); |
| - return true; |
| + controller->Resume(); |
|
mmenke
2016/12/01 17:20:46
Ahh...This is the one without back pressure.
Randy Smith (Not in Mondays)
2016/12/16 21:37:26
Ah, yuck.
On the bright side, It's only involved
|
| } |
| void SaveFileResourceHandler::OnResponseCompleted( |
| const net::URLRequestStatus& status, |
| - bool* defer) { |
| + std::unique_ptr<ResourceController> controller) { |
| if (authorization_state_ != AuthorizationState::AUTHORIZED) |
| DCHECK(!status.is_success()); |
| @@ -99,7 +109,8 @@ void SaveFileResourceHandler::OnResponseCompleted( |
| base::Bind(&SaveFileManager::SaveFinished, save_manager_, save_item_id_, |
| save_package_id_, |
| status.is_success() && !status.is_io_pending())); |
| - read_buffer_ = NULL; |
| + read_buffer_ = nullptr; |
| + controller->Resume(); |
| } |
| void SaveFileResourceHandler::OnDataDownloaded(int bytes_downloaded) { |