Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1293)

Unified Diff: webkit/browser/fileapi/file_system_operation_runner.h

Issue 539143002: Migrate webkit/browser/ to storage/browser/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webkit/browser/fileapi/file_system_operation_runner.h
diff --git a/webkit/browser/fileapi/file_system_operation_runner.h b/webkit/browser/fileapi/file_system_operation_runner.h
index cd30d7b5d1dc212ee16e347c990413ab4df434f7..783f9a3d87df0c9deb0816186b544dcb109c759d 100644
--- a/webkit/browser/fileapi/file_system_operation_runner.h
+++ b/webkit/browser/fileapi/file_system_operation_runner.h
@@ -1,322 +1,5 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
+// Copyright 2014 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 WEBKIT_BROWSER_FILEAPI_FILE_SYSTEM_OPERATION_RUNNER_H_
-#define WEBKIT_BROWSER_FILEAPI_FILE_SYSTEM_OPERATION_RUNNER_H_
-
-#include <map>
-#include <set>
-#include <vector>
-
-#include "base/basictypes.h"
-#include "base/id_map.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "webkit/browser/blob/blob_data_handle.h"
-#include "webkit/browser/fileapi/file_system_operation.h"
-#include "webkit/browser/fileapi/file_system_url.h"
-#include "webkit/browser/storage_browser_export.h"
-
-namespace net {
-class URLRequestContext;
-}
-
-namespace storage {
-
-class FileSystemURL;
-class FileSystemContext;
-
-// A central interface for running FileSystem API operations.
-// All operation methods take callback and returns OperationID, which is
-// an integer value which can be used for cancelling an operation.
-// All operation methods return kErrorOperationID if running (posting) an
-// operation fails, in addition to dispatching the callback with an error
-// code (therefore in most cases the caller does not need to check the
-// returned operation ID).
-class STORAGE_EXPORT FileSystemOperationRunner
- : public base::SupportsWeakPtr<FileSystemOperationRunner> {
- public:
- typedef FileSystemOperation::GetMetadataCallback GetMetadataCallback;
- typedef FileSystemOperation::ReadDirectoryCallback ReadDirectoryCallback;
- typedef FileSystemOperation::SnapshotFileCallback SnapshotFileCallback;
- typedef FileSystemOperation::StatusCallback StatusCallback;
- typedef FileSystemOperation::WriteCallback WriteCallback;
- typedef FileSystemOperation::OpenFileCallback OpenFileCallback;
- typedef FileSystemOperation::CopyProgressCallback CopyProgressCallback;
- typedef FileSystemOperation::CopyFileProgressCallback
- CopyFileProgressCallback;
- typedef FileSystemOperation::CopyOrMoveOption CopyOrMoveOption;
-
- typedef int OperationID;
-
- virtual ~FileSystemOperationRunner();
-
- // Cancels all inflight operations.
- void Shutdown();
-
- // Creates a file at |url|. If |exclusive| is true, an error is raised
- // in case a file is already present at the URL.
- OperationID CreateFile(const FileSystemURL& url,
- bool exclusive,
- const StatusCallback& callback);
-
- OperationID CreateDirectory(const FileSystemURL& url,
- bool exclusive,
- bool recursive,
- const StatusCallback& callback);
-
- // Copies a file or directory from |src_url| to |dest_url|. If
- // |src_url| is a directory, the contents of |src_url| are copied to
- // |dest_url| recursively. A new file or directory is created at
- // |dest_url| as needed.
- // For |option| and |progress_callback|, see file_system_operation.h for
- // details.
- OperationID Copy(const FileSystemURL& src_url,
- const FileSystemURL& dest_url,
- CopyOrMoveOption option,
- const CopyProgressCallback& progress_callback,
- const StatusCallback& callback);
-
- // Moves a file or directory from |src_url| to |dest_url|. A new file
- // or directory is created at |dest_url| as needed.
- // For |option|, see file_system_operation.h for details.
- OperationID Move(const FileSystemURL& src_url,
- const FileSystemURL& dest_url,
- CopyOrMoveOption option,
- const StatusCallback& callback);
-
- // Checks if a directory is present at |url|.
- OperationID DirectoryExists(const FileSystemURL& url,
- const StatusCallback& callback);
-
- // Checks if a file is present at |url|.
- OperationID FileExists(const FileSystemURL& url,
- const StatusCallback& callback);
-
- // Gets the metadata of a file or directory at |url|.
- OperationID GetMetadata(const FileSystemURL& url,
- const GetMetadataCallback& callback);
-
- // Reads contents of a directory at |url|.
- OperationID ReadDirectory(const FileSystemURL& url,
- const ReadDirectoryCallback& callback);
-
- // Removes a file or directory at |url|. If |recursive| is true, remove
- // all files and directories under the directory at |url| recursively.
- OperationID Remove(const FileSystemURL& url, bool recursive,
- const StatusCallback& callback);
-
- // Writes contents of |blob_url| to |url| at |offset|.
- // |url_request_context| is used to read contents in |blob|.
- OperationID Write(const net::URLRequestContext* url_request_context,
- const FileSystemURL& url,
- scoped_ptr<storage::BlobDataHandle> blob,
- int64 offset,
- const WriteCallback& callback);
-
- // Truncates a file at |url| to |length|. If |length| is larger than
- // the original file size, the file will be extended, and the extended
- // part is filled with null bytes.
- OperationID Truncate(const FileSystemURL& url, int64 length,
- const StatusCallback& callback);
-
- // Tries to cancel the operation |id| [we support cancelling write or
- // truncate only]. Reports failure for the current operation, then reports
- // success for the cancel operation itself via the |callback|.
- void Cancel(OperationID id, const StatusCallback& callback);
-
- // Modifies timestamps of a file or directory at |url| with
- // |last_access_time| and |last_modified_time|. The function DOES NOT
- // create a file unlike 'touch' command on Linux.
- //
- // This function is used only by Pepper as of writing.
- OperationID TouchFile(const FileSystemURL& url,
- const base::Time& last_access_time,
- const base::Time& last_modified_time,
- const StatusCallback& callback);
-
- // Opens a file at |url| with |file_flags|, where flags are OR'ed
- // values of base::PlatformFileFlags.
- //
- // |peer_handle| is the process handle of a pepper plugin process, which
- // is necessary for underlying IPC calls with Pepper plugins.
- //
- // This function is used only by Pepper as of writing.
- OperationID OpenFile(const FileSystemURL& url,
- int file_flags,
- const OpenFileCallback& callback);
-
- // Creates a local snapshot file for a given |url| and returns the
- // metadata and platform url of the snapshot file via |callback|.
- // In local filesystem cases the implementation may simply return
- // the metadata of the file itself (as well as GetMetadata does),
- // while in remote filesystem case the backend may want to download the file
- // into a temporary snapshot file and return the metadata of the
- // temporary file. Or if the implementaiton already has the local cache
- // data for |url| it can simply return the url to the cache.
- OperationID CreateSnapshotFile(const FileSystemURL& url,
- const SnapshotFileCallback& callback);
-
- // Copies in a single file from a different filesystem.
- //
- // This returns:
- // - File::FILE_ERROR_NOT_FOUND if |src_file_path|
- // or the parent directory of |dest_url| does not exist.
- // - File::FILE_ERROR_INVALID_OPERATION if |dest_url| exists and
- // is not a file.
- // - File::FILE_ERROR_FAILED if |dest_url| does not exist and
- // its parent path is a file.
- //
- OperationID CopyInForeignFile(const base::FilePath& src_local_disk_path,
- const FileSystemURL& dest_url,
- const StatusCallback& callback);
-
- // Removes a single file.
- //
- // This returns:
- // - File::FILE_ERROR_NOT_FOUND if |url| does not exist.
- // - File::FILE_ERROR_NOT_A_FILE if |url| is not a file.
- //
- OperationID RemoveFile(const FileSystemURL& url,
- const StatusCallback& callback);
-
- // Removes a single empty directory.
- //
- // This returns:
- // - File::FILE_ERROR_NOT_FOUND if |url| does not exist.
- // - File::FILE_ERROR_NOT_A_DIRECTORY if |url| is not a directory.
- // - File::FILE_ERROR_NOT_EMPTY if |url| is not empty.
- //
- OperationID RemoveDirectory(const FileSystemURL& url,
- const StatusCallback& callback);
-
- // Copies a file from |src_url| to |dest_url|.
- // This must be called for files that belong to the same filesystem
- // (i.e. type() and origin() of the |src_url| and |dest_url| must match).
- // For |option| and |progress_callback|, see file_system_operation.h for
- // details.
- //
- // This returns:
- // - File::FILE_ERROR_NOT_FOUND if |src_url|
- // or the parent directory of |dest_url| does not exist.
- // - File::FILE_ERROR_NOT_A_FILE if |src_url| exists but is not a file.
- // - File::FILE_ERROR_INVALID_OPERATION if |dest_url| exists and
- // is not a file.
- // - File::FILE_ERROR_FAILED if |dest_url| does not exist and
- // its parent path is a file.
- //
- OperationID CopyFileLocal(const FileSystemURL& src_url,
- const FileSystemURL& dest_url,
- CopyOrMoveOption option,
- const CopyFileProgressCallback& progress_callback,
- const StatusCallback& callback);
-
- // Moves a local file from |src_url| to |dest_url|.
- // This must be called for files that belong to the same filesystem
- // (i.e. type() and origin() of the |src_url| and |dest_url| must match).
- // For |option|, see file_system_operation.h for details.
- //
- // This returns:
- // - File::FILE_ERROR_NOT_FOUND if |src_url|
- // or the parent directory of |dest_url| does not exist.
- // - File::FILE_ERROR_NOT_A_FILE if |src_url| exists but is not a file.
- // - File::FILE_ERROR_INVALID_OPERATION if |dest_url| exists and
- // is not a file.
- // - File::FILE_ERROR_FAILED if |dest_url| does not exist and
- // its parent path is a file.
- //
- OperationID MoveFileLocal(const FileSystemURL& src_url,
- const FileSystemURL& dest_url,
- CopyOrMoveOption option,
- const StatusCallback& callback);
-
- // This is called only by pepper plugin as of writing to synchronously get
- // the underlying platform path to upload a file in the sandboxed filesystem
- // (e.g. TEMPORARY or PERSISTENT).
- base::File::Error SyncGetPlatformPath(const FileSystemURL& url,
- base::FilePath* platform_path);
-
- private:
- class BeginOperationScoper;
-
- struct OperationHandle {
- OperationID id;
- base::WeakPtr<BeginOperationScoper> scope;
-
- OperationHandle();
- ~OperationHandle();
- };
-
- friend class FileSystemContext;
- explicit FileSystemOperationRunner(FileSystemContext* file_system_context);
-
- void DidFinish(const OperationHandle& handle,
- const StatusCallback& callback,
- base::File::Error rv);
- void DidGetMetadata(const OperationHandle& handle,
- const GetMetadataCallback& callback,
- base::File::Error rv,
- const base::File::Info& file_info);
- void DidReadDirectory(const OperationHandle& handle,
- const ReadDirectoryCallback& callback,
- base::File::Error rv,
- const std::vector<DirectoryEntry>& entries,
- bool has_more);
- void DidWrite(const OperationHandle& handle,
- const WriteCallback& callback,
- base::File::Error rv,
- int64 bytes,
- bool complete);
- void DidOpenFile(
- const OperationHandle& handle,
- const OpenFileCallback& callback,
- base::File file,
- const base::Closure& on_close_callback);
- void DidCreateSnapshot(
- const OperationHandle& handle,
- const SnapshotFileCallback& callback,
- base::File::Error rv,
- const base::File::Info& file_info,
- const base::FilePath& platform_path,
- const scoped_refptr<storage::ShareableFileReference>& file_ref);
-
- void OnCopyProgress(
- const OperationHandle& handle,
- const CopyProgressCallback& callback,
- FileSystemOperation::CopyProgressType type,
- const FileSystemURL& source_url,
- const FileSystemURL& dest_url,
- int64 size);
-
- void PrepareForWrite(OperationID id, const FileSystemURL& url);
- void PrepareForRead(OperationID id, const FileSystemURL& url);
-
- // These must be called at the beginning and end of any async operations.
- OperationHandle BeginOperation(FileSystemOperation* operation,
- base::WeakPtr<BeginOperationScoper> scope);
- void FinishOperation(OperationID id);
-
- // Not owned; file_system_context owns this.
- FileSystemContext* file_system_context_;
-
- // IDMap<FileSystemOperation, IDMapOwnPointer> operations_;
- IDMap<FileSystemOperation, IDMapOwnPointer> operations_;
-
- // We keep track of the file to be modified by each operation so that
- // we can notify observers when we're done.
- typedef std::map<OperationID, FileSystemURLSet> OperationToURLSet;
- OperationToURLSet write_target_urls_;
-
- // Operations that are finished but not yet fire their callbacks.
- std::set<OperationID> finished_operations_;
-
- // Callbacks for stray cancels whose target operation is already finished.
- std::map<OperationID, StatusCallback> stray_cancel_callbacks_;
-
- DISALLOW_COPY_AND_ASSIGN(FileSystemOperationRunner);
-};
-
-} // namespace storage
-
-#endif // WEBKIT_BROWSER_FILEAPI_FILE_SYSTEM_OPERATION_RUNNER_H_
+#include "storage/browser/fileapi/file_system_operation_runner.h"

Powered by Google App Engine
This is Rietveld 408576698