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

Unified Diff: chrome/browser/download/save_file_manager.cc

Issue 219017: Create the download folder if it doesn't exist. That is, the actual download ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix unit tests Created 11 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/download/save_file_manager.h ('k') | chrome/browser/download/save_package.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/download/save_file_manager.cc
===================================================================
--- chrome/browser/download/save_file_manager.cc (revision 27115)
+++ chrome/browser/download/save_file_manager.cc (working copy)
@@ -36,7 +36,7 @@
DCHECK(ui_loop_);
// Need to make sure that we are in UI thread because using g_browser_process
// on a non-UI thread can cause crashes during shutdown.
- DCHECK(ui_loop_ == MessageLoop::current());
+ DCHECK_EQ(ui_loop_, MessageLoop::current());
// Cache the message loop of file thread.
base::Thread* thread = g_browser_process->file_thread();
if (thread)
@@ -65,7 +65,7 @@
// Stop file thread operations.
void SaveFileManager::OnShutdown() {
- DCHECK(MessageLoop::current() == file_loop());
+ DCHECK_EQ(MessageLoop::current(), file_loop());
STLDeleteValues(&save_file_map_);
}
@@ -81,14 +81,14 @@
// file a request from the file thread to the IO thread to generate a
// unique save ID.
int SaveFileManager::GetNextId() {
- DCHECK(MessageLoop::current() == io_loop_);
+ DCHECK_EQ(MessageLoop::current(), io_loop_);
return next_id_++;
}
void SaveFileManager::RegisterStartingRequest(const GURL& save_url,
SavePackage* save_package) {
// Make sure it runs in the UI thread.
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK_EQ(MessageLoop::current(), ui_loop_);
int tab_id = save_package->tab_id();
// Register this starting request.
@@ -101,7 +101,7 @@
SavePackage* SaveFileManager::UnregisterStartingRequest(
const GURL& save_url, int tab_id) {
// Make sure it runs in UI thread.
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK_EQ(MessageLoop::current(), ui_loop_);
TabToStartingRequestsMap::iterator it = tab_starting_requests_.find(tab_id);
if (it != tab_starting_requests_.end()) {
@@ -127,8 +127,8 @@
// pointer may be junk when we use it on file thread. We can only rely on the
// io_loop_ pointer being valid when we run code on the UI thread (or on
// the IO thread.
- DCHECK(MessageLoop::current() == ui_loop_);
- DCHECK(info->save_id == -1);
+ DCHECK_EQ(MessageLoop::current(), ui_loop_);
+ DCHECK_EQ(info->save_id, -1);
// Since the data will come from render process, so we need to start
// this kind of save job by ourself.
io_loop_->PostTask(FROM_HERE,
@@ -139,7 +139,7 @@
// Look up a SavePackage according to a save id.
SavePackage* SaveFileManager::LookupPackage(int save_id) {
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK_EQ(MessageLoop::current(), ui_loop_);
SavePackageMap::iterator it = packages_.find(save_id);
if (it != packages_.end())
return it->second;
@@ -155,7 +155,7 @@
const FilePath& file_full_path,
URLRequestContext* request_context,
SavePackage* save_package) {
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK_EQ(MessageLoop::current(), ui_loop_);
if (!io_loop_) {
NOTREACHED(); // Net IO thread must exist.
return;
@@ -194,13 +194,14 @@
// to remove it from the tracking map.
void SaveFileManager::RemoveSaveFile(int save_id, const GURL& save_url,
SavePackage* package) {
- DCHECK(MessageLoop::current() == ui_loop_ && package);
+ DCHECK(package);
+ DCHECK_EQ(MessageLoop::current(), ui_loop_);
// A save page job(SavePackage) can only have one manager,
// so remove it if it exists.
if (save_id == -1) {
SavePackage* old_package = UnregisterStartingRequest(save_url,
package->tab_id());
- DCHECK(old_package == package);
+ DCHECK_EQ(old_package, package);
} else {
SavePackageMap::iterator it = packages_.find(save_id);
if (it != packages_.end())
@@ -224,7 +225,7 @@
// Utility function for deleting specified file.
void SaveFileManager::DeleteDirectoryOrFile(const FilePath& full_path,
bool is_dir) {
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK_EQ(MessageLoop::current(), ui_loop_);
MessageLoop* loop = file_loop();
DCHECK(loop);
loop->PostTask(FROM_HERE,
@@ -236,7 +237,7 @@
void SaveFileManager::SendCancelRequest(int save_id) {
// Cancel the request which has specific save id.
- DCHECK(save_id > -1);
+ DCHECK_GT(save_id, -1);
MessageLoop* loop = file_loop();
DCHECK(loop);
loop->PostTask(FROM_HERE,
@@ -251,10 +252,10 @@
// to create a SaveFile which will hold and finally destroy |info|. It will
// then passes |info| to the UI thread for reporting saving status.
void SaveFileManager::StartSave(SaveFileCreateInfo* info) {
- DCHECK(MessageLoop::current() == file_loop());
+ DCHECK_EQ(MessageLoop::current(), file_loop());
DCHECK(info);
SaveFile* save_file = new SaveFile(info);
- DCHECK(LookupSaveFile(info->save_id) == NULL);
+ DCHECK(!LookupSaveFile(info->save_id));
save_file_map_[info->save_id] = save_file;
info->path = save_file->full_path();
@@ -271,7 +272,7 @@
void SaveFileManager::UpdateSaveProgress(int save_id,
net::IOBuffer* data,
int data_len) {
- DCHECK(MessageLoop::current() == file_loop());
+ DCHECK_EQ(MessageLoop::current(), file_loop());
SaveFile* save_file = LookupSaveFile(save_id);
if (save_file) {
bool write_success = save_file->AppendDataToFile(data->data(), data_len);
@@ -295,7 +296,7 @@
GURL save_url,
int render_process_id,
bool is_success) {
- DCHECK(MessageLoop::current() == file_loop());
+ DCHECK_EQ(MessageLoop::current(), file_loop());
SaveFileMap::iterator it = save_file_map_.find(save_id);
if (it != save_file_map_.end()) {
SaveFile* save_file = it->second;
@@ -321,7 +322,7 @@
// Notifications sent from the file thread and run on the UI thread.
void SaveFileManager::OnStartSave(const SaveFileCreateInfo* info) {
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK_EQ(MessageLoop::current(), ui_loop_);
SavePackage* save_package =
GetSavePackageFromRenderIds(info->render_process_id,
info->render_view_id);
@@ -343,7 +344,7 @@
SendCancelRequest(info->save_id);
return;
}
- DCHECK(old_save_package == save_package);
+ DCHECK_EQ(old_save_package, save_package);
packages_[info->save_id] = save_package;
} else {
NOTREACHED();
@@ -355,7 +356,7 @@
void SaveFileManager::OnUpdateSaveProgress(int save_id, int64 bytes_so_far,
bool write_success) {
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK_EQ(MessageLoop::current(), ui_loop_);
SavePackage* package = LookupPackage(save_id);
if (package)
package->UpdateSaveProgress(save_id, bytes_so_far, write_success);
@@ -366,14 +367,14 @@
void SaveFileManager::OnSaveFinished(int save_id,
int64 bytes_so_far,
bool is_success) {
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK_EQ(MessageLoop::current(), ui_loop_);
SavePackage* package = LookupPackage(save_id);
if (package)
package->SaveFinished(save_id, bytes_so_far, is_success);
}
void SaveFileManager::OnErrorFinished(GURL save_url, int tab_id) {
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK_EQ(MessageLoop::current(), ui_loop_);
SavePackage* save_package = UnregisterStartingRequest(save_url, tab_id);
if (save_package)
save_package->SaveFailed(save_url);
@@ -381,7 +382,7 @@
void SaveFileManager::OnCancelSaveRequest(int render_process_id,
int request_id) {
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK_EQ(MessageLoop::current(), ui_loop_);
DCHECK(io_loop_);
io_loop_->PostTask(FROM_HERE,
NewRunnableMethod(this,
@@ -397,7 +398,7 @@
int render_process_host_id,
int render_view_id,
URLRequestContext* request_context) {
- DCHECK(MessageLoop::current() == io_loop_);
+ DCHECK_EQ(MessageLoop::current(), io_loop_);
resource_dispatcher_host_->BeginSaveFile(url,
referrer,
render_process_host_id,
@@ -407,8 +408,8 @@
void SaveFileManager::OnRequireSaveJobFromOtherSource(
SaveFileCreateInfo* info) {
- DCHECK(MessageLoop::current() == io_loop_);
- DCHECK(info->save_id == -1);
+ DCHECK_EQ(MessageLoop::current(), io_loop_);
+ DCHECK_EQ(info->save_id, -1);
// Generate a unique save id.
info->save_id = GetNextId();
// Start real saving action.
@@ -422,7 +423,7 @@
void SaveFileManager::ExecuteCancelSaveRequest(int render_process_id,
int request_id) {
- DCHECK(MessageLoop::current() == io_loop_);
+ DCHECK_EQ(MessageLoop::current(), io_loop_);
resource_dispatcher_host_->CancelRequest(render_process_id,
request_id,
false);
@@ -436,7 +437,7 @@
// sent from the UI thread, the saving job may have already completed and
// won't exist in our map.
void SaveFileManager::CancelSave(int save_id) {
- DCHECK(MessageLoop::current() == file_loop());
+ DCHECK_EQ(MessageLoop::current(), file_loop());
SaveFileMap::iterator it = save_file_map_.find(save_id);
if (it != save_file_map_.end()) {
SaveFile* save_file = it->second;
@@ -473,7 +474,7 @@
void SaveFileManager::SaveLocalFile(const GURL& original_file_url,
int save_id,
int render_process_id) {
- DCHECK(MessageLoop::current() == file_loop());
+ DCHECK_EQ(MessageLoop::current(), file_loop());
SaveFile* save_file = LookupSaveFile(save_id);
if (!save_file)
return;
@@ -503,7 +504,7 @@
void SaveFileManager::OnDeleteDirectoryOrFile(const FilePath& full_path,
bool is_dir) {
- DCHECK(MessageLoop::current() == file_loop());
+ DCHECK_EQ(MessageLoop::current(), file_loop());
DCHECK(!full_path.empty());
file_util::Delete(full_path, is_dir);
@@ -513,7 +514,7 @@
// We run on this thread to avoid blocking the UI with slow Shell operations.
#if !defined(OS_MACOSX)
void SaveFileManager::OnShowSavedFileInShell(const FilePath full_path) {
- DCHECK(MessageLoop::current() == file_loop());
+ DCHECK_EQ(MessageLoop::current(), file_loop());
platform_util::ShowItemInFolder(full_path);
}
#endif
@@ -523,7 +524,7 @@
const FilePath& resource_dir,
int render_process_id,
int render_view_id) {
- DCHECK(MessageLoop::current() == file_loop());
+ DCHECK_EQ(MessageLoop::current(), file_loop());
if (!resource_dir.empty() && !file_util::PathExists(resource_dir))
file_util::CreateDirectory(resource_dir);
@@ -549,7 +550,7 @@
void SaveFileManager::OnFinishSavePageJob(int render_process_id,
int render_view_id) {
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK_EQ(MessageLoop::current(), ui_loop_);
SavePackage* save_package =
GetSavePackageFromRenderIds(render_process_id, render_view_id);
@@ -562,7 +563,7 @@
void SaveFileManager::RemoveSavedFileFromFileMap(
const SaveIDList& save_ids) {
- DCHECK(MessageLoop::current() == file_loop());
+ DCHECK_EQ(MessageLoop::current(), file_loop());
for (SaveIDList::const_iterator i = save_ids.begin();
i != save_ids.end(); ++i) {
@@ -576,3 +577,12 @@
}
}
}
+
+void SaveFileManager::CreateDownloadDirectory(FilePath save_dir,
+ SavePackage* save_package) {
+ file_util::CreateDirectory(save_dir);
+ ui_loop_->PostTask(FROM_HERE,
+ NewRunnableMethod(save_package,
+ &SavePackage::ContinueGetSaveInfo,
+ save_dir));
+}
« no previous file with comments | « chrome/browser/download/save_file_manager.h ('k') | chrome/browser/download/save_package.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698