| Index: chrome/browser/chromeos/drive/file_system/download_operation.h
|
| diff --git a/chrome/browser/chromeos/drive/file_system/download_operation.h b/chrome/browser/chromeos/drive/file_system/download_operation.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9a70ca1fa1c45a156329fd9e76637fd72e86c62d
|
| --- /dev/null
|
| +++ b/chrome/browser/chromeos/drive/file_system/download_operation.h
|
| @@ -0,0 +1,138 @@
|
| +// Copyright 2013 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.
|
| +
|
| +#ifndef CHROME_BROWSER_CHROMEOS_DRIVE_FILE_SYSTEM_DOWNLOAD_OPERATION_H_
|
| +#define CHROME_BROWSER_CHROMEOS_DRIVE_FILE_SYSTEM_DOWNLOAD_OPERATION_H_
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "chrome/browser/chromeos/drive/file_errors.h"
|
| +#include "chrome/browser/chromeos/drive/file_system_interface.h"
|
| +#include "chrome/browser/chromeos/drive/job_list.h"
|
| +#include "chrome/browser/google_apis/drive_service_interface.h"
|
| +#include "chrome/browser/google_apis/gdata_errorcode.h"
|
| +
|
| +namespace base {
|
| +class FilePath;
|
| +class SequencedTaskRunner;
|
| +} // namespace base
|
| +
|
| +namespace google_apis {
|
| +class ResourceEntry;
|
| +} // namespace google_apis
|
| +
|
| +namespace drive {
|
| +
|
| +class JobScheduler;
|
| +class ResourceEntry;
|
| +
|
| +namespace internal {
|
| +class FileCache;
|
| +class ResourceMetadtata;
|
| +} // namespace internal
|
| +
|
| +namespace file_system {
|
| +
|
| +class OperationObserver;
|
| +
|
| +class DownloadOperation {
|
| + public:
|
| + DownloadOperation(base::SequencedTaskRunner* blocking_task_runner,
|
| + OperationObserver* observer,
|
| + JobScheduler* scheduler,
|
| + internal::ResourceMetadata* metadata,
|
| + internal::FileCache* cache);
|
| + ~DownloadOperation();
|
| +
|
| + // Ensures that the file content is locally downloaded.
|
| + // For hosted documents, this method may create a JSON file representing the
|
| + // file.
|
| + // For regular files, if the locally cached file is found, returns it.
|
| + // If not found, start to download the file from the server.
|
| + // When a JSON file is created, the cache file is found or downloading is
|
| + // being started, |initialized_callback| is called with |local_file|
|
| + // for JSON file or the cache file, or with |cancel_download_closure| for
|
| + // downloading.
|
| + // During the downloading |get_content_callback| will be called periodically
|
| + // with the downloaded content.
|
| + // Upon completion or an error is found, |completion_callback| will be
|
| + // called.
|
| + // |initialized_callback| and |get_content_callback| can be null if not
|
| + // needed.
|
| + // |completion_callback| must not be null.
|
| + void EnsureFileDownloaded(
|
| + const base::FilePath& file_path,
|
| + DriveClientContext context,
|
| + const GetFileContentInitializedCallback& initialized_callback,
|
| + const google_apis::GetContentCallback& get_content_callback,
|
| + const GetFileCallback& completion_callback);
|
| +
|
| + private:
|
| + // Thin wrapper of Callbacks for EnsureFileDownloaded.
|
| + class DownloadCallback;
|
| +
|
| + // Parameters for JobScheduler::DownloadFile.
|
| + struct DownloadParams;
|
| +
|
| + // Part of EnsureFileDownloaded(). Called upon the completion of precondition
|
| + // check.
|
| + void EnsureFileDownloadedAfterCheckPreCondition(
|
| + const base::FilePath& file_path,
|
| + DriveClientContext context,
|
| + const DownloadCallback& callback,
|
| + scoped_ptr<ResourceEntry> entry,
|
| + base::FilePath* cache_file_path,
|
| + FileError error);
|
| +
|
| + // Part of EnsureFileDownloaded(). Called upon the completion of fetching
|
| + // ResourceEntry from the server.
|
| + void EnsureFileDownloadedAfterGetResourceEntry(
|
| + DriveClientContext context,
|
| + const DownloadCallback& callback,
|
| + google_apis::GDataErrorCode gdata_error,
|
| + scoped_ptr<google_apis::ResourceEntry> resource_entry);
|
| +
|
| + // Part of EnsureFileDownloaded(). Called when it is ready to start
|
| + // downloading the file.
|
| + void EnsureFileDownloadedAfterPrepareForDownloadFile(
|
| + DownloadParams* params,
|
| + const DownloadCallback& callback,
|
| + FileError error);
|
| +
|
| + // Part of EnsureFileDownloaded(). Called after the actual downloading.
|
| + void EnsureFileDownloadedAfterDownloadFile(
|
| + const base::FilePath& drive_file_path,
|
| + scoped_ptr<ResourceEntry> entry,
|
| + const DownloadCallback& callback,
|
| + google_apis::GDataErrorCode gdata_error,
|
| + const base::FilePath& downloaded_file_path);
|
| +
|
| + // Part of EnsureFileDownloaded(). Called after updating local state is
|
| + // completed.
|
| + void EnsureFileDownloadedAfterUpdateLocalState(
|
| + const base::FilePath& file_path,
|
| + const DownloadCallback& callback,
|
| + scoped_ptr<ResourceEntry> entry,
|
| + base::FilePath* cache_file_path,
|
| + FileError error);
|
| +
|
| + // Cancels the job with |job_id| in the scheduler.
|
| + void CancelJob(JobID job_id);
|
| +
|
| + scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
|
| + OperationObserver* observer_;
|
| + JobScheduler* scheduler_;
|
| + internal::ResourceMetadata* metadata_;
|
| + internal::FileCache* cache_;
|
| +
|
| + // Note: This should remain the last member so it'll be destroyed and
|
| + // invalidate its weak pointers before any other members are destroyed.
|
| + base::WeakPtrFactory<DownloadOperation> weak_ptr_factory_;
|
| + DISALLOW_COPY_AND_ASSIGN(DownloadOperation);
|
| +};
|
| +
|
| +} // namespace file_system
|
| +} // namespace drive
|
| +
|
| +#endif // CHROME_BROWSER_CHROMEOS_DRIVE_FILE_SYSTEM_DOWNLOAD_OPERATION_H_
|
|
|