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

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

Issue 11640007: Make the UI an observer of downloads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years 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 | Annotate | Revision Log
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 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 GetNextId(), 445 GetNextId(),
446 mime_type, 446 mime_type,
447 bound_net_log); 447 bound_net_log);
448 448
449 download_item->AddObserver(observer); 449 download_item->AddObserver(observer);
450 DCHECK(!ContainsKey(downloads_, download_item->GetId())); 450 DCHECK(!ContainsKey(downloads_, download_item->GetId()));
451 downloads_[download_item->GetId()] = download_item; 451 downloads_[download_item->GetId()] = download_item;
452 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadCreated( 452 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadCreated(
453 this, download_item)); 453 this, download_item));
454 454
455 // TODO(asanka): Make the ui an observer.
456 ShowDownloadInBrowser(download_item);
457
458 return download_item; 455 return download_item;
459 } 456 }
460 457
461 void DownloadManagerImpl::CancelDownload(int32 download_id) { 458 void DownloadManagerImpl::CancelDownload(int32 download_id) {
462 DownloadItem* download = GetDownload(download_id); 459 DownloadItem* download = GetDownload(download_id);
463 if (!download || !download->IsInProgress()) 460 if (!download || !download->IsInProgress())
464 return; 461 return;
465 download->Cancel(true); 462 download->Cancel(true);
466 } 463 }
467 464
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 state, 575 state,
579 opened, 576 opened,
580 net::BoundNetLog::Make(net_log_, net::NetLog::SOURCE_DOWNLOAD)); 577 net::BoundNetLog::Make(net_log_, net::NetLog::SOURCE_DOWNLOAD));
581 DCHECK(!ContainsKey(downloads_, item->GetId())); 578 DCHECK(!ContainsKey(downloads_, item->GetId()));
582 downloads_[item->GetId()] = item; 579 downloads_[item->GetId()] = item;
583 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadCreated(this, item)); 580 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadCreated(this, item));
584 VLOG(20) << __FUNCTION__ << "() download = " << item->DebugString(true); 581 VLOG(20) << __FUNCTION__ << "() download = " << item->DebugString(true);
585 return item; 582 return item;
586 } 583 }
587 584
588 // TODO(asanka) Move into an observer.
589 void DownloadManagerImpl::ShowDownloadInBrowser(DownloadItemImpl* download) {
590 // The 'contents' may no longer exist if the user closed the contents before
591 // we get this start completion event.
592 WebContents* content = download->GetWebContents();
593
594 // If the contents no longer exists, we ask the embedder to suggest another
595 // contents.
596 if (!content && delegate_)
597 content = delegate_->GetAlternativeWebContentsToNotifyForDownload();
598
599 if (content && content->GetDelegate())
600 content->GetDelegate()->OnStartDownload(content, download);
601 }
602
603 int DownloadManagerImpl::InProgressCount() const { 585 int DownloadManagerImpl::InProgressCount() const {
604 int count = 0; 586 int count = 0;
605 for (DownloadMap::const_iterator it = downloads_.begin(); 587 for (DownloadMap::const_iterator it = downloads_.begin();
606 it != downloads_.end(); ++it) { 588 it != downloads_.end(); ++it) {
607 if (it->second->IsInProgress()) 589 if (it->second->IsInProgress())
608 ++count; 590 ++count;
609 } 591 }
610 return count; 592 return count;
611 } 593 }
612 594
(...skipping 14 matching lines...) Expand all
627 it != downloads_.end(); ++it) { 609 it != downloads_.end(); ++it) {
628 DownloadItemImpl* item = it->second; 610 DownloadItemImpl* item = it->second;
629 if (item->IsComplete() && 611 if (item->IsComplete() &&
630 !item->GetOpened()) 612 !item->GetOpened())
631 ++num_unopened; 613 ++num_unopened;
632 } 614 }
633 RecordOpensOutstanding(num_unopened); 615 RecordOpensOutstanding(num_unopened);
634 } 616 }
635 617
636 } // namespace content 618 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698