OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_query.h" | 5 #include "chrome/browser/download/download_query.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <limits> | 10 #include <limits> |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
113 } | 113 } |
114 | 114 |
115 static std::string GetFilenameUTF8(const DownloadItem& item) { | 115 static std::string GetFilenameUTF8(const DownloadItem& item) { |
116 return base::UTF16ToUTF8(GetFilename(item)); | 116 return base::UTF16ToUTF8(GetFilename(item)); |
117 } | 117 } |
118 | 118 |
119 static std::string GetUrl(const DownloadItem& item) { | 119 static std::string GetUrl(const DownloadItem& item) { |
120 return item.GetOriginalUrl().spec(); | 120 return item.GetOriginalUrl().spec(); |
121 } | 121 } |
122 | 122 |
123 static std::string GetFinalUrl(const DownloadItem& item) { | |
asanka
2016/02/18 15:32:27
"static" unnecessary for functions defined within
| |
124 return item.GetURL().spec(); | |
125 } | |
126 | |
123 static DownloadItem::DownloadState GetState(const DownloadItem& item) { | 127 static DownloadItem::DownloadState GetState(const DownloadItem& item) { |
124 return item.GetState(); | 128 return item.GetState(); |
125 } | 129 } |
126 | 130 |
127 static DownloadDangerType GetDangerType(const DownloadItem& item) { | 131 static DownloadDangerType GetDangerType(const DownloadItem& item) { |
128 return item.GetDangerType(); | 132 return item.GetDangerType(); |
129 } | 133 } |
130 | 134 |
131 static int GetReceivedBytes(const DownloadItem& item) { | 135 static int GetReceivedBytes(const DownloadItem& item) { |
132 return item.GetReceivedBytes(); | 136 return item.GetReceivedBytes(); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
212 } // anonymous namespace | 216 } // anonymous namespace |
213 | 217 |
214 // static | 218 // static |
215 bool DownloadQuery::MatchesQuery(const std::vector<base::string16>& query_terms, | 219 bool DownloadQuery::MatchesQuery(const std::vector<base::string16>& query_terms, |
216 const DownloadItem& item) { | 220 const DownloadItem& item) { |
217 if (query_terms.empty()) | 221 if (query_terms.empty()) |
218 return true; | 222 return true; |
219 | 223 |
220 base::string16 url_raw(base::UTF8ToUTF16(item.GetOriginalUrl().spec())); | 224 base::string16 url_raw(base::UTF8ToUTF16(item.GetOriginalUrl().spec())); |
221 base::string16 url_formatted = url_raw; | 225 base::string16 url_formatted = url_raw; |
226 base::string16 final_url_raw(base::UTF8ToUTF16(item.GetURL().spec())); | |
227 base::string16 final_url_formatted = final_url_raw; | |
222 if (item.GetBrowserContext()) { | 228 if (item.GetBrowserContext()) { |
223 Profile* profile = Profile::FromBrowserContext(item.GetBrowserContext()); | 229 Profile* profile = Profile::FromBrowserContext(item.GetBrowserContext()); |
224 url_formatted = url_formatter::FormatUrl( | 230 url_formatted = url_formatter::FormatUrl( |
225 item.GetOriginalUrl(), | 231 item.GetOriginalUrl(), |
226 profile->GetPrefs()->GetString(prefs::kAcceptLanguages)); | 232 profile->GetPrefs()->GetString(prefs::kAcceptLanguages)); |
233 final_url_formatted = url_formatter::FormatUrl( | |
234 item.GetURL(), profile->GetPrefs()->GetString(prefs::kAcceptLanguages)); | |
227 } | 235 } |
228 base::string16 path(item.GetTargetFilePath().LossyDisplayName()); | 236 base::string16 path(item.GetTargetFilePath().LossyDisplayName()); |
229 | 237 |
230 for (std::vector<base::string16>::const_iterator it = query_terms.begin(); | 238 for (std::vector<base::string16>::const_iterator it = query_terms.begin(); |
231 it != query_terms.end(); ++it) { | 239 it != query_terms.end(); ++it) { |
232 base::string16 term = base::i18n::ToLower(*it); | 240 base::string16 term = base::i18n::ToLower(*it); |
233 if (!base::i18n::StringSearchIgnoringCaseAndAccents( | 241 if (!base::i18n::StringSearchIgnoringCaseAndAccents( |
234 term, url_raw, NULL, NULL) && | 242 term, url_raw, NULL, NULL) && |
235 !base::i18n::StringSearchIgnoringCaseAndAccents( | 243 !base::i18n::StringSearchIgnoringCaseAndAccents( |
236 term, url_formatted, NULL, NULL) && | 244 term, url_formatted, NULL, NULL) && |
237 !base::i18n::StringSearchIgnoringCaseAndAccents( | 245 !base::i18n::StringSearchIgnoringCaseAndAccents( |
246 term, final_url_raw, NULL, NULL) && | |
247 !base::i18n::StringSearchIgnoringCaseAndAccents( | |
248 term, final_url_formatted, NULL, NULL) && | |
249 !base::i18n::StringSearchIgnoringCaseAndAccents( | |
238 term, path, NULL, NULL)) { | 250 term, path, NULL, NULL)) { |
239 return false; | 251 return false; |
240 } | 252 } |
241 } | 253 } |
242 return true; | 254 return true; |
243 } | 255 } |
244 | 256 |
245 DownloadQuery::DownloadQuery() : limit_(std::numeric_limits<uint32_t>::max()) {} | 257 DownloadQuery::DownloadQuery() : limit_(std::numeric_limits<uint32_t>::max()) {} |
246 DownloadQuery::~DownloadQuery() {} | 258 DownloadQuery::~DownloadQuery() {} |
247 | 259 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
304 case FILTER_TOTAL_BYTES: | 316 case FILTER_TOTAL_BYTES: |
305 return AddFilter(BuildFilter<int>(value, EQ, &GetTotalBytes)); | 317 return AddFilter(BuildFilter<int>(value, EQ, &GetTotalBytes)); |
306 case FILTER_TOTAL_BYTES_GREATER: | 318 case FILTER_TOTAL_BYTES_GREATER: |
307 return AddFilter(BuildFilter<int>(value, GT, &GetTotalBytes)); | 319 return AddFilter(BuildFilter<int>(value, GT, &GetTotalBytes)); |
308 case FILTER_TOTAL_BYTES_LESS: | 320 case FILTER_TOTAL_BYTES_LESS: |
309 return AddFilter(BuildFilter<int>(value, LT, &GetTotalBytes)); | 321 return AddFilter(BuildFilter<int>(value, LT, &GetTotalBytes)); |
310 case FILTER_URL: | 322 case FILTER_URL: |
311 return AddFilter(BuildFilter<std::string>(value, EQ, &GetUrl)); | 323 return AddFilter(BuildFilter<std::string>(value, EQ, &GetUrl)); |
312 case FILTER_URL_REGEX: | 324 case FILTER_URL_REGEX: |
313 return AddFilter(BuildRegexFilter(value, &GetUrl)); | 325 return AddFilter(BuildRegexFilter(value, &GetUrl)); |
326 case FILTER_FINAL_URL: | |
327 return AddFilter(BuildFilter<std::string>(value, EQ, &GetFinalUrl)); | |
328 case FILTER_FINAL_URL_REGEX: | |
329 return AddFilter(BuildRegexFilter(value, &GetFinalUrl)); | |
314 } | 330 } |
315 return false; | 331 return false; |
316 } | 332 } |
317 | 333 |
318 bool DownloadQuery::Matches(const DownloadItem& item) const { | 334 bool DownloadQuery::Matches(const DownloadItem& item) const { |
319 for (FilterCallbackVector::const_iterator filter = filters_.begin(); | 335 for (FilterCallbackVector::const_iterator filter = filters_.begin(); |
320 filter != filters_.end(); ++filter) { | 336 filter != filters_.end(); ++filter) { |
321 if (!filter->Run(item)) | 337 if (!filter->Run(item)) |
322 return false; | 338 return false; |
323 } | 339 } |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
393 case SORT_END_TIME: | 409 case SORT_END_TIME: |
394 sorters_.push_back(Sorter::Build<int64_t>(direction, &GetEndTimeMsEpoch)); | 410 sorters_.push_back(Sorter::Build<int64_t>(direction, &GetEndTimeMsEpoch)); |
395 break; | 411 break; |
396 case SORT_START_TIME: | 412 case SORT_START_TIME: |
397 sorters_.push_back( | 413 sorters_.push_back( |
398 Sorter::Build<int64_t>(direction, &GetStartTimeMsEpoch)); | 414 Sorter::Build<int64_t>(direction, &GetStartTimeMsEpoch)); |
399 break; | 415 break; |
400 case SORT_URL: | 416 case SORT_URL: |
401 sorters_.push_back(Sorter::Build<std::string>(direction, &GetUrl)); | 417 sorters_.push_back(Sorter::Build<std::string>(direction, &GetUrl)); |
402 break; | 418 break; |
419 case SORT_FINAL_URL: | |
420 sorters_.push_back(Sorter::Build<std::string>(direction, &GetFinalUrl)); | |
421 break; | |
403 case SORT_FILENAME: | 422 case SORT_FILENAME: |
404 sorters_.push_back( | 423 sorters_.push_back( |
405 Sorter::Build<base::string16>(direction, &GetFilename)); | 424 Sorter::Build<base::string16>(direction, &GetFilename)); |
406 break; | 425 break; |
407 case SORT_DANGER: | 426 case SORT_DANGER: |
408 sorters_.push_back(Sorter::Build<DownloadDangerType>( | 427 sorters_.push_back(Sorter::Build<DownloadDangerType>( |
409 direction, &GetDangerType)); | 428 direction, &GetDangerType)); |
410 break; | 429 break; |
411 case SORT_DANGER_ACCEPTED: | 430 case SORT_DANGER_ACCEPTED: |
412 sorters_.push_back(Sorter::Build<bool>(direction, &GetDangerAccepted)); | 431 sorters_.push_back(Sorter::Build<bool>(direction, &GetDangerAccepted)); |
(...skipping 24 matching lines...) Expand all Loading... | |
437 if (!sorters_.empty()) { | 456 if (!sorters_.empty()) { |
438 std::partial_sort(results->begin(), | 457 std::partial_sort(results->begin(), |
439 results->begin() + std::min(limit_, results->size()), | 458 results->begin() + std::min(limit_, results->size()), |
440 results->end(), | 459 results->end(), |
441 DownloadComparator(sorters_)); | 460 DownloadComparator(sorters_)); |
442 } | 461 } |
443 | 462 |
444 if (results->size() > limit_) | 463 if (results->size() > limit_) |
445 results->resize(limit_); | 464 results->resize(limit_); |
446 } | 465 } |
OLD | NEW |