Index: content/browser/download/download_file_manager.cc |
diff --git a/content/browser/download/download_file_manager.cc b/content/browser/download/download_file_manager.cc |
index 0a5f5e964ae664342d0333c816ddeebdd391cd73..e9794b76568e5f7c53a73f22f8a4c649f7f20a4a 100644 |
--- a/content/browser/download/download_file_manager.cc |
+++ b/content/browser/download/download_file_manager.cc |
@@ -34,10 +34,32 @@ namespace { |
// cause it to become unresponsive (in milliseconds). |
const int kUpdatePeriodMs = 500; |
+class DownloadFileFactoryImpl |
+ : public DownloadFileManager::DownloadFileFactory { |
+ public: |
+ DownloadFileFactoryImpl() {} |
+ |
+ virtual DownloadFile* CreateFile(DownloadCreateInfo* info, |
+ const DownloadRequestHandle& request_handle, |
+ DownloadManager* download_manager) OVERRIDE; |
+}; |
+ |
+DownloadFile* DownloadFileFactoryImpl::CreateFile( |
+ DownloadCreateInfo* info, |
+ const DownloadRequestHandle& request_handle, |
+ DownloadManager* download_manager) { |
+ return new DownloadFileImpl(info, |
+ new DownloadRequestHandle(request_handle), |
+ download_manager); |
+} |
+ |
} // namespace |
-DownloadFileManager::DownloadFileManager(ResourceDispatcherHost* rdh) |
- : resource_dispatcher_host_(rdh) { |
+DownloadFileManager::DownloadFileManager(ResourceDispatcherHost* rdh, |
+ DownloadFileFactory* factory) |
+ : resource_dispatcher_host_(rdh), download_file_factory_(factory) { |
+ if (download_file_factory_ == NULL) |
+ download_file_factory_.reset(new DownloadFileFactoryImpl); |
} |
DownloadFileManager::~DownloadFileManager() { |
@@ -67,10 +89,8 @@ void DownloadFileManager::CreateDownloadFile( |
// Life of |info| ends here. No more references to it after this method. |
scoped_ptr<DownloadCreateInfo> infop(info); |
- scoped_ptr<DownloadFile> download_file( |
- new DownloadFileImpl(info, |
- new DownloadRequestHandle(request_handle), |
- download_manager)); |
+ scoped_ptr<DownloadFile> download_file(download_file_factory_->CreateFile( |
+ info, request_handle, download_manager)); |
if (net::OK != download_file->Initialize(get_hash)) { |
request_handle.CancelRequest(); |
return; |