| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/renderer_host/save_file_resource_handler.h" | 5 #include "chrome/browser/renderer_host/save_file_resource_handler.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "chrome/browser/chrome_thread.h" |
| 10 #include "chrome/browser/download/save_file_manager.h" | 11 #include "chrome/browser/download/save_file_manager.h" |
| 11 #include "net/base/io_buffer.h" | 12 #include "net/base/io_buffer.h" |
| 12 | 13 |
| 13 SaveFileResourceHandler::SaveFileResourceHandler(int render_process_host_id, | 14 SaveFileResourceHandler::SaveFileResourceHandler(int render_process_host_id, |
| 14 int render_view_id, | 15 int render_view_id, |
| 15 const GURL& url, | 16 const GURL& url, |
| 16 SaveFileManager* manager) | 17 SaveFileManager* manager) |
| 17 : save_id_(-1), | 18 : save_id_(-1), |
| 18 render_process_id_(render_process_host_id), | 19 render_process_id_(render_process_host_id), |
| 19 render_view_id_(render_view_id), | 20 render_view_id_(render_view_id), |
| (...skipping 17 matching lines...) Expand all Loading... |
| 37 SaveFileCreateInfo* info = new SaveFileCreateInfo; | 38 SaveFileCreateInfo* info = new SaveFileCreateInfo; |
| 38 info->url = url_; | 39 info->url = url_; |
| 39 info->final_url = final_url_; | 40 info->final_url = final_url_; |
| 40 info->total_bytes = content_length_; | 41 info->total_bytes = content_length_; |
| 41 info->save_id = save_id_; | 42 info->save_id = save_id_; |
| 42 info->render_process_id = render_process_id_; | 43 info->render_process_id = render_process_id_; |
| 43 info->render_view_id = render_view_id_; | 44 info->render_view_id = render_view_id_; |
| 44 info->request_id = request_id; | 45 info->request_id = request_id; |
| 45 info->content_disposition = content_disposition_; | 46 info->content_disposition = content_disposition_; |
| 46 info->save_source = SaveFileCreateInfo::SAVE_FILE_FROM_NET; | 47 info->save_source = SaveFileCreateInfo::SAVE_FILE_FROM_NET; |
| 47 save_manager_->file_loop()->PostTask(FROM_HERE, | 48 ChromeThread::PostTask( |
| 49 ChromeThread::FILE, FROM_HERE, |
| 48 NewRunnableMethod(save_manager_, | 50 NewRunnableMethod(save_manager_, |
| 49 &SaveFileManager::StartSave, | 51 &SaveFileManager::StartSave, |
| 50 info)); | 52 info)); |
| 51 return true; | 53 return true; |
| 52 } | 54 } |
| 53 | 55 |
| 54 bool SaveFileResourceHandler::OnWillRead(int request_id, net::IOBuffer** buf, | 56 bool SaveFileResourceHandler::OnWillRead(int request_id, net::IOBuffer** buf, |
| 55 int* buf_size, int min_size) { | 57 int* buf_size, int min_size) { |
| 56 DCHECK(buf && buf_size); | 58 DCHECK(buf && buf_size); |
| 57 if (!read_buffer_) { | 59 if (!read_buffer_) { |
| 58 *buf_size = min_size < 0 ? kReadBufSize : min_size; | 60 *buf_size = min_size < 0 ? kReadBufSize : min_size; |
| 59 read_buffer_ = new net::IOBuffer(*buf_size); | 61 read_buffer_ = new net::IOBuffer(*buf_size); |
| 60 } | 62 } |
| 61 *buf = read_buffer_.get(); | 63 *buf = read_buffer_.get(); |
| 62 // TODO(willchan): Remove after debugging bug 16371. | 64 // TODO(willchan): Remove after debugging bug 16371. |
| 63 CHECK(read_buffer_->data()); | 65 CHECK(read_buffer_->data()); |
| 64 return true; | 66 return true; |
| 65 } | 67 } |
| 66 | 68 |
| 67 bool SaveFileResourceHandler::OnReadCompleted(int request_id, int* bytes_read) { | 69 bool SaveFileResourceHandler::OnReadCompleted(int request_id, int* bytes_read) { |
| 68 DCHECK(read_buffer_); | 70 DCHECK(read_buffer_); |
| 69 // We are passing ownership of this buffer to the save file manager. | 71 // We are passing ownership of this buffer to the save file manager. |
| 70 net::IOBuffer* buffer = NULL; | 72 net::IOBuffer* buffer = NULL; |
| 71 read_buffer_.swap(&buffer); | 73 read_buffer_.swap(&buffer); |
| 72 save_manager_->file_loop()->PostTask(FROM_HERE, | 74 ChromeThread::PostTask( |
| 75 ChromeThread::FILE, FROM_HERE, |
| 73 NewRunnableMethod(save_manager_, | 76 NewRunnableMethod(save_manager_, |
| 74 &SaveFileManager::UpdateSaveProgress, | 77 &SaveFileManager::UpdateSaveProgress, |
| 75 save_id_, | 78 save_id_, |
| 76 buffer, | 79 buffer, |
| 77 *bytes_read)); | 80 *bytes_read)); |
| 78 return true; | 81 return true; |
| 79 } | 82 } |
| 80 | 83 |
| 81 bool SaveFileResourceHandler::OnResponseCompleted( | 84 bool SaveFileResourceHandler::OnResponseCompleted( |
| 82 int request_id, | 85 int request_id, |
| 83 const URLRequestStatus& status, | 86 const URLRequestStatus& status, |
| 84 const std::string& security_info) { | 87 const std::string& security_info) { |
| 85 save_manager_->file_loop()->PostTask(FROM_HERE, | 88 ChromeThread::PostTask( |
| 89 ChromeThread::FILE, FROM_HERE, |
| 86 NewRunnableMethod(save_manager_, | 90 NewRunnableMethod(save_manager_, |
| 87 &SaveFileManager::SaveFinished, | 91 &SaveFileManager::SaveFinished, |
| 88 save_id_, | 92 save_id_, |
| 89 url_, | 93 url_, |
| 90 render_process_id_, | 94 render_process_id_, |
| 91 status.is_success() && !status.is_io_pending())); | 95 status.is_success() && !status.is_io_pending())); |
| 92 read_buffer_ = NULL; | 96 read_buffer_ = NULL; |
| 93 return true; | 97 return true; |
| 94 } | 98 } |
| 95 | 99 |
| 96 void SaveFileResourceHandler::set_content_length( | 100 void SaveFileResourceHandler::set_content_length( |
| 97 const std::string& content_length) { | 101 const std::string& content_length) { |
| 98 content_length_ = StringToInt64(content_length); | 102 content_length_ = StringToInt64(content_length); |
| 99 } | 103 } |
| OLD | NEW |