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

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

Issue 16994004: Remove DownloadItem::Is*() in favor of DI::GetState() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@di-getstate-2
Patch Set: Rebased to fix new test, applied suggestions from bauerb and benjhayden Created 7 years, 6 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 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 const bool new_download = !id.IsValid(); 365 const bool new_download = !id.IsValid();
366 DownloadItemImpl* download = NULL; 366 DownloadItemImpl* download = NULL;
367 367
368 if (new_download) { 368 if (new_download) {
369 id = GetNextId(); 369 id = GetNextId();
370 download = CreateActiveItem(id, *info); 370 download = CreateActiveItem(id, *info);
371 } else { 371 } else {
372 DownloadMap::iterator item_iterator = downloads_.find(id.local()); 372 DownloadMap::iterator item_iterator = downloads_.find(id.local());
373 // Trying to resume an interrupted download. 373 // Trying to resume an interrupted download.
374 if (item_iterator == downloads_.end() || 374 if (item_iterator == downloads_.end() ||
375 item_iterator->second->IsCancelled()) { 375 (item_iterator->second->GetState() == DownloadItem::CANCELLED)) {
376 // If the download is no longer known to the DownloadManager, then it was 376 // If the download is no longer known to the DownloadManager, then it was
377 // removed after it was resumed. Ignore. If the download is cancelled 377 // removed after it was resumed. Ignore. If the download is cancelled
378 // while resuming, then also ignore the request. 378 // while resuming, then also ignore the request.
379 info->request_handle.CancelRequest(); 379 info->request_handle.CancelRequest();
380 return NULL; 380 return NULL;
381 } 381 }
382 download = item_iterator->second; 382 download = item_iterator->second;
383 DCHECK(download->IsInterrupted()); 383 DCHECK_EQ(DownloadItem::INTERRUPTED, download->GetState());
384 } 384 }
385 385
386 base::FilePath default_download_directory; 386 base::FilePath default_download_directory;
387 if (delegate_) { 387 if (delegate_) {
388 base::FilePath website_save_directory; // Unused 388 base::FilePath website_save_directory; // Unused
389 bool skip_dir_check = false; // Unused 389 bool skip_dir_check = false; // Unused
390 delegate_->GetSaveDir(GetBrowserContext(), &website_save_directory, 390 delegate_->GetSaveDir(GetBrowserContext(), &website_save_directory,
391 &default_download_directory, &skip_dir_check); 391 &default_download_directory, &skip_dir_check);
392 } 392 }
393 393
(...skipping 24 matching lines...) Expand all
418 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 418 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
419 for (DownloadMap::iterator it = downloads_.begin(); 419 for (DownloadMap::iterator it = downloads_.begin();
420 it != downloads_.end(); ++it) { 420 it != downloads_.end(); ++it) {
421 DownloadItemImpl* item = it->second; 421 DownloadItemImpl* item = it->second;
422 CheckForFileRemoval(item); 422 CheckForFileRemoval(item);
423 } 423 }
424 } 424 }
425 425
426 void DownloadManagerImpl::CheckForFileRemoval(DownloadItemImpl* download_item) { 426 void DownloadManagerImpl::CheckForFileRemoval(DownloadItemImpl* download_item) {
427 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 427 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
428 if (download_item->IsComplete() && 428 if ((download_item->GetState() == DownloadItem::COMPLETE) &&
429 !download_item->GetFileExternallyRemoved() && 429 !download_item->GetFileExternallyRemoved() &&
430 delegate_) { 430 delegate_) {
431 delegate_->CheckForFileExistence( 431 delegate_->CheckForFileExistence(
432 download_item, 432 download_item,
433 base::Bind(&DownloadManagerImpl::OnFileExistenceChecked, 433 base::Bind(&DownloadManagerImpl::OnFileExistenceChecked,
434 weak_factory_.GetWeakPtr(), download_item->GetId())); 434 weak_factory_.GetWeakPtr(), download_item->GetId()));
435 } 435 }
436 } 436 }
437 437
438 void DownloadManagerImpl::OnFileExistenceChecked(int32 download_id, 438 void DownloadManagerImpl::OnFileExistenceChecked(int32 download_id,
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 int count = 0; 523 int count = 0;
524 DownloadMap::const_iterator it = downloads_.begin(); 524 DownloadMap::const_iterator it = downloads_.begin();
525 while (it != downloads_.end()) { 525 while (it != downloads_.end()) {
526 DownloadItemImpl* download = it->second; 526 DownloadItemImpl* download = it->second;
527 527
528 // Increment done here to protect against invalidation below. 528 // Increment done here to protect against invalidation below.
529 ++it; 529 ++it;
530 530
531 if (download->GetStartTime() >= remove_begin && 531 if (download->GetStartTime() >= remove_begin &&
532 (remove_end.is_null() || download->GetStartTime() < remove_end) && 532 (remove_end.is_null() || download->GetStartTime() < remove_end) &&
533 !download->IsInProgress()) { 533 (download->GetState() != DownloadItem::IN_PROGRESS)) {
534 // Erases the download from downloads_. 534 // Erases the download from downloads_.
535 download->Remove(); 535 download->Remove();
536 count++; 536 count++;
537 } 537 }
538 } 538 }
539 return count; 539 return count;
540 } 540 }
541 541
542 int DownloadManagerImpl::RemoveDownloads(base::Time remove_begin) { 542 int DownloadManagerImpl::RemoveDownloads(base::Time remove_begin) {
543 return RemoveDownloadsBetween(remove_begin, base::Time()); 543 return RemoveDownloadsBetween(remove_begin, base::Time());
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 downloads_[item->GetId()] = item; 602 downloads_[item->GetId()] = item;
603 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadCreated(this, item)); 603 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadCreated(this, item));
604 VLOG(20) << __FUNCTION__ << "() download = " << item->DebugString(true); 604 VLOG(20) << __FUNCTION__ << "() download = " << item->DebugString(true);
605 return item; 605 return item;
606 } 606 }
607 607
608 int DownloadManagerImpl::InProgressCount() const { 608 int DownloadManagerImpl::InProgressCount() const {
609 int count = 0; 609 int count = 0;
610 for (DownloadMap::const_iterator it = downloads_.begin(); 610 for (DownloadMap::const_iterator it = downloads_.begin();
611 it != downloads_.end(); ++it) { 611 it != downloads_.end(); ++it) {
612 if (it->second->IsInProgress()) 612 if (it->second->GetState() == DownloadItem::IN_PROGRESS)
613 ++count; 613 ++count;
614 } 614 }
615 return count; 615 return count;
616 } 616 }
617 617
618 DownloadItem* DownloadManagerImpl::GetDownload(int download_id) { 618 DownloadItem* DownloadManagerImpl::GetDownload(int download_id) {
619 return ContainsKey(downloads_, download_id) ? downloads_[download_id] : NULL; 619 return ContainsKey(downloads_, download_id) ? downloads_[download_id] : NULL;
620 } 620 }
621 621
622 void DownloadManagerImpl::GetAllDownloads(DownloadVector* downloads) { 622 void DownloadManagerImpl::GetAllDownloads(DownloadVector* downloads) {
623 for (DownloadMap::iterator it = downloads_.begin(); 623 for (DownloadMap::iterator it = downloads_.begin();
624 it != downloads_.end(); ++it) { 624 it != downloads_.end(); ++it) {
625 downloads->push_back(it->second); 625 downloads->push_back(it->second);
626 } 626 }
627 } 627 }
628 628
629 void DownloadManagerImpl::OpenDownload(DownloadItemImpl* download) { 629 void DownloadManagerImpl::OpenDownload(DownloadItemImpl* download) {
630 int num_unopened = 0; 630 int num_unopened = 0;
631 for (DownloadMap::iterator it = downloads_.begin(); 631 for (DownloadMap::iterator it = downloads_.begin();
632 it != downloads_.end(); ++it) { 632 it != downloads_.end(); ++it) {
633 DownloadItemImpl* item = it->second; 633 DownloadItemImpl* item = it->second;
634 if (item->IsComplete() && 634 if ((item->GetState() == DownloadItem::COMPLETE) &&
635 !item->GetOpened()) 635 !item->GetOpened())
636 ++num_unopened; 636 ++num_unopened;
637 } 637 }
638 RecordOpensOutstanding(num_unopened); 638 RecordOpensOutstanding(num_unopened);
639 639
640 if (delegate_) 640 if (delegate_)
641 delegate_->OpenDownload(download); 641 delegate_->OpenDownload(download);
642 } 642 }
643 643
644 void DownloadManagerImpl::ShowDownloadInShell(DownloadItemImpl* download) { 644 void DownloadManagerImpl::ShowDownloadInShell(DownloadItemImpl* download) {
645 if (delegate_) 645 if (delegate_)
646 delegate_->ShowDownloadInShell(download); 646 delegate_->ShowDownloadInShell(download);
647 } 647 }
648 648
649 } // namespace content 649 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/download/download_item_impl_unittest.cc ('k') | content/browser/download/download_manager_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698