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 |
deleted file mode 100644 |
index 7bebd92ef3970f5544759752c5048d4642fe2bef..0000000000000000000000000000000000000000 |
--- a/content/browser/download/download_file_manager.cc |
+++ /dev/null |
@@ -1,227 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "content/browser/download/download_file_manager.h" |
- |
-#include <set> |
-#include <string> |
- |
-#include "base/bind.h" |
-#include "base/file_util.h" |
-#include "base/logging.h" |
-#include "base/stl_util.h" |
-#include "base/utf_string_conversions.h" |
-#include "content/browser/download/base_file.h" |
-#include "content/browser/download/download_create_info.h" |
-#include "content/browser/download/download_file_impl.h" |
-#include "content/browser/download/download_interrupt_reasons_impl.h" |
-#include "content/browser/download/download_request_handle.h" |
-#include "content/browser/download/download_stats.h" |
-#include "content/browser/power_save_blocker.h" |
-#include "content/browser/web_contents/web_contents_impl.h" |
-#include "content/public/browser/browser_thread.h" |
-#include "content/public/browser/download_manager.h" |
-#include "content/public/browser/download_manager_delegate.h" |
-#include "googleurl/src/gurl.h" |
-#include "net/base/io_buffer.h" |
- |
-using content::BrowserThread; |
-using content::DownloadFile; |
-using content::DownloadId; |
-using content::DownloadManager; |
- |
-namespace { |
- |
-class DownloadFileFactoryImpl |
- : public DownloadFileManager::DownloadFileFactory { |
- public: |
- DownloadFileFactoryImpl() {} |
- |
- virtual content::DownloadFile* CreateFile( |
- DownloadCreateInfo* info, |
- scoped_ptr<content::ByteStreamReader> stream, |
- DownloadManager* download_manager, |
- bool calculate_hash, |
- const net::BoundNetLog& bound_net_log) OVERRIDE; |
-}; |
- |
-DownloadFile* DownloadFileFactoryImpl::CreateFile( |
- DownloadCreateInfo* info, |
- scoped_ptr<content::ByteStreamReader> stream, |
- DownloadManager* download_manager, |
- bool calculate_hash, |
- const net::BoundNetLog& bound_net_log) { |
- return new DownloadFileImpl( |
- info, stream.Pass(), new DownloadRequestHandle(info->request_handle), |
- download_manager, calculate_hash, |
- scoped_ptr<content::PowerSaveBlocker>( |
- new content::PowerSaveBlocker( |
- content::PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension, |
- "Download in progress")).Pass(), |
- bound_net_log); |
-} |
- |
-} // namespace |
- |
-DownloadFileManager::DownloadFileManager(DownloadFileFactory* factory) |
- : download_file_factory_(factory) { |
- if (download_file_factory_ == NULL) |
- download_file_factory_.reset(new DownloadFileFactoryImpl); |
-} |
- |
-DownloadFileManager::~DownloadFileManager() { |
- DCHECK(downloads_.empty()); |
-} |
- |
-void DownloadFileManager::Shutdown() { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- BrowserThread::PostTask( |
- BrowserThread::FILE, FROM_HERE, |
- base::Bind(&DownloadFileManager::OnShutdown, this)); |
-} |
- |
-void DownloadFileManager::OnShutdown() { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
- STLDeleteValues(&downloads_); |
-} |
- |
-void DownloadFileManager::CreateDownloadFile( |
- scoped_ptr<DownloadCreateInfo> info, |
- scoped_ptr<content::ByteStreamReader> stream, |
- scoped_refptr<DownloadManager> download_manager, bool get_hash, |
- const net::BoundNetLog& bound_net_log, |
- const CreateDownloadFileCallback& callback) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
- DCHECK(info.get()); |
- VLOG(20) << __FUNCTION__ << "()" << " info = " << info->DebugString(); |
- |
- scoped_ptr<DownloadFile> download_file(download_file_factory_->CreateFile( |
- info.get(), stream.Pass(), download_manager, get_hash, bound_net_log)); |
- |
- content::DownloadInterruptReason interrupt_reason( |
- download_file->Initialize()); |
- if (interrupt_reason == content::DOWNLOAD_INTERRUPT_REASON_NONE) { |
- DCHECK(GetDownloadFile(info->download_id) == NULL); |
- downloads_[info->download_id] = download_file.release(); |
- } |
- |
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
- base::Bind(callback, interrupt_reason)); |
-} |
- |
-DownloadFile* DownloadFileManager::GetDownloadFile( |
- DownloadId global_id) { |
- DownloadFileMap::iterator it = downloads_.find(global_id); |
- return it == downloads_.end() ? NULL : it->second; |
-} |
- |
-// This method will be sent via a user action, or shutdown on the UI thread, and |
-// run on the download thread. Since this message has been sent from the UI |
-// thread, the download may have already completed and won't exist in our map. |
-void DownloadFileManager::CancelDownload(DownloadId global_id) { |
- VLOG(20) << __FUNCTION__ << "()" << " id = " << global_id; |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
- DownloadFileMap::iterator it = downloads_.find(global_id); |
- if (it == downloads_.end()) |
- return; |
- |
- DownloadFile* download_file = it->second; |
- VLOG(20) << __FUNCTION__ << "()" |
- << " download_file = " << download_file->DebugString(); |
- download_file->Cancel(); |
- |
- EraseDownload(global_id); |
-} |
- |
-void DownloadFileManager::CompleteDownload( |
- DownloadId global_id, const base::Closure& callback) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
- |
- if (!ContainsKey(downloads_, global_id)) |
- return; |
- |
- DownloadFile* download_file = downloads_[global_id]; |
- |
- VLOG(20) << " " << __FUNCTION__ << "()" |
- << " id = " << global_id |
- << " download_file = " << download_file->DebugString(); |
- |
- // Done here on Windows so that anti-virus scanners invoked by |
- // the attachment service actually see the data; see |
- // http://crbug.com/127999. |
- // Done here for mac because we only want to do this once; see |
- // http://crbug.com/13120 for details. |
- // Other platforms don't currently do source annotation. |
- download_file->AnnotateWithSourceInformation(); |
- |
- download_file->Detach(); |
- |
- EraseDownload(global_id); |
- |
- // Notify our caller we've let it go. |
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, callback); |
-} |
- |
-void DownloadFileManager::OnDownloadManagerShutdown(DownloadManager* manager) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
- DCHECK(manager); |
- |
- std::set<DownloadFile*> to_remove; |
- |
- for (DownloadFileMap::iterator i = downloads_.begin(); |
- i != downloads_.end(); ++i) { |
- DownloadFile* download_file = i->second; |
- if (download_file->GetDownloadManager() == manager) { |
- download_file->CancelDownloadRequest(); |
- to_remove.insert(download_file); |
- } |
- } |
- |
- for (std::set<DownloadFile*>::iterator i = to_remove.begin(); |
- i != to_remove.end(); ++i) { |
- downloads_.erase((*i)->GlobalId()); |
- delete *i; |
- } |
-} |
- |
-// Actions from the UI thread and run on the download thread |
- |
-void DownloadFileManager::RenameDownloadFile( |
- DownloadId global_id, |
- const FilePath& full_path, |
- bool overwrite_existing_file, |
- const RenameCompletionCallback& callback) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
- DownloadFile* download_file = GetDownloadFile(global_id); |
- if (!download_file) { |
- BrowserThread::PostTask( |
- BrowserThread::UI, FROM_HERE, |
- base::Bind(callback, content::DOWNLOAD_INTERRUPT_REASON_FILE_FAILED, |
- FilePath())); |
- return; |
- } |
- |
- download_file->Rename(full_path, overwrite_existing_file, callback); |
-} |
- |
-int DownloadFileManager::NumberOfActiveDownloads() const { |
- return downloads_.size(); |
-} |
- |
-void DownloadFileManager::EraseDownload(DownloadId global_id) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
- |
- if (!ContainsKey(downloads_, global_id)) |
- return; |
- |
- DownloadFile* download_file = downloads_[global_id]; |
- |
- VLOG(20) << " " << __FUNCTION__ << "()" |
- << " id = " << global_id |
- << " download_file = " << download_file->DebugString(); |
- |
- downloads_.erase(global_id); |
- |
- delete download_file; |
-} |