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

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

Issue 9121053: Added net logging to DownloadItem. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Changes to comments. Created 8 years, 10 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 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_item_impl.h" 5 #include "content/browser/download/download_item_impl.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/file_util.h" 11 #include "base/file_util.h"
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 } 153 }
154 154
155 // Our download table ID starts at 1, so we use 0 to represent a download that 155 // Our download table ID starts at 1, so we use 0 to represent a download that
156 // has started, but has not yet had its data persisted in the table. We use fake 156 // has started, but has not yet had its data persisted in the table. We use fake
157 // database handles in incognito mode starting at -1 and progressively getting 157 // database handles in incognito mode starting at -1 and progressively getting
158 // more negative. 158 // more negative.
159 159
160 // Constructor for reading from the history service. 160 // Constructor for reading from the history service.
161 DownloadItemImpl::DownloadItemImpl(Delegate* delegate, 161 DownloadItemImpl::DownloadItemImpl(Delegate* delegate,
162 DownloadId download_id, 162 DownloadId download_id,
163 const DownloadPersistentStoreInfo& info) 163 const DownloadPersistentStoreInfo& info,
164 const net::BoundNetLog& bound_net_log)
164 : download_id_(download_id), 165 : download_id_(download_id),
165 full_path_(info.path), 166 full_path_(info.path),
166 url_chain_(1, info.url), 167 url_chain_(1, info.url),
167 referrer_url_(info.referrer_url), 168 referrer_url_(info.referrer_url),
168 total_bytes_(info.total_bytes), 169 total_bytes_(info.total_bytes),
169 received_bytes_(info.received_bytes), 170 received_bytes_(info.received_bytes),
170 bytes_per_sec_(0), 171 bytes_per_sec_(0),
171 last_reason_(DOWNLOAD_INTERRUPT_REASON_NONE), 172 last_reason_(DOWNLOAD_INTERRUPT_REASON_NONE),
172 start_tick_(base::TimeTicks()), 173 start_tick_(base::TimeTicks()),
173 state_(static_cast<DownloadState>(info.state)), 174 state_(static_cast<DownloadState>(info.state)),
174 start_time_(info.start_time), 175 start_time_(info.start_time),
175 end_time_(info.end_time), 176 end_time_(info.end_time),
176 db_handle_(info.db_handle), 177 db_handle_(info.db_handle),
177 delegate_(delegate), 178 delegate_(delegate),
178 is_paused_(false), 179 is_paused_(false),
179 open_when_complete_(false), 180 open_when_complete_(false),
180 file_externally_removed_(false), 181 file_externally_removed_(false),
181 safety_state_(SAFE), 182 safety_state_(SAFE),
182 auto_opened_(false), 183 auto_opened_(false),
183 is_otr_(false), 184 is_otr_(false),
184 is_temporary_(false), 185 is_temporary_(false),
185 all_data_saved_(false), 186 all_data_saved_(false),
186 opened_(info.opened), 187 opened_(info.opened),
187 open_enabled_(true), 188 open_enabled_(true),
188 delegate_delayed_complete_(false) { 189 delegate_delayed_complete_(false),
190 bound_net_log_(bound_net_log) {
189 delegate_->Attach(); 191 delegate_->Attach();
190 if (IsInProgress()) 192 if (IsInProgress())
191 state_ = CANCELLED; 193 state_ = CANCELLED;
192 if (IsComplete()) 194 if (IsComplete())
193 all_data_saved_ = true; 195 all_data_saved_ = true;
194 Init(false /* not actively downloading */); 196 Init(false /* not actively downloading */,
197 download_net_logs::SRC_HISTORY_IMPORT);
195 } 198 }
196 199
197 // Constructing for a regular download: 200 // Constructing for a regular download:
198 DownloadItemImpl::DownloadItemImpl( 201 DownloadItemImpl::DownloadItemImpl(
199 Delegate* delegate, 202 Delegate* delegate,
200 const DownloadCreateInfo& info, 203 const DownloadCreateInfo& info,
201 DownloadRequestHandleInterface* request_handle, 204 DownloadRequestHandleInterface* request_handle,
202 bool is_otr) 205 bool is_otr,
206 const net::BoundNetLog& bound_net_log)
203 : state_info_(info.original_name, info.save_info.file_path, 207 : state_info_(info.original_name, info.save_info.file_path,
204 info.has_user_gesture, info.transition_type, 208 info.has_user_gesture, info.transition_type,
205 info.prompt_user_for_save_location), 209 info.prompt_user_for_save_location),
206 request_handle_(request_handle), 210 request_handle_(request_handle),
207 download_id_(info.download_id), 211 download_id_(info.download_id),
208 full_path_(info.path), 212 full_path_(info.path),
209 url_chain_(info.url_chain), 213 url_chain_(info.url_chain),
210 referrer_url_(info.referrer_url), 214 referrer_url_(info.referrer_url),
211 suggested_filename_(UTF16ToUTF8(info.save_info.suggested_name)), 215 suggested_filename_(UTF16ToUTF8(info.save_info.suggested_name)),
212 content_disposition_(info.content_disposition), 216 content_disposition_(info.content_disposition),
(...skipping 13 matching lines...) Expand all
226 is_paused_(false), 230 is_paused_(false),
227 open_when_complete_(false), 231 open_when_complete_(false),
228 file_externally_removed_(false), 232 file_externally_removed_(false),
229 safety_state_(SAFE), 233 safety_state_(SAFE),
230 auto_opened_(false), 234 auto_opened_(false),
231 is_otr_(is_otr), 235 is_otr_(is_otr),
232 is_temporary_(!info.save_info.file_path.empty()), 236 is_temporary_(!info.save_info.file_path.empty()),
233 all_data_saved_(false), 237 all_data_saved_(false),
234 opened_(false), 238 opened_(false),
235 open_enabled_(true), 239 open_enabled_(true),
236 delegate_delayed_complete_(false) { 240 delegate_delayed_complete_(false),
241 bound_net_log_(bound_net_log) {
237 delegate_->Attach(); 242 delegate_->Attach();
238 Init(true /* actively downloading */); 243 Init(true /* actively downloading */,
244 download_net_logs::SRC_NEW_DOWNLOAD);
239 } 245 }
240 246
241 // Constructing for the "Save Page As..." feature: 247 // Constructing for the "Save Page As..." feature:
242 DownloadItemImpl::DownloadItemImpl(Delegate* delegate, 248 DownloadItemImpl::DownloadItemImpl(Delegate* delegate,
243 const FilePath& path, 249 const FilePath& path,
244 const GURL& url, 250 const GURL& url,
245 bool is_otr, 251 bool is_otr,
246 DownloadId download_id) 252 DownloadId download_id,
253 const net::BoundNetLog& bound_net_log)
247 : request_handle_(new NullDownloadRequestHandle()), 254 : request_handle_(new NullDownloadRequestHandle()),
248 download_id_(download_id), 255 download_id_(download_id),
249 full_path_(path), 256 full_path_(path),
250 url_chain_(1, url), 257 url_chain_(1, url),
251 referrer_url_(GURL()), 258 referrer_url_(GURL()),
252 total_bytes_(0), 259 total_bytes_(0),
253 received_bytes_(0), 260 received_bytes_(0),
254 bytes_per_sec_(0), 261 bytes_per_sec_(0),
255 last_reason_(DOWNLOAD_INTERRUPT_REASON_NONE), 262 last_reason_(DOWNLOAD_INTERRUPT_REASON_NONE),
256 start_tick_(base::TimeTicks::Now()), 263 start_tick_(base::TimeTicks::Now()),
257 state_(IN_PROGRESS), 264 state_(IN_PROGRESS),
258 start_time_(base::Time::Now()), 265 start_time_(base::Time::Now()),
259 db_handle_(DownloadItem::kUninitializedHandle), 266 db_handle_(DownloadItem::kUninitializedHandle),
260 delegate_(delegate), 267 delegate_(delegate),
261 is_paused_(false), 268 is_paused_(false),
262 open_when_complete_(false), 269 open_when_complete_(false),
263 file_externally_removed_(false), 270 file_externally_removed_(false),
264 safety_state_(SAFE), 271 safety_state_(SAFE),
265 auto_opened_(false), 272 auto_opened_(false),
266 is_otr_(is_otr), 273 is_otr_(is_otr),
267 is_temporary_(false), 274 is_temporary_(false),
268 all_data_saved_(false), 275 all_data_saved_(false),
269 opened_(false), 276 opened_(false),
270 open_enabled_(true), 277 open_enabled_(true),
271 delegate_delayed_complete_(false) { 278 delegate_delayed_complete_(false),
279 bound_net_log_(bound_net_log) {
272 delegate_->Attach(); 280 delegate_->Attach();
273 Init(true /* actively downloading */); 281 Init(true /* actively downloading */,
282 download_net_logs::SRC_SAVE_PAGE_AS);
274 } 283 }
275 284
276 DownloadItemImpl::~DownloadItemImpl() { 285 DownloadItemImpl::~DownloadItemImpl() {
277 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. 286 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved.
278 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 287 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
279 288
280 TransitionTo(REMOVING); 289 TransitionTo(REMOVING);
281 STLDeleteContainerPairSecondPointers( 290 STLDeleteContainerPairSecondPointers(
282 external_data_map_.begin(), external_data_map_.end()); 291 external_data_map_.begin(), external_data_map_.end());
283 delegate_->AssertStateConsistent(this); 292 delegate_->AssertStateConsistent(this);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 365
357 void DownloadItemImpl::DangerousDownloadValidated() { 366 void DownloadItemImpl::DangerousDownloadValidated() {
358 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 367 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
359 DCHECK_EQ(DANGEROUS, GetSafetyState()); 368 DCHECK_EQ(DANGEROUS, GetSafetyState());
360 369
361 UMA_HISTOGRAM_ENUMERATION("Download.DangerousDownloadValidated", 370 UMA_HISTOGRAM_ENUMERATION("Download.DangerousDownloadValidated",
362 GetDangerType(), 371 GetDangerType(),
363 content::DOWNLOAD_DANGER_TYPE_MAX); 372 content::DOWNLOAD_DANGER_TYPE_MAX);
364 373
365 safety_state_ = DANGEROUS_BUT_VALIDATED; 374 safety_state_ = DANGEROUS_BUT_VALIDATED;
375
376 bound_net_log_.AddEvent(
377 net::NetLog::TYPE_DOWNLOAD_ITEM_SAFETY_STATE_UPDATED,
378 make_scoped_refptr(new download_net_logs::ItemCheckedParameters(
379 GetDangerType(), GetSafetyState())));
380
366 UpdateObservers(); 381 UpdateObservers();
367 382
368 delegate_->MaybeCompleteDownload(this); 383 delegate_->MaybeCompleteDownload(this);
369 } 384 }
370 385
371 void DownloadItemImpl::ProgressComplete(int64 bytes_so_far, 386 void DownloadItemImpl::ProgressComplete(int64 bytes_so_far,
372 const std::string& final_hash) { 387 const std::string& final_hash) {
373 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. 388 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved.
374 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 389 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
375 390
(...skipping 11 matching lines...) Expand all
387 void DownloadItemImpl::UpdateProgress(int64 bytes_so_far, 402 void DownloadItemImpl::UpdateProgress(int64 bytes_so_far,
388 const std::string& hash_state) { 403 const std::string& hash_state) {
389 hash_state_ = hash_state; 404 hash_state_ = hash_state;
390 405
391 received_bytes_ = bytes_so_far; 406 received_bytes_ = bytes_so_far;
392 407
393 // If we've received more data than we were expecting (bad server info?), 408 // If we've received more data than we were expecting (bad server info?),
394 // revert to 'unknown size mode'. 409 // revert to 'unknown size mode'.
395 if (received_bytes_ > total_bytes_) 410 if (received_bytes_ > total_bytes_)
396 total_bytes_ = 0; 411 total_bytes_ = 0;
412
413 if (bound_net_log_.IsLoggingAllEvents()) {
414 bound_net_log_.AddEvent(
415 net::NetLog::TYPE_DOWNLOAD_ITEM_UPDATED,
416 make_scoped_refptr(
417 new download_net_logs::ItemUpdatedParameters(received_bytes_)));
418 }
397 } 419 }
398 420
399 // Updates from the download thread may have been posted while this download 421 // Updates from the download thread may have been posted while this download
400 // was being cancelled in the UI thread, so we'll accept them unless we're 422 // was being cancelled in the UI thread, so we'll accept them unless we're
401 // complete. 423 // complete.
402 void DownloadItemImpl::UpdateProgress(int64 bytes_so_far, 424 void DownloadItemImpl::UpdateProgress(int64 bytes_so_far,
403 int64 bytes_per_sec, 425 int64 bytes_per_sec,
404 const std::string& hash_state) { 426 const std::string& hash_state) {
405 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. 427 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved.
406 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 428 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 518
497 auto_opened_ = true; 519 auto_opened_ = true;
498 UpdateObservers(); 520 UpdateObservers();
499 } 521 }
500 } 522 }
501 523
502 void DownloadItemImpl::TransitionTo(DownloadState new_state) { 524 void DownloadItemImpl::TransitionTo(DownloadState new_state) {
503 if (state_ == new_state) 525 if (state_ == new_state)
504 return; 526 return;
505 527
528 DownloadState old_state = state_;
506 state_ = new_state; 529 state_ = new_state;
530
531 switch (state_) {
532 case COMPLETE:
533 bound_net_log_.AddEvent(
534 net::NetLog::TYPE_DOWNLOAD_ITEM_FINISHED,
535 make_scoped_refptr(
536 new download_net_logs::ItemFinishedParameters(received_bytes_,
537 hash_)));
538 break;
539 case INTERRUPTED:
540 bound_net_log_.AddEvent(
541 net::NetLog::TYPE_DOWNLOAD_ITEM_INTERRUPTED,
542 make_scoped_refptr(
543 new download_net_logs::ItemInterruptedParameters(last_reason_,
544 received_bytes_,
545 hash_state_)));
546 break;
547 case CANCELLED:
548 bound_net_log_.AddEvent(
549 net::NetLog::TYPE_DOWNLOAD_ITEM_CANCELED,
550 make_scoped_refptr(
551 new download_net_logs::ItemCanceledParameters(received_bytes_,
552 hash_state_)));
553 break;
554 default:
555 break;
556 }
557
507 UpdateObservers(); 558 UpdateObservers();
559
560 bool is_done = (state_ != IN_PROGRESS);
561 bool was_done = (old_state != IN_PROGRESS);
562 if (is_done && !was_done)
563 bound_net_log_.EndEvent(net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE, NULL);
508 } 564 }
509 565
510 void DownloadItemImpl::UpdateSafetyState() { 566 void DownloadItemImpl::UpdateSafetyState() {
511 SafetyState updated_value = state_info_.IsDangerous() ? 567 SafetyState updated_value = state_info_.IsDangerous() ?
512 DownloadItem::DANGEROUS : DownloadItem::SAFE; 568 DownloadItem::DANGEROUS : DownloadItem::SAFE;
513 if (updated_value != safety_state_) { 569 if (updated_value != safety_state_) {
514 safety_state_ = updated_value; 570 safety_state_ = updated_value;
571
572 bound_net_log_.AddEvent(
573 net::NetLog::TYPE_DOWNLOAD_ITEM_SAFETY_STATE_UPDATED,
574 make_scoped_refptr(new download_net_logs::ItemCheckedParameters(
575 GetDangerType(), GetSafetyState())));
576
515 UpdateObservers(); 577 UpdateObservers();
516 } 578 }
517 } 579 }
518 580
519 void DownloadItemImpl::UpdateTarget() { 581 void DownloadItemImpl::UpdateTarget() {
520 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. 582 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved.
521 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 583 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
522 584
523 if (state_info_.target_name.value().empty()) 585 if (state_info_.target_name.value().empty())
524 state_info_.target_name = full_path_.BaseName(); 586 state_info_.target_name = full_path_.BaseName();
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 } 679 }
618 680
619 void DownloadItemImpl::Rename(const FilePath& full_path) { 681 void DownloadItemImpl::Rename(const FilePath& full_path) {
620 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. 682 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved.
621 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 683 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
622 684
623 VLOG(20) << __FUNCTION__ << "()" 685 VLOG(20) << __FUNCTION__ << "()"
624 << " full_path = \"" << full_path.value() << "\"" 686 << " full_path = \"" << full_path.value() << "\""
625 << " " << DebugString(true); 687 << " " << DebugString(true);
626 DCHECK(!full_path.empty()); 688 DCHECK(!full_path.empty());
689
690 bound_net_log_.AddEvent(
691 net::NetLog::TYPE_DOWNLOAD_ITEM_RENAMED,
692 make_scoped_refptr(
693 new download_net_logs::ItemRenamedParameters(
694 full_path_.AsUTF8Unsafe(), full_path.AsUTF8Unsafe())));
695
627 full_path_ = full_path; 696 full_path_ = full_path;
628 } 697 }
629 698
630 void DownloadItemImpl::TogglePause() { 699 void DownloadItemImpl::TogglePause() {
631 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. 700 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved.
632 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 701 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
633 702
634 DCHECK(IsInProgress()); 703 DCHECK(IsInProgress());
635 if (is_paused_) 704 if (is_paused_)
636 request_handle_->ResumeRequest(); 705 request_handle_->ResumeRequest();
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 void DownloadItemImpl::OffThreadCancel(DownloadFileManager* file_manager) { 873 void DownloadItemImpl::OffThreadCancel(DownloadFileManager* file_manager) {
805 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 874 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
806 request_handle_->CancelRequest(); 875 request_handle_->CancelRequest();
807 876
808 BrowserThread::PostTask( 877 BrowserThread::PostTask(
809 BrowserThread::FILE, FROM_HERE, 878 BrowserThread::FILE, FROM_HERE,
810 base::Bind(&DownloadFileManager::CancelDownload, 879 base::Bind(&DownloadFileManager::CancelDownload,
811 file_manager, download_id_)); 880 file_manager, download_id_));
812 } 881 }
813 882
814 void DownloadItemImpl::Init(bool active) { 883 void DownloadItemImpl::Init(bool active,
884 download_net_logs::DownloadType download_type) {
815 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. 885 // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved.
816 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 886 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
817 887
818 UpdateTarget(); 888 UpdateTarget();
819 if (active) 889 if (active)
820 download_stats::RecordDownloadCount(download_stats::START_COUNT); 890 download_stats::RecordDownloadCount(download_stats::START_COUNT);
891
892 std::string file_name;
893 if (download_type == download_net_logs::SRC_HISTORY_IMPORT) {
894 // full_path_ works for History and Save As versions.
895 file_name = full_path_.AsUTF8Unsafe();
896 } else {
897 // See if it's set programmatically.
898 file_name = state_info_.force_file_name.AsUTF8Unsafe();
899 // Possibly has a 'download' attribute for the anchor.
900 if (file_name.empty())
901 file_name = suggested_filename_;
902 // From the URL file name.
903 if (file_name.empty())
904 file_name = GetURL().ExtractFileName();
905 }
906
907 bound_net_log_.BeginEvent(
908 net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE,
909 make_scoped_refptr(new download_net_logs::ItemActivatedParameters(
910 download_type,
911 download_id_.local(),
912 GetOriginalUrl().spec(),
913 GetURL().spec(),
914 file_name,
915 GetDangerType(),
916 GetSafetyState(),
917 received_bytes_)));
918
919 // If this is not an active download, end the ACTIVE event now.
920 if (!active) {
921 bound_net_log_.AddEvent(
922 net::NetLog::TYPE_DOWNLOAD_ITEM_IN_HISTORY,
923 make_scoped_refptr(
924 new download_net_logs::ItemInHistoryParameters(db_handle_)));
925
926 bound_net_log_.EndEvent(net::NetLog::TYPE_DOWNLOAD_ITEM_ACTIVE, NULL);
927 }
928
821 VLOG(20) << __FUNCTION__ << "() " << DebugString(true); 929 VLOG(20) << __FUNCTION__ << "() " << DebugString(true);
822 } 930 }
823 931
824 // TODO(ahendrickson) -- Move |INTERRUPTED| from |IsCancelled()| to 932 // TODO(ahendrickson) -- Move |INTERRUPTED| from |IsCancelled()| to
825 // |IsPartialDownload()|, when resuming interrupted downloads is implemented. 933 // |IsPartialDownload()|, when resuming interrupted downloads is implemented.
826 bool DownloadItemImpl::IsPartialDownload() const { 934 bool DownloadItemImpl::IsPartialDownload() const {
827 return (state_ == IN_PROGRESS); 935 return (state_ == IN_PROGRESS);
828 } 936 }
829 937
830 bool DownloadItemImpl::IsInProgress() const { 938 bool DownloadItemImpl::IsInProgress() const {
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 } 1048 }
941 const std::string& DownloadItemImpl::GetHash() const { return hash_; } 1049 const std::string& DownloadItemImpl::GetHash() const { return hash_; }
942 int64 DownloadItemImpl::GetReceivedBytes() const { return received_bytes_; } 1050 int64 DownloadItemImpl::GetReceivedBytes() const { return received_bytes_; }
943 const std::string& DownloadItemImpl::GetHashState() const { 1051 const std::string& DownloadItemImpl::GetHashState() const {
944 return hash_state_; 1052 return hash_state_;
945 } 1053 }
946 int32 DownloadItemImpl::GetId() const { return download_id_.local(); } 1054 int32 DownloadItemImpl::GetId() const { return download_id_.local(); }
947 DownloadId DownloadItemImpl::GetGlobalId() const { return download_id_; } 1055 DownloadId DownloadItemImpl::GetGlobalId() const { return download_id_; }
948 base::Time DownloadItemImpl::GetStartTime() const { return start_time_; } 1056 base::Time DownloadItemImpl::GetStartTime() const { return start_time_; }
949 base::Time DownloadItemImpl::GetEndTime() const { return end_time_; } 1057 base::Time DownloadItemImpl::GetEndTime() const { return end_time_; }
950 void DownloadItemImpl::SetDbHandle(int64 handle) { db_handle_ = handle; } 1058
1059 void DownloadItemImpl::SetDbHandle(int64 handle) {
1060 db_handle_ = handle;
1061
1062 bound_net_log_.AddEvent(
1063 net::NetLog::TYPE_DOWNLOAD_ITEM_IN_HISTORY,
1064 make_scoped_refptr(
1065 new download_net_logs::ItemInHistoryParameters(db_handle_)));
1066 }
1067
951 int64 DownloadItemImpl::GetDbHandle() const { return db_handle_; } 1068 int64 DownloadItemImpl::GetDbHandle() const { return db_handle_; }
952 bool DownloadItemImpl::IsPaused() const { return is_paused_; } 1069 bool DownloadItemImpl::IsPaused() const { return is_paused_; }
953 bool DownloadItemImpl::GetOpenWhenComplete() const { 1070 bool DownloadItemImpl::GetOpenWhenComplete() const {
954 return open_when_complete_; 1071 return open_when_complete_;
955 } 1072 }
956 void DownloadItemImpl::SetOpenWhenComplete(bool open) { 1073 void DownloadItemImpl::SetOpenWhenComplete(bool open) {
957 open_when_complete_ = open; 1074 open_when_complete_ = open;
958 } 1075 }
959 bool DownloadItemImpl::GetFileExternallyRemoved() const { 1076 bool DownloadItemImpl::GetFileExternallyRemoved() const {
960 return file_externally_removed_; 1077 return file_externally_removed_;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 std::map<const void*, ExternalData*>::iterator it = 1118 std::map<const void*, ExternalData*>::iterator it =
1002 external_data_map_.find(key); 1119 external_data_map_.find(key);
1003 1120
1004 if (it == external_data_map_.end()) { 1121 if (it == external_data_map_.end()) {
1005 external_data_map_[key] = data; 1122 external_data_map_[key] = data;
1006 } else if (it->second != data) { 1123 } else if (it->second != data) {
1007 delete it->second; 1124 delete it->second;
1008 it->second = data; 1125 it->second = data;
1009 } 1126 }
1010 } 1127 }
OLDNEW
« no previous file with comments | « content/browser/download/download_item_impl.h ('k') | content/browser/download/download_item_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698