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

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

Issue 351029: Support dragging a virtual file out of the browser. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 11 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/download_resource_handler.h" 5 #include "chrome/browser/renderer_host/download_resource_handler.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/chrome_thread.h" 8 #include "chrome/browser/chrome_thread.h"
9 #include "chrome/browser/download/download_file.h" 9 #include "chrome/browser/download/download_file.h"
10 #include "chrome/browser/download/download_manager.h" 10 #include "chrome/browser/download/download_manager.h"
11 #include "chrome/browser/renderer_host/global_request_id.h" 11 #include "chrome/browser/renderer_host/global_request_id.h"
12 #include "chrome/browser/renderer_host/resource_dispatcher_host.h" 12 #include "chrome/browser/renderer_host/resource_dispatcher_host.h"
13 #include "net/base/io_buffer.h" 13 #include "net/base/io_buffer.h"
14 #include "net/url_request/url_request_context.h" 14 #include "net/url_request/url_request_context.h"
15 15
16 DownloadResourceHandler::DownloadResourceHandler(ResourceDispatcherHost* rdh, 16 DownloadResourceHandler::DownloadResourceHandler(ResourceDispatcherHost* rdh,
17 int render_process_host_id, 17 int render_process_host_id,
18 int render_view_id, 18 int render_view_id,
19 int request_id, 19 int request_id,
20 const GURL& url, 20 const GURL& url,
21 DownloadFileManager* manager, 21 DownloadFileManager* manager,
22 URLRequest* request, 22 URLRequest* request,
23 bool save_as) 23 bool save_as,
24 const FilePath& save_file_path)
24 : download_id_(-1), 25 : download_id_(-1),
25 global_id_(render_process_host_id, request_id), 26 global_id_(render_process_host_id, request_id),
26 render_view_id_(render_view_id), 27 render_view_id_(render_view_id),
27 url_(url), 28 url_(url),
28 content_length_(0), 29 content_length_(0),
29 download_manager_(manager), 30 download_manager_(manager),
30 request_(request), 31 request_(request),
31 save_as_(save_as), 32 save_as_(save_as),
33 save_file_path_(save_file_path),
32 buffer_(new DownloadBuffer), 34 buffer_(new DownloadBuffer),
33 rdh_(rdh), 35 rdh_(rdh),
34 is_paused_(false) { 36 is_paused_(false) {
35 } 37 }
36 38
37 // Not needed, as this event handler ought to be the final resource. 39 // Not needed, as this event handler ought to be the final resource.
38 bool DownloadResourceHandler::OnRequestRedirected(int request_id, 40 bool DownloadResourceHandler::OnRequestRedirected(int request_id,
39 const GURL& url, 41 const GURL& url,
40 ResourceResponse* response, 42 ResourceResponse* response,
41 bool* defer) { 43 bool* defer) {
(...skipping 18 matching lines...) Expand all
60 info->start_time = base::Time::Now(); 62 info->start_time = base::Time::Now();
61 info->received_bytes = 0; 63 info->received_bytes = 0;
62 info->total_bytes = content_length_; 64 info->total_bytes = content_length_;
63 info->state = DownloadItem::IN_PROGRESS; 65 info->state = DownloadItem::IN_PROGRESS;
64 info->download_id = download_id_; 66 info->download_id = download_id_;
65 info->child_id = global_id_.child_id; 67 info->child_id = global_id_.child_id;
66 info->render_view_id = render_view_id_; 68 info->render_view_id = render_view_id_;
67 info->request_id = global_id_.request_id; 69 info->request_id = global_id_.request_id;
68 info->content_disposition = content_disposition_; 70 info->content_disposition = content_disposition_;
69 info->mime_type = response->response_head.mime_type; 71 info->mime_type = response->response_head.mime_type;
70 info->save_as = save_as_; 72 info->save_as = save_as_ && save_file_path_.empty();
71 info->is_dangerous = false; 73 info->is_dangerous = false;
72 info->referrer_charset = request_->context()->referrer_charset(); 74 info->referrer_charset = request_->context()->referrer_charset();
75 info->save_file_path = save_file_path_;
73 ChromeThread::PostTask( 76 ChromeThread::PostTask(
74 ChromeThread::FILE, FROM_HERE, 77 ChromeThread::FILE, FROM_HERE,
75 NewRunnableMethod( 78 NewRunnableMethod(
76 download_manager_, &DownloadFileManager::StartDownload, info)); 79 download_manager_, &DownloadFileManager::StartDownload, info));
77 return true; 80 return true;
78 } 81 }
79 82
80 // Create a new buffer, which will be handed to the download thread for file 83 // Create a new buffer, which will be handed to the download thread for file
81 // writing and deletion. 84 // writing and deletion.
82 bool DownloadResourceHandler::OnWillRead(int request_id, net::IOBuffer** buf, 85 bool DownloadResourceHandler::OnWillRead(int request_id, net::IOBuffer** buf,
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 should_pause); 176 should_pause);
174 is_paused_ = should_pause; 177 is_paused_ = should_pause;
175 } 178 }
176 } 179 }
177 180
178 void DownloadResourceHandler::StartPauseTimer() { 181 void DownloadResourceHandler::StartPauseTimer() {
179 if (!pause_timer_.IsRunning()) 182 if (!pause_timer_.IsRunning())
180 pause_timer_.Start(base::TimeDelta::FromMilliseconds(kThrottleTimeMs), this, 183 pause_timer_.Start(base::TimeDelta::FromMilliseconds(kThrottleTimeMs), this,
181 &DownloadResourceHandler::CheckWriteProgress); 184 &DownloadResourceHandler::CheckWriteProgress);
182 } 185 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698