From 05ea0a37ff80d8dc71d795d5c08fb5dee0cd9bfb Mon Sep 17 00:00:00 2001 From: "glen@chromium.org" <glen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> Date: Wed, 4 Mar 2009 04:07:23 +0000 Subject: * Make the download page focus the input field onload.* Fix spacing between controls (Pause/Cancel).* Help deblock download UI creation (timeout in downloads.html, kMaxDownloads in downloads_ui.cc)* Allow resume for paused downloads BUG=8271,8270,8130,8330 Review URL: http://codereview.chromium.org/40047 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10863 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/dom_ui/downloads_ui.cc | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'chrome/browser/dom_ui') diff --git a/chrome/browser/dom_ui/downloads_ui.cc b/chrome/browser/dom_ui/downloads_ui.cc index e801434..c7cdcd7 100644 --- a/chrome/browser/dom_ui/downloads_ui.cc +++ b/chrome/browser/dom_ui/downloads_ui.cc @@ -25,6 +25,10 @@ using base::Time; // DownloadsUI is accessible from chrome-ui://downloads. static const char kDownloadsHost[] = "downloads"; +// Maximum number of downloads to show. TODO(glen): Remove this and instead +// stuff the downloads down the pipe slowly. +static const int kMaxDownloads = 150; + /////////////////////////////////////////////////////////////////////////////// // // DownloadsHTMLSource @@ -73,6 +77,10 @@ void DownloadsUIHTMLSource::StartDataRequest(const std::string& path, localized_strings.SetString(L"control_resume", l10n_util::GetString(IDS_DOWNLOAD_LINK_RESUME)); + localized_strings.SetString(L"textdirection", + (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT) ? + L"rtl" : L"ltr"); + static const StringPiece downloads_html( ResourceBundle::GetSharedInstance().GetRawDataResource( IDR_DOWNLOADS_HTML)); @@ -98,7 +106,7 @@ class DownloadItemSorter : public std::binary_function<DownloadItem*, bool> { public: bool operator()(const DownloadItem* lhs, const DownloadItem* rhs) { - return lhs->start_time() < rhs->start_time(); + return lhs->start_time() > rhs->start_time(); } }; @@ -120,7 +128,9 @@ DownloadsDOMHandler::DownloadsDOMHandler(DOMUI* dom_ui, DownloadManager* dlm) NewCallback(this, &DownloadsDOMHandler::HandleDiscardDangerous)); dom_ui_->RegisterMessageCallback("show", NewCallback(this, &DownloadsDOMHandler::HandleShow)); - dom_ui_->RegisterMessageCallback("pause", + dom_ui_->RegisterMessageCallback("togglepause", + NewCallback(this, &DownloadsDOMHandler::HandlePause)); + dom_ui_->RegisterMessageCallback("resume", NewCallback(this, &DownloadsDOMHandler::HandlePause)); dom_ui_->RegisterMessageCallback("cancel", NewCallback(this, &DownloadsDOMHandler::HandleCancel)); @@ -179,6 +189,9 @@ void DownloadsDOMHandler::SetDownloads( // Scan for any in progress downloads and add ourself to them as an observer. for (OrderedDownloads::iterator it = download_items_.begin(); it != download_items_.end(); ++it) { + if (static_cast<int>(it - download_items_.begin()) > kMaxDownloads) + break; + DownloadItem* download = *it; if (download->state() == DownloadItem::IN_PROGRESS) { // We want to know what happens as the download progresses. @@ -253,11 +266,12 @@ void DownloadsDOMHandler::HandleCancel(const Value* value) { void DownloadsDOMHandler::SendCurrentDownloads() { ListValue results_value; - for (OrderedDownloads::iterator it = download_items_.begin(); - it != download_items_.end(); ++it) { - results_value.Append(CreateDownloadItemValue(*it, - static_cast<int>(it - download_items_.begin()))); + it != download_items_.end(); ++it) { + int index = static_cast<int>(it - download_items_.begin()); + if (index > kMaxDownloads) + break; + results_value.Append(CreateDownloadItemValue(*it,index)); } dom_ui_->CallJavascriptFunction(L"downloadsList", results_value); @@ -267,7 +281,7 @@ DictionaryValue* DownloadsDOMHandler::CreateDownloadItemValue( DownloadItem* download, int id) { DictionaryValue* file_value = new DictionaryValue(); - file_value->SetInteger(L"time", + file_value->SetInteger(L"started", static_cast<int>(download->start_time().ToTimeT())); file_value->SetInteger(L"id", id); file_value->SetString(L"file_path", download->full_path().ToWStringHack()); -- cgit v1.1