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

Side by Side Diff: chrome/browser/download/download_manager.cc

Issue 2805091: Download code cleanup: (Closed)
Patch Set: rebased Created 10 years, 5 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
« no previous file with comments | « chrome/browser/download/download_manager.h ('k') | chrome/browser/download/download_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/download/download_manager.h" 5 #include "chrome/browser/download/download_manager.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "app/resource_bundle.h" 8 #include "app/resource_bundle.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 823 matching lines...) Expand 10 before | Expand all | Expand 10 after
834 // We need to update the path uniquifier so that the UI shows the right 834 // We need to update the path uniquifier so that the UI shows the right
835 // name when calling GetFileName(). 835 // name when calling GetFileName().
836 download->set_path_uniquifier(new_path_uniquifier); 836 download->set_path_uniquifier(new_path_uniquifier);
837 RenameDownload(download, new_path); 837 RenameDownload(download, new_path);
838 } 838 }
839 839
840 // Continue the download finished sequence. 840 // Continue the download finished sequence.
841 ContinueDownloadFinished(download); 841 ContinueDownloadFinished(download);
842 } 842 }
843 843
844 // static
845 void DownloadManager::OnCancelDownloadRequest(ResourceDispatcherHost* rdh,
846 int render_process_id,
847 int request_id) {
848 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
849 rdh->CancelRequest(render_process_id, request_id, false);
850 }
851
852 void DownloadManager::DownloadCancelled(int32 download_id) { 844 void DownloadManager::DownloadCancelled(int32 download_id) {
853 DownloadMap::iterator it = in_progress_.find(download_id); 845 DownloadMap::iterator it = in_progress_.find(download_id);
854 if (it == in_progress_.end()) 846 if (it == in_progress_.end())
855 return; 847 return;
856 DownloadItem* download = it->second; 848 DownloadItem* download = it->second;
857 849
858 // Clean up will happen when the history system create callback runs if we 850 // Clean up will happen when the history system create callback runs if we
859 // don't have a valid db_handle yet. 851 // don't have a valid db_handle yet.
860 if (download->db_handle() != kUninitializedHandle) { 852 if (download->db_handle() != kUninitializedHandle) {
861 in_progress_.erase(it); 853 in_progress_.erase(it);
862 UpdateHistoryForDownload(download); 854 UpdateHistoryForDownload(download);
863 } 855 }
864 856
865 DownloadCancelledInternal(download_id, 857 DownloadCancelledInternal(download_id,
866 download->render_process_id(), 858 download->render_process_id(),
867 download->request_id()); 859 download->request_id());
868 UpdateAppIcon(); 860 UpdateAppIcon();
869 } 861 }
870 862
871 void DownloadManager::DownloadCancelledInternal(int download_id, 863 void DownloadManager::DownloadCancelledInternal(int download_id,
872 int render_process_id, 864 int render_process_id,
873 int request_id) { 865 int request_id) {
874 // Cancel the network request. RDH is guaranteed to outlive the IO thread. 866 // Cancel the network request. RDH is guaranteed to outlive the IO thread.
875 ChromeThread::PostTask( 867 ChromeThread::PostTask(
876 ChromeThread::IO, FROM_HERE, 868 ChromeThread::IO, FROM_HERE,
877 NewRunnableFunction(&DownloadManager::OnCancelDownloadRequest, 869 NewRunnableFunction(&download_util::CancelDownloadRequest,
878 g_browser_process->resource_dispatcher_host(), 870 g_browser_process->resource_dispatcher_host(),
879 render_process_id, 871 render_process_id,
880 request_id)); 872 request_id));
881 873
882 // Tell the file manager to cancel the download. 874 // Tell the file manager to cancel the download.
883 file_manager_->RemoveDownload(download_id, this); // On the UI thread 875 file_manager_->RemoveDownload(download_id, this); // On the UI thread
884 ChromeThread::PostTask( 876 ChromeThread::PostTask(
885 ChromeThread::FILE, FROM_HERE, 877 ChromeThread::FILE, FROM_HERE,
886 NewRunnableMethod( 878 NewRunnableMethod(
887 file_manager_, &DownloadFileManager::CancelDownload, download_id)); 879 file_manager_, &DownloadFileManager::CancelDownload, download_id));
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
1042 return RemoveDownloadsBetween(base::Time(), base::Time()); 1034 return RemoveDownloadsBetween(base::Time(), base::Time());
1043 } 1035 }
1044 1036
1045 // Initiate a download of a specific URL. We send the request to the 1037 // Initiate a download of a specific URL. We send the request to the
1046 // ResourceDispatcherHost, and let it send us responses like a regular 1038 // ResourceDispatcherHost, and let it send us responses like a regular
1047 // download. 1039 // download.
1048 void DownloadManager::DownloadUrl(const GURL& url, 1040 void DownloadManager::DownloadUrl(const GURL& url,
1049 const GURL& referrer, 1041 const GURL& referrer,
1050 const std::string& referrer_charset, 1042 const std::string& referrer_charset,
1051 TabContents* tab_contents) { 1043 TabContents* tab_contents) {
1052 file_manager_->DownloadUrl(url, 1044 DownloadUrlToFile(url, referrer, referrer_charset, DownloadSaveInfo(),
1053 referrer, 1045 tab_contents);
1054 referrer_charset,
1055 DownloadSaveInfo(),
1056 tab_contents->GetRenderProcessHost()->id(),
1057 tab_contents->render_view_host()->routing_id(),
1058 request_context_getter_);
1059 } 1046 }
1060 1047
1061 void DownloadManager::DownloadUrlToFile(const GURL& url, 1048 void DownloadManager::DownloadUrlToFile(const GURL& url,
1062 const GURL& referrer, 1049 const GURL& referrer,
1063 const std::string& referrer_charset, 1050 const std::string& referrer_charset,
1064 const DownloadSaveInfo& save_info, 1051 const DownloadSaveInfo& save_info,
1065 TabContents* tab_contents) { 1052 TabContents* tab_contents) {
1066 DCHECK(tab_contents); 1053 DCHECK(tab_contents);
1067 file_manager_->DownloadUrl(url, 1054 ChromeThread::PostTask(ChromeThread::IO, FROM_HERE,
1068 referrer, 1055 NewRunnableFunction(&download_util::DownloadUrl,
1069 referrer_charset, 1056 url,
1070 save_info, 1057 referrer,
1071 tab_contents->GetRenderProcessHost()->id(), 1058 referrer_charset,
1072 tab_contents->render_view_host()->routing_id(), 1059 save_info,
1073 request_context_getter_); 1060 g_browser_process->resource_dispatcher_host(),
1061 tab_contents->GetRenderProcessHost()->id(),
1062 tab_contents->render_view_host()->routing_id(),
1063 request_context_getter_));
1074 } 1064 }
1075 1065
1076 void DownloadManager::GenerateExtension( 1066 void DownloadManager::GenerateExtension(
1077 const FilePath& file_name, 1067 const FilePath& file_name,
1078 const std::string& mime_type, 1068 const std::string& mime_type,
1079 FilePath::StringType* generated_extension) { 1069 FilePath::StringType* generated_extension) {
1080 // We're worried about three things here: 1070 // We're worried about three things here:
1081 // 1071 //
1082 // 1) Security. Many sites let users upload content, such as buddy icons, to 1072 // 1) Security. Many sites let users upload content, such as buddy icons, to
1083 // their web sites. We want to mitigate the case where an attacker 1073 // their web sites. We want to mitigate the case where an attacker
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after
1608 observing_download_manager_->NotifyModelChanged(); 1598 observing_download_manager_->NotifyModelChanged();
1609 } 1599 }
1610 1600
1611 void DownloadManager::OtherDownloadManagerObserver::SetDownloads( 1601 void DownloadManager::OtherDownloadManagerObserver::SetDownloads(
1612 std::vector<DownloadItem*>& downloads) { 1602 std::vector<DownloadItem*>& downloads) {
1613 } 1603 }
1614 1604
1615 void DownloadManager::OtherDownloadManagerObserver::ManagerGoingDown() { 1605 void DownloadManager::OtherDownloadManagerObserver::ManagerGoingDown() {
1616 observed_download_manager_ = NULL; 1606 observed_download_manager_ = NULL;
1617 } 1607 }
OLDNEW
« no previous file with comments | « chrome/browser/download/download_manager.h ('k') | chrome/browser/download/download_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698