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

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

Issue 10735089: DownloadManager::Observer::OnDownloadCreated (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 4 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) 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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 upload_data->set_identifier(params->post_id()); 101 upload_data->set_identifier(params->post_id());
102 request->set_upload(upload_data); 102 request->set_upload(upload_data);
103 } 103 }
104 for (content::DownloadUrlParameters::RequestHeadersType::const_iterator iter 104 for (content::DownloadUrlParameters::RequestHeadersType::const_iterator iter
105 = params->request_headers_begin(); 105 = params->request_headers_begin();
106 iter != params->request_headers_end(); 106 iter != params->request_headers_end();
107 ++iter) { 107 ++iter) {
108 request->SetExtraRequestHeaderByName( 108 request->SetExtraRequestHeaderByName(
109 iter->first, iter->second, false/*overwrite*/); 109 iter->first, iter->second, false/*overwrite*/);
110 } 110 }
111 LOG(INFO) << "occam " << __FUNCTION__;
111 params->resource_dispatcher_host()->BeginDownload( 112 params->resource_dispatcher_host()->BeginDownload(
112 request.Pass(), 113 request.Pass(),
113 params->content_initiated(), 114 params->content_initiated(),
114 params->resource_context(), 115 params->resource_context(),
115 params->render_process_host_id(), 116 params->render_process_host_id(),
116 params->render_view_host_routing_id(), 117 params->render_view_host_routing_id(),
117 params->prefer_cache(), 118 params->prefer_cache(),
118 params->save_info(), 119 params->save_info(),
119 params->callback()); 120 params->callback());
120 } 121 }
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 browser_context_ = browser_context; 394 browser_context_ = browser_context;
394 395
395 return true; 396 return true;
396 } 397 }
397 398
398 // We have received a message from DownloadFileManager about a new download. 399 // We have received a message from DownloadFileManager about a new download.
399 content::DownloadId DownloadManagerImpl::StartDownload( 400 content::DownloadId DownloadManagerImpl::StartDownload(
400 scoped_ptr<DownloadCreateInfo> info, 401 scoped_ptr<DownloadCreateInfo> info,
401 scoped_ptr<content::ByteStreamReader> stream) { 402 scoped_ptr<content::ByteStreamReader> stream) {
402 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 403 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
404 LOG(INFO) << "occam " << __FUNCTION__;
403 405
404 // |bound_net_log| will be used for logging both the download item's and 406 // |bound_net_log| will be used for logging both the download item's and
405 // the download file's events. 407 // the download file's events.
406 net::BoundNetLog bound_net_log = CreateDownloadItem(info.get()); 408 net::BoundNetLog bound_net_log = CreateDownloadItem(info.get());
407 409
408 // If info->download_id was unknown on entry to this function, it was 410 // If info->download_id was unknown on entry to this function, it was
409 // assigned in CreateDownloadItem. 411 // assigned in CreateDownloadItem.
410 DownloadId download_id = info->download_id; 412 DownloadId download_id = info->download_id;
411 413
412 DownloadFileManager::CreateDownloadFileCallback callback( 414 DownloadFileManager::CreateDownloadFileCallback callback(
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 } 519 }
518 520
519 net::BoundNetLog DownloadManagerImpl::CreateDownloadItem( 521 net::BoundNetLog DownloadManagerImpl::CreateDownloadItem(
520 DownloadCreateInfo* info) { 522 DownloadCreateInfo* info) {
521 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 523 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
522 524
523 net::BoundNetLog bound_net_log = 525 net::BoundNetLog bound_net_log =
524 net::BoundNetLog::Make(net_log_, net::NetLog::SOURCE_DOWNLOAD); 526 net::BoundNetLog::Make(net_log_, net::NetLog::SOURCE_DOWNLOAD);
525 if (!info->download_id.IsValid()) 527 if (!info->download_id.IsValid())
526 info->download_id = GetNextId(); 528 info->download_id = GetNextId();
529 LOG(INFO) << "occam " << __FUNCTION__ << " " << info->download_id;
527 DownloadItemImpl* download = factory_->CreateActiveItem( 530 DownloadItemImpl* download = factory_->CreateActiveItem(
528 this, *info, 531 this, *info,
529 scoped_ptr<DownloadRequestHandleInterface>( 532 scoped_ptr<DownloadRequestHandleInterface>(
530 new DownloadRequestHandle(info->request_handle)).Pass(), 533 new DownloadRequestHandle(info->request_handle)).Pass(),
531 browser_context_->IsOffTheRecord(), bound_net_log); 534 browser_context_->IsOffTheRecord(), bound_net_log);
532 535
533 DCHECK(!ContainsKey(downloads_, download->GetId())); 536 DCHECK(!ContainsKey(downloads_, download->GetId()));
534 downloads_[download->GetId()] = download; 537 downloads_[download->GetId()] = download;
535 DCHECK(!ContainsKey(active_downloads_, download->GetId())); 538 DCHECK(!ContainsKey(active_downloads_, download->GetId()));
536 active_downloads_[download->GetId()] = download; 539 active_downloads_[download->GetId()] = download;
540 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadCreated(this, download));
537 541
538 return bound_net_log; 542 return bound_net_log;
539 } 543 }
540 544
541 DownloadItemImpl* DownloadManagerImpl::CreateSavePackageDownloadItem( 545 DownloadItemImpl* DownloadManagerImpl::CreateSavePackageDownloadItem(
542 const FilePath& main_file_path, 546 const FilePath& main_file_path,
543 const GURL& page_url, 547 const GURL& page_url,
544 bool is_otr, 548 bool is_otr,
545 const std::string& mime_type, 549 const std::string& mime_type,
546 DownloadItem::Observer* observer) { 550 DownloadItem::Observer* observer) {
547 net::BoundNetLog bound_net_log = 551 net::BoundNetLog bound_net_log =
548 net::BoundNetLog::Make(net_log_, net::NetLog::SOURCE_DOWNLOAD); 552 net::BoundNetLog::Make(net_log_, net::NetLog::SOURCE_DOWNLOAD);
549 DownloadItemImpl* download = factory_->CreateSavePageItem( 553 DownloadItemImpl* download = factory_->CreateSavePageItem(
550 this, 554 this,
551 main_file_path, 555 main_file_path,
552 page_url, 556 page_url,
553 is_otr, 557 is_otr,
554 GetNextId(), 558 GetNextId(),
555 mime_type, 559 mime_type,
556 bound_net_log); 560 bound_net_log);
557 561
558 download->AddObserver(observer); 562 download->AddObserver(observer);
559 563
560 DCHECK(!ContainsKey(downloads_, download->GetId())); 564 DCHECK(!ContainsKey(downloads_, download->GetId()));
561 downloads_[download->GetId()] = download; 565 downloads_[download->GetId()] = download;
562 DCHECK(!SavePageExternalData::Get(download)); 566 DCHECK(!SavePageExternalData::Get(download));
563 new SavePageExternalData(download); 567 new SavePageExternalData(download);
564 DCHECK(SavePageExternalData::Get(download)); 568 DCHECK(SavePageExternalData::Get(download));
565 569
570 // TODO(benjhayden): Fire OnDownloadCreated for SavePackage downloads when
571 // we're comfortable with the user interacting with them.
572 // FOR_EACH_OBSERVER(Observer, observers_, OnDownloadCreated(this, download));
573
566 // Will notify the observer in the callback. 574 // Will notify the observer in the callback.
567 if (delegate_) 575 if (delegate_)
568 delegate_->AddItemToPersistentStore(download); 576 delegate_->AddItemToPersistentStore(download);
569 577
570 return download; 578 return download;
571 } 579 }
572 580
573 // The target path for the download item is now valid. We proceed with the 581 // The target path for the download item is now valid. We proceed with the
574 // determination of an intermediate path. 582 // determination of an intermediate path.
575 void DownloadManagerImpl::OnTargetPathAvailable(DownloadItemImpl* download) { 583 void DownloadManagerImpl::OnTargetPathAvailable(DownloadItemImpl* download) {
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 for (size_t i = 0; i < entries->size(); ++i) { 948 for (size_t i = 0; i < entries->size(); ++i) {
941 int64 db_handle = entries->at(i).db_handle; 949 int64 db_handle = entries->at(i).db_handle;
942 base::debug::Alias(&db_handle); 950 base::debug::Alias(&db_handle);
943 951
944 net::BoundNetLog bound_net_log = 952 net::BoundNetLog bound_net_log =
945 net::BoundNetLog::Make(net_log_, net::NetLog::SOURCE_DOWNLOAD); 953 net::BoundNetLog::Make(net_log_, net::NetLog::SOURCE_DOWNLOAD);
946 DownloadItemImpl* download = factory_->CreatePersistedItem( 954 DownloadItemImpl* download = factory_->CreatePersistedItem(
947 this, GetNextId(), entries->at(i), bound_net_log); 955 this, GetNextId(), entries->at(i), bound_net_log);
948 DCHECK(!ContainsKey(downloads_, download->GetId())); 956 DCHECK(!ContainsKey(downloads_, download->GetId()));
949 downloads_[download->GetId()] = download; 957 downloads_[download->GetId()] = download;
958 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadCreated(this, download));
950 VLOG(20) << __FUNCTION__ << "()" << i << ">" 959 VLOG(20) << __FUNCTION__ << "()" << i << ">"
951 << " download = " << download->DebugString(true); 960 << " download = " << download->DebugString(true);
952 } 961 }
953 NotifyModelChanged(); 962 NotifyModelChanged();
954 CheckForHistoryFilesRemoval(); 963 CheckForHistoryFilesRemoval();
955 } 964 }
956 965
957 void DownloadManagerImpl::AddDownloadItemToHistory(DownloadItemImpl* download, 966 void DownloadManagerImpl::AddDownloadItemToHistory(DownloadItemImpl* download,
958 int64 db_handle) { 967 int64 db_handle) {
959 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 968 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
1169 void DownloadManagerImpl::DownloadRenamedToFinalName( 1178 void DownloadManagerImpl::DownloadRenamedToFinalName(
1170 DownloadItemImpl* download) { 1179 DownloadItemImpl* download) {
1171 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1180 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1172 // If the rename failed, we receive an OnDownloadInterrupted() call before we 1181 // If the rename failed, we receive an OnDownloadInterrupted() call before we
1173 // receive the DownloadRenamedToFinalName() call. 1182 // receive the DownloadRenamedToFinalName() call.
1174 if (delegate_) { 1183 if (delegate_) {
1175 delegate_->UpdatePathForItemInPersistentStore( 1184 delegate_->UpdatePathForItemInPersistentStore(
1176 download, download->GetFullPath()); 1185 download, download->GetFullPath());
1177 } 1186 }
1178 } 1187 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698