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

Unified Diff: chrome/browser/chromeos/gdata/gdata_file_system.h

Issue 9662041: Implement copy and move operations within the same remote file system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 9 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: chrome/browser/chromeos/gdata/gdata_file_system.h
===================================================================
--- chrome/browser/chromeos/gdata/gdata_file_system.h (revision 126063)
+++ chrome/browser/chromeos/gdata/gdata_file_system.h (working copy)
@@ -5,9 +5,10 @@
#ifndef CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILE_SYSTEM_H_
#define CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILE_SYSTEM_H_
+#include <sys/stat.h>
+
#include <map>
#include <string>
-#include <sys/stat.h>
#include <vector>
#include "base/gtest_prod_util.h"
@@ -124,6 +125,22 @@
void FindFileByPath(const FilePath& file_path,
scoped_refptr<FindFileDelegate> delegate);
+ // Copies |src_file_path| to |dest_file_path| on the file system.
satorux1 2012/03/12 17:48:24 Please document that if this allows copy of direct
Ben Chan 2012/03/13 00:29:21 Done.
+ // The file entries represented by |src_file_path| and the parent directory
+ // of |dest_file_path| need to be present in the in-memory representation
satorux1 2012/03/12 17:48:24 Please also document if |dest_file_path| can be a
Ben Chan 2012/03/13 00:29:21 Done.
+ // of the file system.
satorux1 2012/03/12 17:48:24 // // Can be called from any thread. ?
Ben Chan 2012/03/13 00:29:21 Done.
+ void Copy(const FilePath& src_file_path,
+ const FilePath& dest_file_path,
+ const FileOperationCallback& callback);
+
+ // Moves |src_file_path| to |dest_file_path| on the file system.
+ // The file entries represented by |src_file_path| and the parent directory
+ // of |dest_file_path| need to be present in the in-memory representation
+ // of the file system.
satorux1 2012/03/12 17:48:24 ditto.
Ben Chan 2012/03/13 00:29:21 Done.
+ void Move(const FilePath& src_file_path,
+ const FilePath& dest_file_path,
+ const FileOperationCallback& callback);
+
// Removes |file_path| from the file system. If |is_recursive| is set and
// |file_path| represents a directory, we will also delete all of its
// contained children elements. The file entry represented by |file_path|
@@ -176,6 +193,7 @@
friend class GDataFileSystemTestBase;
FRIEND_TEST_ALL_PREFIXES(GDataFileSystemTest,
FindFirstMissingParentDirectory);
+ FRIEND_TEST_ALL_PREFIXES(GDataFileSystemTest, GetCopyMoveFileParams);
// Defines possible search results of FindFirstMissingParentDirectory().
enum FindMissingDirectoryResult {
@@ -204,13 +222,34 @@
FileOperationCallback callback;
};
+ // Defines set of parameters of a file/directory that is needed for
+ // copy/move related operations.
+ struct CopyMoveFileParams {
+ CopyMoveFileParams();
+ ~CopyMoveFileParams();
+
+ GURL self_url;
+ GURL content_url;
+ bool is_directory;
+ bool is_root_directory;
+ bool is_hosted_document;
+ std::string resource_id;
+ std::string document_extension;
+ };
+
enum CacheType { // This indexes into |cache_paths_| vector.
CACHE_TYPE_BLOBS = 0,
CACHE_TYPE_META,
};
- explicit GDataFileSystem(Profile* profile,
- DocumentsServiceInterface* documents_service);
+ // Callback similar to FileOperationCallback but with a given
+ // |file_path|.
+ typedef base::Callback<void(base::PlatformFileError error,
+ const FilePath& file_path)>
+ FilePathUpdateCallback;
+
+ GDataFileSystem(Profile* profile,
+ DocumentsServiceInterface* documents_service);
virtual ~GDataFileSystem();
// Initiates upload operation of file defined with |file_name|,
@@ -247,6 +286,29 @@
base::Value* data,
base::PlatformFileError *error);
+ // Gets the parameters of a file or directory at |file_path| for copy/move
+ // related operations. Returns false if |file_path| is not found.
+ bool GetCopyMoveFileParams(const FilePath& file_path,
+ CopyMoveFileParams* params);
+
+ // Renames a file or directory at |file_path| to |new_name|.
+ void Rename(const FilePath& file_path,
+ const FilePath::StringType& new_name,
+ const FilePathUpdateCallback& callback);
+
+ // Adds a file or directory at |file_path| to the directory at |dir_path|.
+ void AddFileToDirectory(const FilePath& dir_path,
+ const FileOperationCallback& callback,
+ base::PlatformFileError error,
+ const FilePath& file_path);
+
+ // Removes a file or directory at |file_path| from the directory at
+ // |dir_path| and moves it to the root directory.
+ void RemoveFileFromDirectory(const FilePath& dir_path,
+ const FilePathUpdateCallback& callback,
+ base::PlatformFileError error,
+ const FilePath& file_path);
+
// Callback for handling feed content fetching while searching for file info.
// This callback is invoked after async feed fetch operation that was
// invoked by StartDirectoryRefresh() completes. This callback will update
@@ -257,6 +319,41 @@
GDataErrorCode status,
scoped_ptr<base::Value> data);
+ // A pass-through callback used for bridging from
+ // FilePathUpdateCallback to FileOperationCallback.
+ void OnFilePathUpdated(const FileOperationCallback& cllback,
+ base::PlatformFileError error,
+ const FilePath& file_path);
+
+ // Callback for handling resource rename attempt.
+ void OnRenameResourceCompleted(const FilePath& file_path,
+ const FilePath::StringType& new_name,
+ const FilePathUpdateCallback& callback,
+ GDataErrorCode status,
+ const GURL& document_url);
+
+ // Callback for handling document copy attempt.
+ void OnCopyDocumentCompleted(const FilePathUpdateCallback& callback,
+ GDataErrorCode status,
+ scoped_ptr<base::Value> data);
+
+ // Callback for handling an attempt to add a file or directory to another
+ // directory.
+ void OnAddFileToDirectoryCompleted(const FileOperationCallback& callback,
+ const FilePath& file_path,
+ const FilePath& dir_path,
+ GDataErrorCode status,
+ const GURL& document_url);
+
+ // Callback for handling an attempt to remove a file or directory from
+ // another directory.
+ void OnRemoveFileFromDirectoryCompleted(
+ const FilePathUpdateCallback& callback,
+ const FilePath& file_path,
+ const FilePath& dir_path,
+ GDataErrorCode status,
+ const GURL& document_url);
+
// Callback for handling document remove attempt.
void OnRemovedDocument(
const FileOperationCallback& callback,
@@ -292,6 +389,25 @@
int64 start_range_received,
int64 end_range_received);
+ // Renames a file or directory at |file_path| on in-memory snapshot
+ // of the file system. Returns PLATFORM_FILE_OK if successful.
+ base::PlatformFileError RenameFileOnFilesystem(
+ const FilePath& file_path, const FilePath::StringType& new_name,
+ FilePath* updated_file_path);
+
+ // Adds a file or directory at |file_path| to another directory at
+ // |dir_path| on in-memory snapshot of the file system.
+ // Returns PLATFORM_FILE_OK if successful.
+ base::PlatformFileError AddFileToDirectoryOnFilesystem(
+ const FilePath& file_path, const FilePath& dir_path);
+
+ // Removes a file or directory at |file_path| from another directory at
+ // |dir_path| on in-memory snapshot of the file system.
+ // Returns PLATFORM_FILE_OK if successful.
+ base::PlatformFileError RemoveFileFromDirectoryOnFilesystem(
+ const FilePath& file_path, const FilePath& dir_path,
+ FilePath* updated_file_path);
+
// Removes file under |file_path| from in-memory snapshot of the file system.
// Return PLATFORM_FILE_OK if successful.
base::PlatformFileError RemoveFileFromFileSystem(const FilePath& file_path);

Powered by Google App Engine
This is Rietveld 408576698