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

Side by Side Diff: chrome/browser/renderer_host/save_file_resource_handler.cc

Issue 19004: Change URLRequest to use a ref-counted buffer for actual IO.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "chrome/browser/download/save_file_manager.h" 7 #include "chrome/browser/download/save_file_manager.h"
8 #include "net/base/io_buffer.h"
8 9
9 SaveFileResourceHandler::SaveFileResourceHandler(int render_process_host_id, 10 SaveFileResourceHandler::SaveFileResourceHandler(int render_process_host_id,
10 int render_view_id, 11 int render_view_id,
11 const std::string& url, 12 const std::string& url,
12 SaveFileManager* manager) 13 SaveFileManager* manager)
13 : save_id_(-1), 14 : save_id_(-1),
14 render_process_id_(render_process_host_id), 15 render_process_id_(render_process_host_id),
15 render_view_id_(render_view_id), 16 render_view_id_(render_view_id),
16 read_buffer_(NULL),
17 url_(UTF8ToWide(url)), 17 url_(UTF8ToWide(url)),
18 content_length_(0), 18 content_length_(0),
19 save_manager_(manager) { 19 save_manager_(manager) {
20 } 20 }
21 21
22 bool SaveFileResourceHandler::OnRequestRedirected(int request_id, 22 bool SaveFileResourceHandler::OnRequestRedirected(int request_id,
23 const GURL& url) { 23 const GURL& url) {
24 final_url_ = UTF8ToWide(url.spec()); 24 final_url_ = UTF8ToWide(url.spec());
25 return true; 25 return true;
26 } 26 }
(...skipping 12 matching lines...) Expand all
39 info->request_id = request_id; 39 info->request_id = request_id;
40 info->content_disposition = content_disposition_; 40 info->content_disposition = content_disposition_;
41 info->save_source = SaveFileCreateInfo::SAVE_FILE_FROM_NET; 41 info->save_source = SaveFileCreateInfo::SAVE_FILE_FROM_NET;
42 save_manager_->GetSaveLoop()->PostTask(FROM_HERE, 42 save_manager_->GetSaveLoop()->PostTask(FROM_HERE,
43 NewRunnableMethod(save_manager_, 43 NewRunnableMethod(save_manager_,
44 &SaveFileManager::StartSave, 44 &SaveFileManager::StartSave,
45 info)); 45 info));
46 return true; 46 return true;
47 } 47 }
48 48
49 bool SaveFileResourceHandler::OnWillRead(int request_id, 49 bool SaveFileResourceHandler::OnWillRead(int request_id, net::IOBuffer** buf,
50 char** buf, int* buf_size, 50 int* buf_size, int min_size) {
51 int min_size) {
52 DCHECK(buf && buf_size); 51 DCHECK(buf && buf_size);
53 if (!read_buffer_) { 52 if (!read_buffer_) {
54 *buf_size = min_size < 0 ? kReadBufSize : min_size; 53 *buf_size = min_size < 0 ? kReadBufSize : min_size;
55 read_buffer_ = new char[*buf_size]; 54 read_buffer_ = new net::IOBuffer(*buf_size);
56 } 55 }
57 *buf = read_buffer_; 56 *buf = read_buffer_.get();
58 return true; 57 return true;
59 } 58 }
60 59
61 bool SaveFileResourceHandler::OnReadCompleted(int request_id, int* bytes_read) { 60 bool SaveFileResourceHandler::OnReadCompleted(int request_id, int* bytes_read) {
62 DCHECK(read_buffer_); 61 DCHECK(read_buffer_);
62 // We are passing ownership of this buffer to the save file manager.
63 net::IOBuffer* buffer = NULL;
64 read_buffer_.swap(&buffer);
63 save_manager_->GetSaveLoop()->PostTask(FROM_HERE, 65 save_manager_->GetSaveLoop()->PostTask(FROM_HERE,
64 NewRunnableMethod(save_manager_, 66 NewRunnableMethod(save_manager_,
65 &SaveFileManager::UpdateSaveProgress, 67 &SaveFileManager::UpdateSaveProgress,
66 save_id_, 68 save_id_,
67 read_buffer_, 69 buffer,
68 *bytes_read)); 70 *bytes_read));
69 read_buffer_ = NULL;
70 return true; 71 return true;
71 } 72 }
72 73
73 bool SaveFileResourceHandler::OnResponseCompleted( 74 bool SaveFileResourceHandler::OnResponseCompleted(
74 int request_id, 75 int request_id,
75 const URLRequestStatus& status) { 76 const URLRequestStatus& status) {
76 save_manager_->GetSaveLoop()->PostTask(FROM_HERE, 77 save_manager_->GetSaveLoop()->PostTask(FROM_HERE,
77 NewRunnableMethod(save_manager_, 78 NewRunnableMethod(save_manager_,
78 &SaveFileManager::SaveFinished, 79 &SaveFileManager::SaveFinished,
79 save_id_, 80 save_id_,
80 url_, 81 url_,
81 render_process_id_, 82 render_process_id_,
82 status.is_success() && !status.is_io_pending())); 83 status.is_success() && !status.is_io_pending()));
83 delete [] read_buffer_; 84 read_buffer_ = NULL;
84 return true; 85 return true;
85 } 86 }
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/save_file_resource_handler.h ('k') | chrome/browser/renderer_host/sync_resource_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698