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

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

Issue 10416003: RefCounted types should not have public destructors (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: One more fix Created 8 years, 6 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) 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/download_resource_handler.h" 5 #include "content/browser/download/download_resource_handler.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 << " request_id = " << request_id; 129 << " request_id = " << request_id;
130 download_start_time_ = base::TimeTicks::Now(); 130 download_start_time_ = base::TimeTicks::Now();
131 131
132 // If it's a download, we don't want to poison the cache with it. 132 // If it's a download, we don't want to poison the cache with it.
133 request_->StopCaching(); 133 request_->StopCaching();
134 134
135 std::string content_disposition; 135 std::string content_disposition;
136 request_->GetResponseHeaderByName("content-disposition", 136 request_->GetResponseHeaderByName("content-disposition",
137 &content_disposition); 137 &content_disposition);
138 SetContentDisposition(content_disposition); 138 SetContentDisposition(content_disposition);
139 SetContentLength(response->content_length); 139 SetContentLength(response->head.content_length);
140 140
141 const ResourceRequestInfoImpl* request_info = 141 const ResourceRequestInfoImpl* request_info =
142 ResourceRequestInfoImpl::ForRequest(request_); 142 ResourceRequestInfoImpl::ForRequest(request_);
143 143
144 // Deleted in DownloadManager. 144 // Deleted in DownloadManager.
145 scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo( 145 scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo(
146 base::Time::Now(), 0, content_length_, DownloadItem::IN_PROGRESS, 146 base::Time::Now(), 0, content_length_, DownloadItem::IN_PROGRESS,
147 request_->net_log(), request_info->HasUserGesture(), 147 request_->net_log(), request_info->HasUserGesture(),
148 request_info->transition_type())); 148 request_info->transition_type()));
149 149
150 // Create the ByteStream for sending data to the download sink. 150 // Create the ByteStream for sending data to the download sink.
151 scoped_ptr<content::ByteStreamReader> stream_reader; 151 scoped_ptr<content::ByteStreamReader> stream_reader;
152 CreateByteStream( 152 CreateByteStream(
153 base::MessageLoopProxy::current(), 153 base::MessageLoopProxy::current(),
154 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE), 154 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE),
155 kDownloadByteStreamSize, &stream_writer_, &stream_reader); 155 kDownloadByteStreamSize, &stream_writer_, &stream_reader);
156 stream_writer_->RegisterCallback( 156 stream_writer_->RegisterCallback(
157 base::Bind(&DownloadResourceHandler::ResumeRequest, AsWeakPtr())); 157 base::Bind(&DownloadResourceHandler::ResumeRequest, AsWeakPtr()));
158 158
159 info->url_chain = request_->url_chain(); 159 info->url_chain = request_->url_chain();
160 info->referrer_url = GURL(request_->referrer()); 160 info->referrer_url = GURL(request_->referrer());
161 info->start_time = base::Time::Now(); 161 info->start_time = base::Time::Now();
162 info->received_bytes = save_info_.offset; 162 info->received_bytes = save_info_.offset;
163 info->total_bytes = content_length_; 163 info->total_bytes = content_length_;
164 info->state = DownloadItem::IN_PROGRESS; 164 info->state = DownloadItem::IN_PROGRESS;
165 info->has_user_gesture = request_info->HasUserGesture(); 165 info->has_user_gesture = request_info->HasUserGesture();
166 info->content_disposition = content_disposition_; 166 info->content_disposition = content_disposition_;
167 info->mime_type = response->mime_type; 167 info->mime_type = response->head.mime_type;
168 info->remote_address = request_->GetSocketAddress().host(); 168 info->remote_address = request_->GetSocketAddress().host();
169 download_stats::RecordDownloadMimeType(info->mime_type); 169 download_stats::RecordDownloadMimeType(info->mime_type);
170 170
171 info->request_handle = 171 info->request_handle =
172 DownloadRequestHandle(AsWeakPtr(), global_id_.child_id, 172 DownloadRequestHandle(AsWeakPtr(), global_id_.child_id,
173 render_view_id_, global_id_.request_id); 173 render_view_id_, global_id_.request_id);
174 174
175 // Get the last modified time and etag. 175 // Get the last modified time and etag.
176 const net::HttpResponseHeaders* headers = request_->response_headers(); 176 const net::HttpResponseHeaders* headers = request_->response_headers();
177 if (headers) { 177 if (headers) {
178 std::string last_modified_hdr; 178 std::string last_modified_hdr;
179 std::string etag; 179 std::string etag;
180 if (headers->EnumerateHeader(NULL, "Last-Modified", &last_modified_hdr)) 180 if (headers->EnumerateHeader(NULL, "Last-Modified", &last_modified_hdr))
181 info->last_modified = last_modified_hdr; 181 info->last_modified = last_modified_hdr;
182 if (headers->EnumerateHeader(NULL, "ETag", &etag)) 182 if (headers->EnumerateHeader(NULL, "ETag", &etag))
183 info->etag = etag; 183 info->etag = etag;
184 } 184 }
185 185
186 std::string content_type_header; 186 std::string content_type_header;
187 if (!response->headers || 187 if (!response->head.headers ||
188 !response->headers->GetMimeType(&content_type_header)) 188 !response->head.headers->GetMimeType(&content_type_header))
189 content_type_header = ""; 189 content_type_header = "";
190 info->original_mime_type = content_type_header; 190 info->original_mime_type = content_type_header;
191 191
192 if (!response->headers || 192 if (!response->head.headers ||
193 !response->headers->EnumerateHeader(NULL, 193 !response->head.headers->EnumerateHeader(
194 "Accept-Ranges", 194 NULL, "Accept-Ranges", &accept_ranges_)) {
195 &accept_ranges_)) {
196 accept_ranges_ = ""; 195 accept_ranges_ = "";
197 } 196 }
198 197
199 info->prompt_user_for_save_location = 198 info->prompt_user_for_save_location =
200 save_info_.prompt_for_save_location && save_info_.file_path.empty(); 199 save_info_.prompt_for_save_location && save_info_.file_path.empty();
201 info->referrer_charset = request_->context()->referrer_charset(); 200 info->referrer_charset = request_->context()->referrer_charset();
202 info->save_info = save_info_; 201 info->save_info = save_info_;
203 202
204 BrowserThread::PostTask( 203 BrowserThread::PostTask(
205 BrowserThread::UI, FROM_HERE, 204 BrowserThread::UI, FROM_HERE,
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 // false somewhere in the chain of resource handlers. 445 // false somewhere in the chain of resource handlers.
447 CallStartedCB(DownloadId(), net::ERR_ACCESS_DENIED); 446 CallStartedCB(DownloadId(), net::ERR_ACCESS_DENIED);
448 447
449 // Remove output stream callback if a stream exists. 448 // Remove output stream callback if a stream exists.
450 if (stream_writer_.get()) 449 if (stream_writer_.get())
451 stream_writer_->RegisterCallback(base::Closure()); 450 stream_writer_->RegisterCallback(base::Closure());
452 451
453 UMA_HISTOGRAM_TIMES("SB2.DownloadDuration", 452 UMA_HISTOGRAM_TIMES("SB2.DownloadDuration",
454 base::TimeTicks::Now() - download_start_time_); 453 base::TimeTicks::Now() - download_start_time_);
455 } 454 }
OLDNEW
« no previous file with comments | « content/browser/debugger/devtools_netlog_observer.cc ('k') | content/browser/renderer_host/async_resource_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698