Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 822 int DownloadManager::RemoveAllDownloads() { | 822 int DownloadManager::RemoveAllDownloads() { |
| 823 if (this != profile_->GetOriginalProfile()->GetDownloadManager()) { | 823 if (this != profile_->GetOriginalProfile()->GetDownloadManager()) { |
| 824 // This is an incognito downloader. Clear All should clear main download | 824 // This is an incognito downloader. Clear All should clear main download |
| 825 // manager as well. | 825 // manager as well. |
| 826 profile_->GetOriginalProfile()->GetDownloadManager()->RemoveAllDownloads(); | 826 profile_->GetOriginalProfile()->GetDownloadManager()->RemoveAllDownloads(); |
| 827 } | 827 } |
| 828 // The null times make the date range unbounded. | 828 // The null times make the date range unbounded. |
| 829 return RemoveDownloadsBetween(base::Time(), base::Time()); | 829 return RemoveDownloadsBetween(base::Time(), base::Time()); |
| 830 } | 830 } |
| 831 | 831 |
| 832 void DownloadManager::AddDownloadItemToHistory(DownloadItem* item, | |
| 833 int64 db_handle) { | |
| 834 // It's not immediately obvious, but HistoryBackend::CreateDownload() can | |
| 835 // call this function with an invalid |db_handle|. For instance, this can | |
| 836 // happen when the history database is offline. We cannot have multiple | |
| 837 // DownloadItems with the same invalid db_handle, so we need to assign a | |
| 838 // unique |db_handle| here. | |
| 839 if (db_handle == DownloadHistory::kUninitializedHandle) | |
| 840 db_handle = download_history_->GetNextFakeDbHandle(); | |
| 841 | |
| 842 DCHECK(item->db_handle() == DownloadHistory::kUninitializedHandle); | |
| 843 item->set_db_handle(db_handle); | |
| 844 | |
| 845 // Insert into our full map. | |
|
Paweł Hajdan Jr.
2011/02/11 19:17:49
nit: This comment doesn't add value, could you rem
magnus
2011/02/13 03:32:41
Done.
| |
| 846 DCHECK(!ContainsKey(history_downloads_, db_handle)); | |
| 847 history_downloads_[db_handle] = item; | |
| 848 } | |
| 849 | |
| 832 void DownloadManager::SavePageAsDownloadStarted(DownloadItem* download_item) { | 850 void DownloadManager::SavePageAsDownloadStarted(DownloadItem* download_item) { |
| 833 #if !defined(NDEBUG) | 851 #if !defined(NDEBUG) |
| 834 save_page_as_downloads_.insert(download_item); | 852 save_page_as_downloads_.insert(download_item); |
| 835 #endif | 853 #endif |
| 836 downloads_.insert(download_item); | 854 downloads_.insert(download_item); |
| 837 } | 855 } |
| 838 | 856 |
| 839 // Initiate a download of a specific URL. We send the request to the | 857 // Initiate a download of a specific URL. We send the request to the |
| 840 // ResourceDispatcherHost, and let it send us responses like a regular | 858 // ResourceDispatcherHost, and let it send us responses like a regular |
| 841 // download. | 859 // download. |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 980 int64 db_handle) { | 998 int64 db_handle) { |
| 981 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 999 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 982 DownloadMap::iterator it = in_progress_.find(info.download_id); | 1000 DownloadMap::iterator it = in_progress_.find(info.download_id); |
| 983 DCHECK(it != in_progress_.end()); | 1001 DCHECK(it != in_progress_.end()); |
| 984 | 1002 |
| 985 DownloadItem* download = it->second; | 1003 DownloadItem* download = it->second; |
| 986 VLOG(20) << __FUNCTION__ << "()" << " db_handle = " << db_handle | 1004 VLOG(20) << __FUNCTION__ << "()" << " db_handle = " << db_handle |
| 987 << " download_id = " << info.download_id | 1005 << " download_id = " << info.download_id |
| 988 << " download = " << download->DebugString(true); | 1006 << " download = " << download->DebugString(true); |
| 989 | 1007 |
| 990 // It's not immediately obvious, but HistoryBackend::CreateDownload() can | 1008 AddDownloadItemToHistory(download, db_handle); |
| 991 // call this function with an invalid |db_handle|. For instance, this can | |
| 992 // happen when the history database is offline. We cannot have multiple | |
| 993 // DownloadItems with the same invalid db_handle, so we need to assign a | |
| 994 // unique |db_handle| here. | |
| 995 if (db_handle == DownloadHistory::kUninitializedHandle) | |
| 996 db_handle = download_history_->GetNextFakeDbHandle(); | |
| 997 | |
| 998 DCHECK(download->db_handle() == DownloadHistory::kUninitializedHandle); | |
| 999 download->set_db_handle(db_handle); | |
| 1000 | |
| 1001 // Insert into our full map. | |
| 1002 DCHECK(!ContainsKey(history_downloads_, download->db_handle())); | |
| 1003 history_downloads_[download->db_handle()] = download; | |
| 1004 | 1009 |
| 1005 // Show in the appropriate browser UI. | 1010 // Show in the appropriate browser UI. |
| 1006 ShowDownloadInBrowser(info, download); | 1011 ShowDownloadInBrowser(info, download); |
| 1007 | 1012 |
| 1008 // Inform interested objects about the new download. | 1013 // Inform interested objects about the new download. |
| 1009 NotifyModelChanged(); | 1014 NotifyModelChanged(); |
| 1010 | 1015 |
| 1011 // If this download has been cancelled before we've received the DB handle, | 1016 // If this download has been cancelled before we've received the DB handle, |
| 1012 // post one final message to the history service so that it can be properly | 1017 // post one final message to the history service so that it can be properly |
| 1013 // in sync with the DownloadItem's completion status, and also inform any | 1018 // in sync with the DownloadItem's completion status, and also inform any |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1131 observed_download_manager_->RemoveObserver(this); | 1136 observed_download_manager_->RemoveObserver(this); |
| 1132 } | 1137 } |
| 1133 | 1138 |
| 1134 void DownloadManager::OtherDownloadManagerObserver::ModelChanged() { | 1139 void DownloadManager::OtherDownloadManagerObserver::ModelChanged() { |
| 1135 observing_download_manager_->NotifyModelChanged(); | 1140 observing_download_manager_->NotifyModelChanged(); |
| 1136 } | 1141 } |
| 1137 | 1142 |
| 1138 void DownloadManager::OtherDownloadManagerObserver::ManagerGoingDown() { | 1143 void DownloadManager::OtherDownloadManagerObserver::ManagerGoingDown() { |
| 1139 observed_download_manager_ = NULL; | 1144 observed_download_manager_ = NULL; |
| 1140 } | 1145 } |
| OLD | NEW |