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

Side by Side Diff: content/browser/download/save_file_resource_handler.cc

Issue 1484093002: Allowing multiple SaveItems to have same URLs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@nested-frames-more-involved-fix
Patch Set: Rebasing... Created 5 years 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/download/save_file_resource_handler.h" 5 #include "content/browser/download/save_file_resource_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "content/browser/download/save_file_manager.h" 11 #include "content/browser/download/save_file_manager.h"
12 #include "content/public/browser/browser_thread.h" 12 #include "content/public/browser/browser_thread.h"
13 #include "net/base/io_buffer.h" 13 #include "net/base/io_buffer.h"
14 #include "net/url_request/redirect_info.h" 14 #include "net/url_request/redirect_info.h"
15 #include "net/url_request/url_request_status.h" 15 #include "net/url_request/url_request_status.h"
16 16
17 namespace content { 17 namespace content {
18 18
19 SaveFileResourceHandler::SaveFileResourceHandler(net::URLRequest* request, 19 SaveFileResourceHandler::SaveFileResourceHandler(net::URLRequest* request,
20 int save_item_id,
20 int save_package_id, 21 int save_package_id,
21 int render_process_host_id, 22 int render_process_host_id,
22 int render_frame_routing_id, 23 int render_frame_routing_id,
23 const GURL& url, 24 const GURL& url,
24 SaveFileManager* manager) 25 SaveFileManager* manager)
25 : ResourceHandler(request), 26 : ResourceHandler(request),
26 save_id_(-1), 27 save_item_id_(save_item_id),
27 save_package_id_(save_package_id), 28 save_package_id_(save_package_id),
28 render_process_id_(render_process_host_id), 29 render_process_id_(render_process_host_id),
29 render_frame_routing_id_(render_frame_routing_id), 30 render_frame_routing_id_(render_frame_routing_id),
30 url_(url), 31 url_(url),
31 content_length_(0), 32 content_length_(0),
32 save_manager_(manager) {} 33 save_manager_(manager) {}
33 34
34 SaveFileResourceHandler::~SaveFileResourceHandler() { 35 SaveFileResourceHandler::~SaveFileResourceHandler() {
35 } 36 }
36 37
37 bool SaveFileResourceHandler::OnRequestRedirected( 38 bool SaveFileResourceHandler::OnRequestRedirected(
38 const net::RedirectInfo& redirect_info, 39 const net::RedirectInfo& redirect_info,
39 ResourceResponse* response, 40 ResourceResponse* response,
40 bool* defer) { 41 bool* defer) {
41 final_url_ = redirect_info.new_url; 42 final_url_ = redirect_info.new_url;
42 return true; 43 return true;
43 } 44 }
44 45
45 bool SaveFileResourceHandler::OnResponseStarted(ResourceResponse* response, 46 bool SaveFileResourceHandler::OnResponseStarted(ResourceResponse* response,
46 bool* defer) { 47 bool* defer) {
47 save_id_ = save_manager_->GetNextId();
48 // |save_manager_| consumes (deletes): 48 // |save_manager_| consumes (deletes):
49 SaveFileCreateInfo* info = new SaveFileCreateInfo; 49 SaveFileCreateInfo* info = new SaveFileCreateInfo(
50 info->url = url_; 50 url_, final_url_, save_item_id_, save_package_id_, render_process_id_,
51 info->final_url = final_url_; 51 render_frame_routing_id_, GetRequestID(), content_disposition_,
52 info->total_bytes = content_length_; 52 content_length_);
53 info->save_id = save_id_;
54 info->save_package_id = save_package_id_;
55 info->render_process_id = render_process_id_;
56 info->render_frame_routing_id = render_frame_routing_id_;
57 info->request_id = GetRequestID();
58 info->content_disposition = content_disposition_;
59 info->save_source = SaveFileCreateInfo::SAVE_FILE_FROM_NET;
60 BrowserThread::PostTask( 53 BrowserThread::PostTask(
61 BrowserThread::FILE, FROM_HERE, 54 BrowserThread::FILE, FROM_HERE,
62 base::Bind(&SaveFileManager::StartSave, save_manager_, info)); 55 base::Bind(&SaveFileManager::StartSave, save_manager_, info));
63 return true; 56 return true;
64 } 57 }
65 58
66 bool SaveFileResourceHandler::OnWillStart(const GURL& url, bool* defer) { 59 bool SaveFileResourceHandler::OnWillStart(const GURL& url, bool* defer) {
67 return true; 60 return true;
68 } 61 }
69 62
(...skipping 14 matching lines...) Expand all
84 return true; 77 return true;
85 } 78 }
86 79
87 bool SaveFileResourceHandler::OnReadCompleted(int bytes_read, bool* defer) { 80 bool SaveFileResourceHandler::OnReadCompleted(int bytes_read, bool* defer) {
88 DCHECK(read_buffer_.get()); 81 DCHECK(read_buffer_.get());
89 // We are passing ownership of this buffer to the save file manager. 82 // We are passing ownership of this buffer to the save file manager.
90 scoped_refptr<net::IOBuffer> buffer; 83 scoped_refptr<net::IOBuffer> buffer;
91 read_buffer_.swap(buffer); 84 read_buffer_.swap(buffer);
92 BrowserThread::PostTask( 85 BrowserThread::PostTask(
93 BrowserThread::FILE, FROM_HERE, 86 BrowserThread::FILE, FROM_HERE,
94 base::Bind(&SaveFileManager::UpdateSaveProgress, 87 base::Bind(&SaveFileManager::UpdateSaveProgress, save_manager_,
95 save_manager_, save_id_, buffer, bytes_read)); 88 save_item_id_, buffer, bytes_read));
96 return true; 89 return true;
97 } 90 }
98 91
99 void SaveFileResourceHandler::OnResponseCompleted( 92 void SaveFileResourceHandler::OnResponseCompleted(
100 const net::URLRequestStatus& status, 93 const net::URLRequestStatus& status,
101 const std::string& security_info, 94 const std::string& security_info,
102 bool* defer) { 95 bool* defer) {
103 BrowserThread::PostTask( 96 BrowserThread::PostTask(
104 BrowserThread::FILE, FROM_HERE, 97 BrowserThread::FILE, FROM_HERE,
105 base::Bind(&SaveFileManager::SaveFinished, save_manager_, save_id_, url_, 98 base::Bind(&SaveFileManager::SaveFinished, save_manager_, save_item_id_,
106 save_package_id_, 99 save_package_id_,
107 status.is_success() && !status.is_io_pending())); 100 status.is_success() && !status.is_io_pending()));
108 read_buffer_ = NULL; 101 read_buffer_ = NULL;
109 } 102 }
110 103
111 void SaveFileResourceHandler::OnDataDownloaded(int bytes_downloaded) { 104 void SaveFileResourceHandler::OnDataDownloaded(int bytes_downloaded) {
112 NOTREACHED(); 105 NOTREACHED();
113 } 106 }
114 107
115 void SaveFileResourceHandler::set_content_length( 108 void SaveFileResourceHandler::set_content_length(
116 const std::string& content_length) { 109 const std::string& content_length) {
117 base::StringToInt64(content_length, &content_length_); 110 base::StringToInt64(content_length, &content_length_);
118 } 111 }
119 112
120 } // namespace content 113 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/download/save_file_resource_handler.h ('k') | content/browser/download/save_item.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698