| OLD | NEW |
| 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/download/download_file.h" | 5 #include "chrome/browser/download/download_file.h" |
| 6 | 6 |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "base/task.h" | 10 #include "base/task.h" |
| (...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 543 #else | 543 #else |
| 544 // TODO(port) implement me. | 544 // TODO(port) implement me. |
| 545 NOTREACHED(); | 545 NOTREACHED(); |
| 546 #endif | 546 #endif |
| 547 } | 547 } |
| 548 | 548 |
| 549 // The DownloadManager in the UI thread has provided a final name for the | 549 // The DownloadManager in the UI thread has provided a final name for the |
| 550 // download specified by 'id'. Rename the in progress download, and remove it | 550 // download specified by 'id'. Rename the in progress download, and remove it |
| 551 // from our table if it has been completed or cancelled already. | 551 // from our table if it has been completed or cancelled already. |
| 552 void DownloadFileManager::OnFinalDownloadName(int id, | 552 void DownloadFileManager::OnFinalDownloadName(int id, |
| 553 const FilePath& full_path) { | 553 const FilePath& full_path, |
| 554 DownloadManager* manager) { |
| 554 DCHECK(MessageLoop::current() == file_loop_); | 555 DCHECK(MessageLoop::current() == file_loop_); |
| 555 DownloadFileMap::iterator it = downloads_.find(id); | 556 DownloadFileMap::iterator it = downloads_.find(id); |
| 556 if (it == downloads_.end()) | 557 if (it == downloads_.end()) |
| 557 return; | 558 return; |
| 558 | 559 |
| 559 file_util::CreateDirectory(full_path.DirName()); | 560 file_util::CreateDirectory(full_path.DirName()); |
| 560 | 561 |
| 561 DownloadFile* download = it->second; | 562 DownloadFile* download = it->second; |
| 562 if (!download->Rename(full_path)) { | 563 if (download->Rename(full_path)) { |
| 564 ui_loop_->PostTask(FROM_HERE, |
| 565 NewRunnableMethod(manager, |
| 566 &DownloadManager::DownloadRenamedToFinalName, |
| 567 id, |
| 568 full_path)); |
| 569 } else { |
| 563 // Error. Between the time the UI thread generated 'full_path' to the time | 570 // Error. Between the time the UI thread generated 'full_path' to the time |
| 564 // this code runs, something happened that prevents us from renaming. | 571 // this code runs, something happened that prevents us from renaming. |
| 565 DownloadManagerMap::iterator dmit = managers_.find(download->id()); | 572 DownloadManagerMap::iterator dmit = managers_.find(download->id()); |
| 566 if (dmit != managers_.end()) { | 573 if (dmit != managers_.end()) { |
| 567 DownloadManager* dlm = dmit->second; | 574 DownloadManager* dlm = dmit->second; |
| 568 ui_loop_->PostTask(FROM_HERE, | 575 ui_loop_->PostTask(FROM_HERE, |
| 569 NewRunnableMethod(dlm, | 576 NewRunnableMethod(dlm, |
| 570 &DownloadManager::DownloadCancelled, | 577 &DownloadManager::DownloadCancelled, |
| 571 id)); | 578 id)); |
| 572 } else { | 579 } else { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 588 ui_loop_->PostTask(FROM_HERE, NewRunnableMethod( | 595 ui_loop_->PostTask(FROM_HERE, NewRunnableMethod( |
| 589 this, &DownloadFileManager::StopUpdateTimer)); | 596 this, &DownloadFileManager::StopUpdateTimer)); |
| 590 } | 597 } |
| 591 | 598 |
| 592 // static | 599 // static |
| 593 void DownloadFileManager::DeleteFile(const FilePath& path) { | 600 void DownloadFileManager::DeleteFile(const FilePath& path) { |
| 594 // Make sure we only delete files. | 601 // Make sure we only delete files. |
| 595 if (!file_util::DirectoryExists(path)) | 602 if (!file_util::DirectoryExists(path)) |
| 596 file_util::Delete(path, false); | 603 file_util::Delete(path, false); |
| 597 } | 604 } |
| OLD | NEW |