Index: content/browser/download/download_item_impl.cc |
diff --git a/content/browser/download/download_item_impl.cc b/content/browser/download/download_item_impl.cc |
index e7eb3f337a365854ab528e10ebddc698dfc5871f..a7964783c96dd94bb91a6d89543344b690f05c3f 100644 |
--- a/content/browser/download/download_item_impl.cc |
+++ b/content/browser/download/download_item_impl.cc |
@@ -87,8 +87,6 @@ const char* DebugDownloadStateString(DownloadItem::DownloadState state) { |
return "COMPLETE"; |
case DownloadItem::CANCELLED: |
return "CANCELLED"; |
- case DownloadItem::REMOVING: |
- return "REMOVING"; |
case DownloadItem::INTERRUPTED: |
return "INTERRUPTED"; |
default: |
@@ -163,14 +161,12 @@ DownloadItemImpl::DownloadItemImpl(DownloadItemImplDelegate* delegate, |
danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), |
start_time_(info.start_time), |
end_time_(info.end_time), |
- db_handle_(info.db_handle), |
delegate_(delegate), |
is_paused_(false), |
open_when_complete_(false), |
file_externally_removed_(false), |
safety_state_(SAFE), |
auto_opened_(false), |
- is_persisted_(true), |
is_otr_(false), |
is_temporary_(false), |
all_data_saved_(false), |
@@ -219,14 +215,12 @@ DownloadItemImpl::DownloadItemImpl( |
state_(IN_PROGRESS), |
danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), |
start_time_(info.start_time), |
- db_handle_(DownloadItem::kUninitializedHandle), |
delegate_(delegate), |
is_paused_(false), |
open_when_complete_(false), |
file_externally_removed_(false), |
safety_state_(SAFE), |
auto_opened_(false), |
- is_persisted_(false), |
is_otr_(is_otr), |
is_temporary_(!info.save_info.file_path.empty()), |
all_data_saved_(false), |
@@ -276,14 +270,12 @@ DownloadItemImpl::DownloadItemImpl(DownloadItemImplDelegate* delegate, |
state_(IN_PROGRESS), |
danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), |
start_time_(base::Time::Now()), |
- db_handle_(DownloadItem::kUninitializedHandle), |
delegate_(delegate), |
is_paused_(false), |
open_when_complete_(false), |
file_externally_removed_(false), |
safety_state_(SAFE), |
auto_opened_(false), |
- is_persisted_(false), |
is_otr_(is_otr), |
is_temporary_(false), |
all_data_saved_(false), |
@@ -299,10 +291,7 @@ DownloadItemImpl::DownloadItemImpl(DownloadItemImplDelegate* delegate, |
DownloadItemImpl::~DownloadItemImpl() { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- |
- TransitionTo(REMOVING); |
- STLDeleteContainerPairSecondPointers( |
- external_data_map_.begin(), external_data_map_.end()); |
+ FOR_EACH_OBSERVER(Observer, observers_, OnDownloadDestroyed(this)); |
delegate_->AssertStateConsistent(this); |
delegate_->Detach(); |
} |
@@ -654,11 +643,15 @@ void DownloadItemImpl::Remove() { |
Cancel(true); |
delegate_->AssertStateConsistent(this); |
- TransitionTo(REMOVING); |
+ NotifyRemoved(); |
delegate_->DownloadRemoved(this); |
// We have now been deleted. |
} |
+void DownloadItemImpl::NotifyRemoved() { |
+ FOR_EACH_OBSERVER(Observer, observers_, OnDownloadRemoved(this)); |
+} |
+ |
bool DownloadItemImpl::TimeRemaining(base::TimeDelta* remaining) const { |
if (total_bytes_ <= 0) |
return false; // We never received the content_length for this download. |
@@ -827,20 +820,6 @@ bool DownloadItemImpl::IsDangerous() const { |
#endif |
} |
-DownloadPersistentStoreInfo DownloadItemImpl::GetPersistentStoreInfo() const { |
- // TODO(asanka): Persist GetTargetFilePath() as well. |
- return DownloadPersistentStoreInfo(GetFullPath(), |
- GetURL(), |
- GetReferrerUrl(), |
- GetStartTime(), |
- GetEndTime(), |
- GetReceivedBytes(), |
- GetTotalBytes(), |
- GetState(), |
- GetDbHandle(), |
- GetOpened()); |
-} |
- |
WebContents* DownloadItemImpl::GetWebContents() const { |
// TODO(rdsmith): Remove null check after removing GetWebContents() from |
// paths that might be used by DownloadItems created from history import. |
@@ -972,7 +951,7 @@ void DownloadItemImpl::Init(bool active, |
if (!active) { |
bound_net_log_.AddEvent( |
net::NetLog::TYPE_DOWNLOAD_ITEM_IN_HISTORY, |
- net::NetLog::Int64Callback("db_handle", db_handle_)); |
+ net::NetLog::Int64Callback("id", GetId())); |
bound_net_log_.EndEvent(net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE); |
} |
@@ -1036,7 +1015,6 @@ std::string DownloadItemImpl::DebugString(bool verbose) const { |
if (verbose) { |
description += base::StringPrintf( |
- " db_handle = %" PRId64 |
" total = %" PRId64 |
" received = %" PRId64 |
" reason = %s" |
@@ -1048,7 +1026,6 @@ std::string DownloadItemImpl::DebugString(bool verbose) const { |
" url_chain = \n\t\"%s\"\n\t" |
" full_path = \"%" PRFilePath "\"" |
" target_path = \"%" PRFilePath "\"", |
- GetDbHandle(), |
GetTotalBytes(), |
GetReceivedBytes(), |
InterruptReasonDebugString(last_reason_).c_str(), |
@@ -1070,131 +1047,123 @@ std::string DownloadItemImpl::DebugString(bool verbose) const { |
} |
bool DownloadItemImpl::AllDataSaved() const { return all_data_saved_; } |
+ |
DownloadItem::DownloadState DownloadItemImpl::GetState() const { |
return state_; |
} |
+ |
const std::vector<GURL>& DownloadItemImpl::GetUrlChain() const { |
return url_chain_; |
} |
+ |
const GURL& DownloadItemImpl::GetOriginalUrl() const { |
return url_chain_.front(); |
} |
+ |
const GURL& DownloadItemImpl::GetReferrerUrl() const { return referrer_url_; } |
+ |
std::string DownloadItemImpl::GetSuggestedFilename() const { |
return suggested_filename_; |
} |
+ |
std::string DownloadItemImpl::GetContentDisposition() const { |
return content_disposition_; |
} |
+ |
std::string DownloadItemImpl::GetMimeType() const { return mime_type_; } |
+ |
std::string DownloadItemImpl::GetOriginalMimeType() const { |
return original_mime_type_; |
} |
+ |
std::string DownloadItemImpl::GetReferrerCharset() const { |
return referrer_charset_; |
} |
+ |
std::string DownloadItemImpl::GetRemoteAddress() const { |
return remote_address_; |
} |
+ |
int64 DownloadItemImpl::GetTotalBytes() const { return total_bytes_; } |
+ |
void DownloadItemImpl::SetTotalBytes(int64 total_bytes) { |
total_bytes_ = total_bytes; |
} |
+ |
const std::string& DownloadItemImpl::GetHash() const { return hash_; } |
+ |
int64 DownloadItemImpl::GetReceivedBytes() const { return received_bytes_; } |
+ |
const std::string& DownloadItemImpl::GetHashState() const { |
return hash_state_; |
} |
-int32 DownloadItemImpl::GetId() const { return download_id_.local(); } |
-DownloadId DownloadItemImpl::GetGlobalId() const { return download_id_; } |
-base::Time DownloadItemImpl::GetStartTime() const { return start_time_; } |
-base::Time DownloadItemImpl::GetEndTime() const { return end_time_; } |
-void DownloadItemImpl::SetIsPersisted() { |
- is_persisted_ = true; |
-} |
+int32 DownloadItemImpl::GetId() const { return download_id_.local(); } |
-bool DownloadItemImpl::IsPersisted() const { |
- return is_persisted_; |
-} |
+DownloadId DownloadItemImpl::GetGlobalId() const { return download_id_; } |
-void DownloadItemImpl::SetDbHandle(int64 handle) { |
- db_handle_ = handle; |
+base::Time DownloadItemImpl::GetStartTime() const { return start_time_; } |
- bound_net_log_.AddEvent( |
- net::NetLog::TYPE_DOWNLOAD_ITEM_IN_HISTORY, |
- net::NetLog::Int64Callback("db_handle", db_handle_)); |
-} |
+base::Time DownloadItemImpl::GetEndTime() const { return end_time_; } |
-int64 DownloadItemImpl::GetDbHandle() const { return db_handle_; } |
bool DownloadItemImpl::IsPaused() const { return is_paused_; } |
+ |
bool DownloadItemImpl::GetOpenWhenComplete() const { |
return open_when_complete_; |
} |
+ |
void DownloadItemImpl::SetOpenWhenComplete(bool open) { |
open_when_complete_ = open; |
} |
+ |
bool DownloadItemImpl::GetFileExternallyRemoved() const { |
return file_externally_removed_; |
} |
+ |
DownloadItem::SafetyState DownloadItemImpl::GetSafetyState() const { |
return safety_state_; |
} |
+ |
bool DownloadItemImpl::IsOtr() const { return is_otr_; } |
+ |
bool DownloadItemImpl::GetAutoOpened() { return auto_opened_; } |
+ |
FilePath DownloadItemImpl::GetTargetName() const { |
return target_path_.BaseName(); |
} |
+ |
const FilePath& DownloadItemImpl::GetForcedFilePath() const { |
// TODO(asanka): Get rid of GetForcedFilePath(). We should instead just |
// require that clients respect GetTargetFilePath() if it is already set. |
return forced_file_path_; |
} |
+ |
bool DownloadItemImpl::HasUserGesture() const { |
return has_user_gesture_; |
}; |
+ |
content::PageTransition DownloadItemImpl::GetTransitionType() const { |
return transition_type_; |
}; |
+ |
bool DownloadItemImpl::IsTemporary() const { return is_temporary_; } |
+ |
void DownloadItemImpl::SetIsTemporary(bool temporary) { |
is_temporary_ = temporary; |
} |
+ |
void DownloadItemImpl::SetOpened(bool opened) { opened_ = opened; } |
+ |
bool DownloadItemImpl::GetOpened() const { return opened_; } |
+ |
const std::string& DownloadItemImpl::GetLastModifiedTime() const { |
return last_modified_time_; |
} |
+ |
const std::string& DownloadItemImpl::GetETag() const { return etag_; } |
+ |
content::DownloadInterruptReason DownloadItemImpl::GetLastReason() const { |
return last_reason_; |
} |
-void DownloadItemImpl::MockDownloadOpenForTesting() { open_enabled_ = false; } |
- |
-DownloadItem::ExternalData* |
-DownloadItemImpl::GetExternalData(const void* key) { |
- // The behavior of the const overload is identical with the exception of the |
- // constness of |this| and the return value. |
- return const_cast<DownloadItem::ExternalData*>( |
- static_cast<const DownloadItemImpl&>(*this).GetExternalData(key)); |
-} |
- |
-const DownloadItem::ExternalData* |
-DownloadItemImpl::GetExternalData(const void* key) const { |
- std::map<const void*, ExternalData*>::const_iterator it = |
- external_data_map_.find(key); |
- return (it == external_data_map_.end()) ? NULL : it->second; |
-} |
- |
-void DownloadItemImpl::SetExternalData( |
- const void* key, DownloadItem::ExternalData* data) { |
- std::map<const void*, ExternalData*>::iterator it = |
- external_data_map_.find(key); |
- if (it == external_data_map_.end()) { |
- external_data_map_[key] = data; |
- } else if (it->second != data) { |
- delete it->second; |
- it->second = data; |
- } |
-} |
+void DownloadItemImpl::MockDownloadOpenForTesting() { open_enabled_ = false; } |