Chromium Code Reviews| Index: chrome/browser/dom_ui/filebrowse_ui.cc |
| diff --git a/chrome/browser/dom_ui/filebrowse_ui.cc b/chrome/browser/dom_ui/filebrowse_ui.cc |
| index ef5a86794c3d0b021d840bd46c2f8f8455a0bfb3..a30ec7f111ecb8514abeb9e2ceb5a5725ec0be6f 100644 |
| --- a/chrome/browser/dom_ui/filebrowse_ui.cc |
| +++ b/chrome/browser/dom_ui/filebrowse_ui.cc |
| @@ -126,7 +126,7 @@ class FilebrowseHandler : public net::DirectoryLister::DirectoryListerDelegate, |
| // DownloadItem::Observer interface |
| virtual void OnDownloadUpdated(DownloadItem* download); |
| - virtual void OnDownloadFileCompleted(DownloadItem* download) { } |
| + virtual void OnDownloadFileCompleted(DownloadItem* download); |
| virtual void OnDownloadOpened(DownloadItem* download) { } |
| // DownloadManager::Observer interface |
| @@ -196,6 +196,9 @@ class FilebrowseHandler : public net::DirectoryLister::DirectoryListerDelegate, |
| private: |
| + // Retrieves downloads from the DownloadManager. |
| + void GetDownloads(); |
| + |
| void OpenNewWindow(const ListValue* args, bool popup); |
| // Clear all download items and their observers. |
| @@ -711,6 +714,37 @@ void FilebrowseHandler::OpenNewPopupWindow(const ListValue* args) { |
| OpenNewWindow(args, true); |
| } |
| +void FilebrowseHandler::GetDownloads() { |
|
achuithb
2011/01/18 17:53:44
Maybe you could move this function to after the de
altimofeev
2011/01/19 10:29:35
Done.
|
| + ClearDownloadItems(); |
| + |
| + std::vector<DownloadItem*> downloads; |
| + download_manager_->GetAllDownloads(FilePath(), &downloads); |
| + |
| + std::vector<DownloadItem*> new_downloads; |
| + // Scan for any in progress downloads and add ourself to them as an observer. |
| + for (DownloadList::iterator it = downloads.begin(); |
| + it != downloads.end(); ++it) { |
| + DownloadItem* download = *it; |
| + // We want to know what happens as the download progresses and be notified |
| + // when the user validates the dangerous download. |
| + if (download->state() == DownloadItem::IN_PROGRESS || |
| + download->safety_state() == DownloadItem::DANGEROUS) { |
| + download->AddObserver(this); |
| + active_download_items_.push_back(download); |
| + } |
| + DownloadList::iterator item = find(download_items_.begin(), |
| + download_items_.end(), |
| + download); |
| + if (item == download_items_.end() && got_first_download_list_) { |
| + SendNewDownload(download); |
| + } |
| + new_downloads.push_back(download); |
| + } |
| + download_items_.swap(new_downloads); |
| + got_first_download_list_ = true; |
| + SendCurrentDownloads(); |
| +} |
| + |
| void FilebrowseHandler::OpenNewWindow(const ListValue* args, bool popup) { |
| std::string url = WideToUTF8(ExtractStringValue(args)); |
| Browser* browser = popup ? |
| @@ -901,38 +935,14 @@ void FilebrowseHandler::HandleGetMetadata(const ListValue* args) { |
| } |
| void FilebrowseHandler::HandleGetDownloads(const ListValue* args) { |
| - ModelChanged(); |
| + GetDownloads(); |
| } |
| void FilebrowseHandler::ModelChanged() { |
| - ClearDownloadItems(); |
| - |
| - std::vector<DownloadItem*> downloads; |
| - download_manager_->GetAllDownloads(FilePath(), &downloads); |
| - |
| - std::vector<DownloadItem*> new_downloads; |
| - // Scan for any in progress downloads and add ourself to them as an observer. |
| - for (DownloadList::iterator it = downloads.begin(); |
| - it != downloads.end(); ++it) { |
| - DownloadItem* download = *it; |
| - // We want to know what happens as the download progresses and be notified |
| - // when the user validates the dangerous download. |
| - if (download->state() == DownloadItem::IN_PROGRESS || |
| - download->safety_state() == DownloadItem::DANGEROUS) { |
| - download->AddObserver(this); |
| - active_download_items_.push_back(download); |
| - } |
| - DownloadList::iterator item = find(download_items_.begin(), |
| - download_items_.end(), |
| - download); |
| - if (item == download_items_.end() && got_first_download_list_) { |
| - SendNewDownload(download); |
| - } |
| - new_downloads.push_back(download); |
| - } |
| - download_items_.swap(new_downloads); |
| - got_first_download_list_ = true; |
| - SendCurrentDownloads(); |
| + if (!currentpath_.empty()) |
| + GetChildrenForPath(currentpath_, true); |
| + else |
| + GetDownloads(); |
| } |
| void FilebrowseHandler::SendNewDownload(DownloadItem* download) { |
| @@ -1113,6 +1123,10 @@ void FilebrowseHandler::SendCurrentDownloads() { |
| dom_ui_->CallJavascriptFunction(L"downloadsList", results_value); |
| } |
| +void FilebrowseHandler::OnDownloadFileCompleted(DownloadItem* download) { |
| + GetChildrenForPath(currentpath_, true); |
| +} |
| + |
| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // FileBrowseUI |