OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_item.h" | 5 #include "chrome/browser/download/download_item.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
10 #include "base/i18n/case_conversion.h" | 10 #include "base/i18n/case_conversion.h" |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
12 #include "base/metrics/histogram.h" | 12 #include "base/metrics/histogram.h" |
13 #include "base/stringprintf.h" | 13 #include "base/stringprintf.h" |
14 #include "base/timer.h" | 14 #include "base/timer.h" |
15 #include "base/utf_string_conversions.h" | 15 #include "base/utf_string_conversions.h" |
16 #include "net/base/net_util.h" | 16 #include "net/base/net_util.h" |
17 #include "chrome/browser/download/download_create_info.h" | 17 #include "chrome/browser/download/download_create_info.h" |
18 #include "chrome/browser/download/download_crx_util.h" | 18 #include "chrome/browser/download/download_crx_util.h" |
19 #include "chrome/browser/download/download_extensions.h" | 19 #include "chrome/browser/download/download_extensions.h" |
20 #include "chrome/browser/download/download_file_manager.h" | 20 #include "chrome/browser/download/download_file_manager.h" |
21 #include "chrome/browser/download/download_history.h" | 21 #include "chrome/browser/download/download_history.h" |
| 22 #include "chrome/browser/download/download_id.h" |
22 #include "chrome/browser/download/download_manager.h" | 23 #include "chrome/browser/download/download_manager.h" |
23 #include "chrome/browser/download/download_prefs.h" | 24 #include "chrome/browser/download/download_prefs.h" |
24 #include "chrome/browser/download/download_state_info.h" | 25 #include "chrome/browser/download/download_state_info.h" |
25 #include "chrome/browser/download/download_util.h" | 26 #include "chrome/browser/download/download_util.h" |
26 #include "chrome/browser/extensions/crx_installer.h" | 27 #include "chrome/browser/extensions/crx_installer.h" |
27 #include "chrome/browser/history/download_history_info.h" | 28 #include "chrome/browser/history/download_history_info.h" |
28 #include "chrome/browser/platform_util.h" | 29 #include "chrome/browser/platform_util.h" |
29 #include "chrome/browser/prefs/pref_service.h" | 30 #include "chrome/browser/prefs/pref_service.h" |
30 #include "chrome/browser/profiles/profile.h" | 31 #include "chrome/browser/profiles/profile.h" |
31 #include "chrome/common/chrome_notification_types.h" | 32 #include "chrome/common/chrome_notification_types.h" |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 } | 220 } |
220 | 221 |
221 DownloadItem::~DownloadItem() { | 222 DownloadItem::~DownloadItem() { |
222 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. | 223 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. |
223 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 224 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
224 | 225 |
225 TransitionTo(REMOVING); | 226 TransitionTo(REMOVING); |
226 download_manager_->AssertQueueStateConsistent(this); | 227 download_manager_->AssertQueueStateConsistent(this); |
227 } | 228 } |
228 | 229 |
| 230 DownloadId DownloadItem::global_id() const { |
| 231 return DownloadId(download_manager_, id()); |
| 232 } |
| 233 |
229 void DownloadItem::AddObserver(Observer* observer) { | 234 void DownloadItem::AddObserver(Observer* observer) { |
230 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. | 235 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. |
231 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 236 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
232 | 237 |
233 observers_.AddObserver(observer); | 238 observers_.AddObserver(observer); |
234 } | 239 } |
235 | 240 |
236 void DownloadItem::RemoveObserver(Observer* observer) { | 241 void DownloadItem::RemoveObserver(Observer* observer) { |
237 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. | 242 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. |
238 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 243 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
638 | 643 |
639 VLOG(20) << __FUNCTION__ << "()" | 644 VLOG(20) << __FUNCTION__ << "()" |
640 << " needs rename = " << NeedsRename() | 645 << " needs rename = " << NeedsRename() |
641 << " " << DebugString(true); | 646 << " " << DebugString(true); |
642 DCHECK_NE(DANGEROUS, safety_state()); | 647 DCHECK_NE(DANGEROUS, safety_state()); |
643 DCHECK(file_manager); | 648 DCHECK(file_manager); |
644 | 649 |
645 if (NeedsRename()) { | 650 if (NeedsRename()) { |
646 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, | 651 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
647 NewRunnableMethod(file_manager, | 652 NewRunnableMethod(file_manager, |
648 &DownloadFileManager::RenameCompletingDownloadFile, id(), | 653 &DownloadFileManager::RenameCompletingDownloadFile, global_id(), |
649 GetTargetFilePath(), safety_state() == SAFE)); | 654 GetTargetFilePath(), safety_state() == SAFE)); |
650 return; | 655 return; |
651 } | 656 } |
652 | 657 |
653 DCHECK(!is_extension_install()); | 658 DCHECK(!is_extension_install()); |
654 Completed(); | 659 Completed(); |
655 | 660 |
656 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, | 661 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, NewRunnableMethod( |
657 NewRunnableMethod(file_manager, &DownloadFileManager::CompleteDownload, | 662 file_manager, &DownloadFileManager::CompleteDownload, global_id())); |
658 id())); | |
659 } | 663 } |
660 | 664 |
661 void DownloadItem::OnDownloadRenamedToFinalName(const FilePath& full_path) { | 665 void DownloadItem::OnDownloadRenamedToFinalName(const FilePath& full_path) { |
662 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. | 666 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. |
663 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 667 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
664 | 668 |
665 VLOG(20) << __FUNCTION__ << "()" | 669 VLOG(20) << __FUNCTION__ << "()" |
666 << " full_path = \"" << full_path.value() << "\"" | 670 << " full_path = \"" << full_path.value() << "\"" |
667 << " needed rename = " << NeedsRename() | 671 << " needed rename = " << NeedsRename() |
668 << " " << DebugString(false); | 672 << " " << DebugString(false); |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
858 state_info_.target_name.value().c_str(), | 862 state_info_.target_name.value().c_str(), |
859 full_path().value().c_str()); | 863 full_path().value().c_str()); |
860 } else { | 864 } else { |
861 description += base::StringPrintf(" url = \"%s\"", url_list.c_str()); | 865 description += base::StringPrintf(" url = \"%s\"", url_list.c_str()); |
862 } | 866 } |
863 | 867 |
864 description += " }"; | 868 description += " }"; |
865 | 869 |
866 return description; | 870 return description; |
867 } | 871 } |
OLD | NEW |