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 "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 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
259 | 259 |
260 void DownloadManagerImpl::SetDelegate(DownloadManagerDelegate* delegate) { | 260 void DownloadManagerImpl::SetDelegate(DownloadManagerDelegate* delegate) { |
261 delegate_ = delegate; | 261 delegate_ = delegate; |
262 } | 262 } |
263 | 263 |
264 DownloadManagerDelegate* DownloadManagerImpl::GetDelegate() const { | 264 DownloadManagerDelegate* DownloadManagerImpl::GetDelegate() const { |
265 return delegate_; | 265 return delegate_; |
266 } | 266 } |
267 | 267 |
268 void DownloadManagerImpl::Shutdown() { | 268 void DownloadManagerImpl::Shutdown() { |
269 DVLOG(20) << __FUNCTION__ << "()" | 269 DVLOG(20) << __func__ << "() shutdown_needed_ = " << shutdown_needed_; |
270 << " shutdown_needed_ = " << shutdown_needed_; | |
271 if (!shutdown_needed_) | 270 if (!shutdown_needed_) |
272 return; | 271 return; |
273 shutdown_needed_ = false; | 272 shutdown_needed_ = false; |
274 | 273 |
275 FOR_EACH_OBSERVER(Observer, observers_, ManagerGoingDown(this)); | 274 FOR_EACH_OBSERVER(Observer, observers_, ManagerGoingDown(this)); |
276 // TODO(benjhayden): Consider clearing observers_. | 275 // TODO(benjhayden): Consider clearing observers_. |
277 | 276 |
278 // If there are in-progress downloads, cancel them. This also goes for | 277 // If there are in-progress downloads, cancel them. This also goes for |
279 // dangerous downloads which will remain in history if they aren't explicitly | 278 // dangerous downloads which will remain in history if they aren't explicitly |
280 // accepted or discarded. Canceling will remove the intermediate download | 279 // accepted or discarded. Canceling will remove the intermediate download |
(...skipping 17 matching lines...) Expand all Loading... |
298 | 297 |
299 void DownloadManagerImpl::StartDownload( | 298 void DownloadManagerImpl::StartDownload( |
300 std::unique_ptr<DownloadCreateInfo> info, | 299 std::unique_ptr<DownloadCreateInfo> info, |
301 std::unique_ptr<ByteStreamReader> stream, | 300 std::unique_ptr<ByteStreamReader> stream, |
302 const DownloadUrlParameters::OnStartedCallback& on_started) { | 301 const DownloadUrlParameters::OnStartedCallback& on_started) { |
303 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 302 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
304 DCHECK(info); | 303 DCHECK(info); |
305 // |stream| is only non-nil if the download request was successful. | 304 // |stream| is only non-nil if the download request was successful. |
306 DCHECK((info->result == DOWNLOAD_INTERRUPT_REASON_NONE && stream.get()) || | 305 DCHECK((info->result == DOWNLOAD_INTERRUPT_REASON_NONE && stream.get()) || |
307 (info->result != DOWNLOAD_INTERRUPT_REASON_NONE && !stream.get())); | 306 (info->result != DOWNLOAD_INTERRUPT_REASON_NONE && !stream.get())); |
308 DVLOG(20) << __FUNCTION__ << "()" | 307 DVLOG(20) << __func__ |
309 << " result=" << DownloadInterruptReasonToString(info->result); | 308 << "() result=" << DownloadInterruptReasonToString(info->result); |
310 uint32_t download_id = info->download_id; | 309 uint32_t download_id = info->download_id; |
311 const bool new_download = (download_id == content::DownloadItem::kInvalidId); | 310 const bool new_download = (download_id == content::DownloadItem::kInvalidId); |
312 base::Callback<void(uint32_t)> got_id(base::Bind( | 311 base::Callback<void(uint32_t)> got_id(base::Bind( |
313 &DownloadManagerImpl::StartDownloadWithId, weak_factory_.GetWeakPtr(), | 312 &DownloadManagerImpl::StartDownloadWithId, weak_factory_.GetWeakPtr(), |
314 base::Passed(&info), base::Passed(&stream), on_started, new_download)); | 313 base::Passed(&info), base::Passed(&stream), on_started, new_download)); |
315 if (new_download) { | 314 if (new_download) { |
316 GetNextId(got_id); | 315 GetNextId(got_id); |
317 } else { | 316 } else { |
318 got_id.Run(download_id); | 317 got_id.Run(download_id); |
319 } | 318 } |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
631 DCHECK(!ContainsKey(downloads_by_guid_, guid)); | 630 DCHECK(!ContainsKey(downloads_by_guid_, guid)); |
632 DownloadItemImpl* item = item_factory_->CreatePersistedItem( | 631 DownloadItemImpl* item = item_factory_->CreatePersistedItem( |
633 this, guid, id, current_path, target_path, url_chain, referrer_url, | 632 this, guid, id, current_path, target_path, url_chain, referrer_url, |
634 site_url, tab_url, tab_refererr_url, mime_type, original_mime_type, | 633 site_url, tab_url, tab_refererr_url, mime_type, original_mime_type, |
635 start_time, end_time, etag, last_modified, received_bytes, total_bytes, | 634 start_time, end_time, etag, last_modified, received_bytes, total_bytes, |
636 hash, state, danger_type, interrupt_reason, opened, | 635 hash, state, danger_type, interrupt_reason, opened, |
637 net::BoundNetLog::Make(net_log_, net::NetLog::SOURCE_DOWNLOAD)); | 636 net::BoundNetLog::Make(net_log_, net::NetLog::SOURCE_DOWNLOAD)); |
638 downloads_[id] = item; | 637 downloads_[id] = item; |
639 downloads_by_guid_[guid] = item; | 638 downloads_by_guid_[guid] = item; |
640 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadCreated(this, item)); | 639 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadCreated(this, item)); |
641 DVLOG(20) << __FUNCTION__ << "() download = " << item->DebugString(true); | 640 DVLOG(20) << __func__ << "() download = " << item->DebugString(true); |
642 return item; | 641 return item; |
643 } | 642 } |
644 | 643 |
645 int DownloadManagerImpl::InProgressCount() const { | 644 int DownloadManagerImpl::InProgressCount() const { |
646 int count = 0; | 645 int count = 0; |
647 for (const auto& it : downloads_) { | 646 for (const auto& it : downloads_) { |
648 if (it.second->GetState() == DownloadItem::IN_PROGRESS) | 647 if (it.second->GetState() == DownloadItem::IN_PROGRESS) |
649 ++count; | 648 ++count; |
650 } | 649 } |
651 return count; | 650 return count; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
696 if (delegate_) | 695 if (delegate_) |
697 delegate_->OpenDownload(download); | 696 delegate_->OpenDownload(download); |
698 } | 697 } |
699 | 698 |
700 void DownloadManagerImpl::ShowDownloadInShell(DownloadItemImpl* download) { | 699 void DownloadManagerImpl::ShowDownloadInShell(DownloadItemImpl* download) { |
701 if (delegate_) | 700 if (delegate_) |
702 delegate_->ShowDownloadInShell(download); | 701 delegate_->ShowDownloadInShell(download); |
703 } | 702 } |
704 | 703 |
705 } // namespace content | 704 } // namespace content |
OLD | NEW |