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

Side by Side Diff: content/browser/download/download_manager_impl.cc

Issue 1603903002: Add an OriginFilterBuilder class for [white|black]listing origins. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase over 1246583002 Created 4 years, 10 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 unified diff | Download patch
OLDNEW
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 "content/browser/download/download_manager_impl.h" 5 #include "content/browser/download/download_manager_impl.h"
6 6
7 #include <iterator> 7 #include <iterator>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 ++ptr) { 512 ++ptr) {
513 if (ptr->get() == downloader) { 513 if (ptr->get() == downloader) {
514 url_downloaders_.erase(ptr); 514 url_downloaders_.erase(ptr);
515 return; 515 return;
516 } 516 }
517 } 517 }
518 } 518 }
519 519
520 namespace { 520 namespace {
521 521
522 bool RemoveDownloadBetween(base::Time remove_begin, 522 bool EmptyFilter(const GURL& url) {
523 base::Time remove_end, 523 return true;
524 const DownloadItemImpl* download_item) { 524 }
525 return download_item->GetStartTime() >= remove_begin && 525
526 bool RemoveDownloadByURLAndTime(
527 const base::Callback<bool(const GURL&)>& url_filter,
528 base::Time remove_begin,
529 base::Time remove_end,
530 const DownloadItemImpl* download_item) {
531 return url_filter.Run(download_item->GetURL()) &&
532 download_item->GetStartTime() >= remove_begin &&
526 (remove_end.is_null() || download_item->GetStartTime() < remove_end); 533 (remove_end.is_null() || download_item->GetStartTime() < remove_end);
527 } 534 }
528 535
529 bool RemoveDownloadByOriginAndTime(const url::Origin& origin,
530 base::Time remove_begin,
531 base::Time remove_end,
532 const DownloadItemImpl* download_item) {
533 return origin.IsSameOriginWith(url::Origin(download_item->GetURL())) &&
534 RemoveDownloadBetween(remove_begin, remove_end, download_item);
535 }
536
537 } // namespace 536 } // namespace
538 537
539 int DownloadManagerImpl::RemoveDownloads(const DownloadRemover& remover) { 538 int DownloadManagerImpl::RemoveDownloads(const DownloadRemover& remover) {
540 int count = 0; 539 int count = 0;
541 DownloadMap::const_iterator it = downloads_.begin(); 540 DownloadMap::const_iterator it = downloads_.begin();
542 while (it != downloads_.end()) { 541 while (it != downloads_.end()) {
543 DownloadItemImpl* download = it->second; 542 DownloadItemImpl* download = it->second;
544 543
545 // Increment done here to protect against invalidation below. 544 // Increment done here to protect against invalidation below.
546 ++it; 545 ++it;
547 546
548 if (download->GetState() != DownloadItem::IN_PROGRESS && 547 if (download->GetState() != DownloadItem::IN_PROGRESS &&
549 remover.Run(download)) { 548 remover.Run(download)) {
550 download->Remove(); 549 download->Remove();
551 count++; 550 count++;
552 } 551 }
553 } 552 }
554 return count; 553 return count;
555 } 554 }
556 555
557 int DownloadManagerImpl::RemoveDownloadsByOriginAndTime( 556 int DownloadManagerImpl::RemoveDownloadsByURLAndTime(
558 const url::Origin& origin, 557 const base::Callback<bool(const GURL&)>& url_filter,
559 base::Time remove_begin, 558 base::Time remove_begin,
560 base::Time remove_end) { 559 base::Time remove_end) {
561 return RemoveDownloads(base::Bind(&RemoveDownloadByOriginAndTime, 560 return RemoveDownloads(base::Bind(&RemoveDownloadByURLAndTime,
562 base::ConstRef(origin), remove_begin, 561 url_filter,
563 remove_end)); 562 remove_begin, remove_end));
564 }
565
566 int DownloadManagerImpl::RemoveDownloadsBetween(base::Time remove_begin,
567 base::Time remove_end) {
568 return RemoveDownloads(
569 base::Bind(&RemoveDownloadBetween, remove_begin, remove_end));
570 } 563 }
571 564
572 int DownloadManagerImpl::RemoveAllDownloads() { 565 int DownloadManagerImpl::RemoveAllDownloads() {
566 const base::Callback<bool(const GURL&)> empty_filter =
567 base::Bind(&EmptyFilter);
573 // The null times make the date range unbounded. 568 // The null times make the date range unbounded.
574 int num_deleted = RemoveDownloadsBetween(base::Time(), base::Time()); 569 int num_deleted = RemoveDownloadsByURLAndTime(
570 empty_filter, base::Time(), base::Time());
575 RecordClearAllSize(num_deleted); 571 RecordClearAllSize(num_deleted);
576 return num_deleted; 572 return num_deleted;
577 } 573 }
578 574
579 void DownloadManagerImpl::DownloadUrl( 575 void DownloadManagerImpl::DownloadUrl(
580 scoped_ptr<DownloadUrlParameters> params) { 576 scoped_ptr<DownloadUrlParameters> params) {
581 if (params->post_id() >= 0) { 577 if (params->post_id() >= 0) {
582 // Check this here so that the traceback is more useful. 578 // Check this here so that the traceback is more useful.
583 DCHECK(params->prefer_cache()); 579 DCHECK(params->prefer_cache());
584 DCHECK_EQ("POST", params->method()); 580 DCHECK_EQ("POST", params->method());
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 if (delegate_) 690 if (delegate_)
695 delegate_->OpenDownload(download); 691 delegate_->OpenDownload(download);
696 } 692 }
697 693
698 void DownloadManagerImpl::ShowDownloadInShell(DownloadItemImpl* download) { 694 void DownloadManagerImpl::ShowDownloadInShell(DownloadItemImpl* download) {
699 if (delegate_) 695 if (delegate_)
700 delegate_->ShowDownloadInShell(download); 696 delegate_->ShowDownloadInShell(download);
701 } 697 }
702 698
703 } // namespace content 699 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/download/download_manager_impl.h ('k') | content/browser/download/download_manager_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698