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

Unified Diff: chrome/browser/ui/webui/downloads_dom_handler.cc

Issue 10905215: Kill DownloadManager::SearchDownloads, DownloadItem::MatchesQuery (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 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
Index: chrome/browser/ui/webui/downloads_dom_handler.cc
diff --git a/chrome/browser/ui/webui/downloads_dom_handler.cc b/chrome/browser/ui/webui/downloads_dom_handler.cc
index be92a11a353bae762cca5328e4300147b70a4951..c40d48ba75ce486fcf26675f294e9d6d4d71e5c1 100644
--- a/chrome/browser/ui/webui/downloads_dom_handler.cc
+++ b/chrome/browser/ui/webui/downloads_dom_handler.cc
@@ -25,6 +25,7 @@
#include "chrome/browser/download/download_history.h"
#include "chrome/browser/download/download_item_model.h"
#include "chrome/browser/download/download_prefs.h"
+#include "chrome/browser/download/download_query.h"
#include "chrome/browser/download/download_service.h"
#include "chrome/browser/download/download_service_factory.h"
#include "chrome/browser/download/download_util.h"
@@ -61,17 +62,6 @@ namespace {
// stuff the downloads down the pipe slowly.
static const size_t kMaxDownloads = 150;
-// Sorts DownloadItems into descending order by their start time.
-class DownloadItemSorter : public std::binary_function<content::DownloadItem*,
- content::DownloadItem*,
- bool> {
- public:
- bool operator()(const content::DownloadItem* lhs,
- const content::DownloadItem* rhs) {
- return lhs->GetStartTime() > rhs->GetStartTime();
- }
-};
-
enum DownloadsDOMEvent {
DOWNLOADS_DOM_EVENT_GET_DOWNLOADS = 0,
DOWNLOADS_DOM_EVENT_OPEN_FILE = 1,
@@ -245,7 +235,7 @@ DownloadsDOMHandler::DownloadsDOMHandler(content::DownloadManager* dlm)
// Observe all the DownloadItems.
content::DownloadManager::DownloadVector downloads;
- SearchDownloads(&downloads);
+ GetAllDownloads(&downloads);
for (content::DownloadManager::DownloadVector::const_iterator
iter = downloads.begin();
iter != downloads.end(); ++iter) {
@@ -462,29 +452,33 @@ void DownloadsDOMHandler::ScheduleSendCurrentDownloads() {
void DownloadsDOMHandler::SendCurrentDownloads() {
update_scheduled_ = false;
- content::DownloadManager::DownloadVector downloads;
- SearchDownloads(&downloads);
- sort(downloads.begin(), downloads.end(), DownloadItemSorter());
+ content::DownloadManager::DownloadVector all_items, filtered_items;
+ GetAllDownloads(&all_items);
+ DownloadQuery query;
+ if (!search_text_.empty()) {
+ scoped_ptr<base::Value> query_text(base::Value::CreateStringValue(
+ search_text_));
+ DCHECK(query.AddFilter(DownloadQuery::FILTER_QUERY, *query_text.get()));
asanka 2012/09/12 18:43:49 Side-effects in a DCHECK
benjhayden 2012/09/12 19:31:57 Done.
+ }
+ query.AddFilter(base::Bind(&IsDownloadDisplayable));
+ query.AddSorter(DownloadQuery::SORT_START_TIME, DownloadQuery::DESCENDING);
+ query.Limit(kMaxDownloads);
+ query.Search(all_items.begin(), all_items.end(), &filtered_items);
base::ListValue results_value;
for (content::DownloadManager::DownloadVector::const_iterator
- iter = downloads.begin();
- iter != downloads.end(); ++iter) {
- if (IsDownloadDisplayable(**iter))
- results_value.Append(CreateDownloadItemValue(*iter, IsItemIncognito(
- (*iter)->GetId(), download_manager_,
- original_profile_download_manager_)));
- if (results_value.GetSize() == kMaxDownloads)
- break;
+ iter = filtered_items.begin(); iter != filtered_items.end(); ++iter) {
+ results_value.Append(CreateDownloadItemValue(*iter, IsItemIncognito(
+ (*iter)->GetId(), download_manager_,
+ original_profile_download_manager_)));
}
CallDownloadsList(results_value);
}
-void DownloadsDOMHandler::SearchDownloads(
+void DownloadsDOMHandler::GetAllDownloads(
content::DownloadManager::DownloadVector* downloads) {
- download_manager_->SearchDownloads(search_text_, downloads);
+ download_manager_->GetAllDownloads(downloads);
if (original_profile_download_manager_)
- original_profile_download_manager_->SearchDownloads(
- search_text_, downloads);
+ original_profile_download_manager_->GetAllDownloads(downloads);
}
void DownloadsDOMHandler::ShowDangerPrompt(

Powered by Google App Engine
This is Rietveld 408576698