| Index: content/browser/download/download_file_manager.h
|
| diff --git a/content/browser/download/download_file_manager.h b/content/browser/download/download_file_manager.h
|
| deleted file mode 100644
|
| index 919f1c4c458b6ba084b5700826e4579841286491..0000000000000000000000000000000000000000
|
| --- a/content/browser/download/download_file_manager.h
|
| +++ /dev/null
|
| @@ -1,180 +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.
|
| -//
|
| -// The DownloadFileManager owns a set of DownloadFile objects, each of which
|
| -// represent one in progress download and performs the disk IO for that
|
| -// download. The DownloadFileManager itself is a singleton object owned by the
|
| -// ResourceDispatcherHostImpl.
|
| -//
|
| -// The DownloadFileManager uses the file_thread for performing file write
|
| -// operations, in order to avoid disk activity on either the IO (network) thread
|
| -// and the UI thread. It coordinates the notifications from the network and UI.
|
| -//
|
| -// A typical download operation involves multiple threads:
|
| -//
|
| -// Updating an in progress download
|
| -// io_thread
|
| -// |----> data ---->|
|
| -// file_thread (writes to disk)
|
| -// |----> stats ---->|
|
| -// ui_thread (feedback for user and
|
| -// updates to history)
|
| -//
|
| -// Cancel operations perform the inverse order when triggered by a user action:
|
| -// ui_thread (user click)
|
| -// |----> cancel command ---->|
|
| -// file_thread (close file)
|
| -// |----> cancel command ---->|
|
| -// io_thread (stops net IO
|
| -// for download)
|
| -//
|
| -// The DownloadFileManager tracks download requests, mapping from a download
|
| -// ID (unique integer created in the IO thread) to the DownloadManager for the
|
| -// contents (profile) where the download was initiated. In the event of a
|
| -// contents closure during a download, the DownloadFileManager will continue to
|
| -// route data to the appropriate DownloadManager. In progress downloads are
|
| -// cancelled for a DownloadManager that exits (such as when closing a profile).
|
| -
|
| -#ifndef CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_FILE_MANAGER_H_
|
| -#define CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_FILE_MANAGER_H_
|
| -
|
| -#include <map>
|
| -
|
| -#include "base/atomic_sequence_num.h"
|
| -#include "base/basictypes.h"
|
| -#include "base/callback_forward.h"
|
| -#include "base/gtest_prod_util.h"
|
| -#include "base/hash_tables.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/timer.h"
|
| -#include "content/browser/download/download_file.h"
|
| -#include "content/common/content_export.h"
|
| -#include "content/public/browser/download_id.h"
|
| -#include "content/public/browser/download_interrupt_reasons.h"
|
| -#include "net/base/net_errors.h"
|
| -#include "ui/gfx/native_widget_types.h"
|
| -
|
| -struct DownloadCreateInfo;
|
| -class DownloadRequestHandle;
|
| -class FilePath;
|
| -
|
| -namespace content {
|
| -class ByteStreamReader;
|
| -class DownloadId;
|
| -class DownloadManager;
|
| -}
|
| -
|
| -namespace net {
|
| -class BoundNetLog;
|
| -}
|
| -
|
| -// Manages all in progress downloads.
|
| -// Methods are virtual to allow mocks--this class is not intended
|
| -// to be a base class.
|
| -class CONTENT_EXPORT DownloadFileManager
|
| - : public base::RefCountedThreadSafe<DownloadFileManager> {
|
| - public:
|
| - // Callback used with CreateDownloadFile(). |reason| will be
|
| - // DOWNLOAD_INTERRUPT_REASON_NONE on a successful creation.
|
| - typedef base::Callback<void(content::DownloadInterruptReason reason)>
|
| - CreateDownloadFileCallback;
|
| -
|
| - // Callback used with RenameDownloadFile().
|
| - typedef content::DownloadFile::RenameCompletionCallback
|
| - RenameCompletionCallback;
|
| -
|
| - class DownloadFileFactory {
|
| - public:
|
| - virtual ~DownloadFileFactory() {}
|
| -
|
| - virtual content::DownloadFile* CreateFile(
|
| - DownloadCreateInfo* info,
|
| - scoped_ptr<content::ByteStreamReader> stream,
|
| - content::DownloadManager* download_manager,
|
| - bool calculate_hash,
|
| - const net::BoundNetLog& bound_net_log) = 0;
|
| - };
|
| -
|
| - // Takes ownership of the factory.
|
| - // Passing in a NULL for |factory| will cause a default
|
| - // |DownloadFileFactory| to be used.
|
| - explicit DownloadFileManager(DownloadFileFactory* factory);
|
| -
|
| - // Create a download file and record it in the download file manager.
|
| - virtual void CreateDownloadFile(
|
| - scoped_ptr<DownloadCreateInfo> info,
|
| - scoped_ptr<content::ByteStreamReader> stream,
|
| - scoped_refptr<content::DownloadManager> download_manager,
|
| - bool hash_needed,
|
| - const net::BoundNetLog& bound_net_log,
|
| - const CreateDownloadFileCallback& callback);
|
| -
|
| - // Called on shutdown on the UI thread.
|
| - virtual void Shutdown();
|
| -
|
| - // Handlers for notifications sent from the UI thread and run on the
|
| - // FILE thread. These are both terminal actions with respect to the
|
| - // download file, as far as the DownloadFileManager is concerned -- if
|
| - // anything happens to the download file after they are called, it will
|
| - // be ignored.
|
| - // We call back to the UI thread in the case of CompleteDownload so that
|
| - // we know when we can hand the file off to other consumers.
|
| - virtual void CancelDownload(content::DownloadId id);
|
| - virtual void CompleteDownload(content::DownloadId id,
|
| - const base::Closure& callback);
|
| -
|
| - // Called on FILE thread by DownloadManager at the beginning of its shutdown.
|
| - virtual void OnDownloadManagerShutdown(content::DownloadManager* manager);
|
| -
|
| - // Rename the download file, uniquifying if overwrite was not requested.
|
| - virtual void RenameDownloadFile(
|
| - content::DownloadId id,
|
| - const FilePath& full_path,
|
| - bool overwrite_existing_file,
|
| - const RenameCompletionCallback& callback);
|
| -
|
| - // The number of downloads currently active on the DownloadFileManager.
|
| - // Primarily for testing.
|
| - virtual int NumberOfActiveDownloads() const;
|
| -
|
| - void SetFileFactoryForTesting(scoped_ptr<DownloadFileFactory> file_factory) {
|
| - download_file_factory_.reset(file_factory.release());
|
| - }
|
| -
|
| - DownloadFileFactory* GetFileFactoryForTesting() const {
|
| - return download_file_factory_.get(); // Explicitly NOT a scoped_ptr.
|
| - }
|
| -
|
| - protected:
|
| - virtual ~DownloadFileManager();
|
| -
|
| - private:
|
| - friend class base::RefCountedThreadSafe<DownloadFileManager>;
|
| - friend class DownloadFileManagerTest;
|
| - friend class DownloadManagerTest;
|
| - FRIEND_TEST_ALL_PREFIXES(DownloadManagerTest, StartDownload);
|
| -
|
| - // Clean up helper that runs on the download thread.
|
| - void OnShutdown();
|
| -
|
| - // Called only on the download thread.
|
| - content::DownloadFile* GetDownloadFile(content::DownloadId global_id);
|
| -
|
| - // Erases the download file with the given the download |id| and removes
|
| - // it from the maps.
|
| - void EraseDownload(content::DownloadId global_id);
|
| -
|
| - typedef base::hash_map<content::DownloadId, content::DownloadFile*>
|
| - DownloadFileMap;
|
| -
|
| - // A map of all in progress downloads. It owns the download files.
|
| - DownloadFileMap downloads_;
|
| -
|
| - scoped_ptr<DownloadFileFactory> download_file_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(DownloadFileManager);
|
| -};
|
| -
|
| -#endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_FILE_MANAGER_H_
|
|
|