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 |