| 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; | 
| -} | 
|  |