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

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

Issue 9742002: Wired GDataFileSystem::GetFile() method with internal cache. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge 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
diff --git a/chrome/browser/chromeos/gdata/gdata_file_system.h b/chrome/browser/chromeos/gdata/gdata_file_system.h
index af85fe1d6249a12e5098e5781f5b6897257cf880..5b2bdadbb7b9ef6ac898b1e6b525fac21970e1d2 100644
--- a/chrome/browser/chromeos/gdata/gdata_file_system.h
+++ b/chrome/browser/chromeos/gdata/gdata_file_system.h
@@ -110,6 +110,19 @@ class ReadOnlyFindFileDelegate : public FindFileDelegate {
GDataFileBase* file_;
};
+// Helper structure used for extracting key properties from GDataFile object.
+struct GDataFileProperties {
+ GDataFileProperties();
+ ~GDataFileProperties();
+
+ base::PlatformFileInfo file_info;
+ std::string resource_id;
+ std::string file_md5;
+ GURL content_url;
+ GURL edit_url;
+ bool is_hosted_document;
+};
+
// GData file system abstraction layer.
// The interface is defined to make GDataFileSystem mockable.
class GDataFileSystemInterface {
@@ -141,6 +154,12 @@ class GDataFileSystemInterface {
CACHE_TYPE_TMP,
};
+ // Enum defining origin of a cached file.
+ enum CachedFileOrigin {
+ CACHED_FILE_FROM_SERVER = 0,
+ CACHED_FILE_LOCALLY_MODIFIED,
+ };
+
// Authenticates the user by fetching the auth token as
// needed. |callback| will be run with the error code and the auth
// token, on the thread this function is run.
@@ -272,10 +291,10 @@ class GDataFileSystemInterface {
const std::string& md5,
const GetCacheStateCallback& callback) = 0;
- // Finds file object by |file_path| and returns its |file_info|.
+ // Finds file object by |file_path| and returns its key |properties|.
// Returns true if file was found.
virtual bool GetFileInfoFromPath(const FilePath& gdata_file_path,
- base::PlatformFileInfo* file_info) = 0;
+ GDataFileProperties* properties) = 0;
// Returns the tmp sub-directory under gdata cache directory, i.e.
// <user_profile_dir>/GCache/v1/tmp
@@ -330,7 +349,7 @@ class GDataFileSystem : public GDataFileSystemInterface,
const std::string& md5,
const GetCacheStateCallback& callback) OVERRIDE;
virtual bool GetFileInfoFromPath(const FilePath& gdata_file_path,
- base::PlatformFileInfo* file_info) OVERRIDE;
+ GDataFileProperties* properties) OVERRIDE;
virtual FilePath GetGDataCacheTmpDirectory() OVERRIDE;
virtual void GetAvailableSpace(
const GetAvailableSpaceCallback& callback) OVERRIDE;
@@ -373,6 +392,27 @@ class GDataFileSystem : public GDataFileSystemInterface,
FileOperationCallback callback;
};
+ // Defines set of parameters passed to intermediate callbacks during
+ // execution of GetFile() method.
+ struct GetFileFromCacheParams {
+ GetFileFromCacheParams(const FilePath& virtual_file_path,
+ const FilePath& local_tmp_path,
+ const GURL& content_url,
+ const std::string& resource_id,
+ const std::string& md5,
+ scoped_refptr<base::MessageLoopProxy> proxy,
+ const GetFileCallback& callback);
+ ~GetFileFromCacheParams();
+
+ FilePath virtual_file_path;
+ FilePath local_tmp_path;
+ GURL content_url;
+ std::string resource_id;
+ std::string md5;
+ scoped_refptr<base::MessageLoopProxy> proxy;
+ const GetFileCallback callback;
+ };
+
// Callback similar to FileOperationCallback but with a given
// |file_path|.
typedef base::Callback<void(base::PlatformFileError error,
@@ -519,10 +559,16 @@ class GDataFileSystem : public GDataFileSystemInterface,
// Callback for handling file downloading requests.
void OnFileDownloaded(
- const GetFileCallback& callback,
+ const GetFileFromCacheParams& params,
GDataErrorCode status,
const GURL& content_url,
- const FilePath& temp_file);
+ const FilePath& downloaded_file_path);
+
+ // Callback for handling internal StoreToCache() calls after downloading
+ // file content.
+ void OnDownloadStoredToCache(base::PlatformFileError error,
+ const std::string& resource_id,
+ const std::string& md5);
// Callback for handling file upload initialization requests.
void OnUploadLocationReceived(
@@ -642,14 +688,12 @@ class GDataFileSystem : public GDataFileSystemInterface,
FilePath GetCacheFilePath(const std::string& resource_id,
const std::string& md5,
CacheSubdir subdir_id,
- bool is_local);
+ CachedFileOrigin file_orign);
// Stores |source_path| corresponding to |resource_id| and |md5| to cache.
// Initializes cache if it has not been initialized.
// Upon completion, |callback| is invoked on the thread where this method was
// called.
- // TODO(kuan): When URLFetcher can save response to a specified file (as
- // opposed to only temporary file currently), remove |source_path| parameter.
void StoreToCache(const std::string& resource_id,
const std::string& md5,
const FilePath& source_path,
@@ -755,6 +799,15 @@ class GDataFileSystem : public GDataFileSystemInterface,
mode_t mode_bits,
const CacheOperationCallback& callback);
+ // Helper function for internally handling responses from GetFromCache()
+ // calls during processing of GetFile() request.
+ void OnGetFileFromCache(const GetFileFromCacheParams& params,
+ base::PlatformFileError error,
+ const std::string& resource_id,
+ const std::string& md5,
+ const FilePath& gdata_file_path,
+ const FilePath& cache_file_path);
+
// Callback for GetCacheState that gets cache state of file corresponding to
// |resource_id| and |md5|.
void OnGetCacheState(const std::string& resource_id,
@@ -776,7 +829,7 @@ class GDataFileSystem : public GDataFileSystemInterface,
void FindFileByPathOnCallingThread(const FilePath& search_file_path,
const FindFileCallback& callback);
- scoped_ptr<GDataRootDirectory> root_;
+ scoped_ptr<GDataRootDirectory> root_;
base::Lock lock_;

Powered by Google App Engine
This is Rietveld 408576698