Index: chrome/browser/google_apis/gdata_wapi_operations.h |
diff --git a/chrome/browser/google_apis/gdata_wapi_operations.h b/chrome/browser/google_apis/gdata_wapi_operations.h |
index 8fdf2fcd006865f30b86c4dd9a2e0efaa782b142..3d233295975baaa5acfd76e0ade555a88282f46c 100644 |
--- a/chrome/browser/google_apis/gdata_wapi_operations.h |
+++ b/chrome/browser/google_apis/gdata_wapi_operations.h |
@@ -23,16 +23,28 @@ class DocumentEntry; |
// This class performs the operation for fetching a document list. |
class GetDocumentsOperation : public GetDataOperation { |
public: |
- // |start_changestamp| specifies the starting point of change list or 0 if |
- // all changes are necessary. |
- // If |shared_with_me| is true, it searches for the files shared to the user, |
- // otherwise searches for the files owned by the user. |
- // |url| specifies URL for documents feed fetching operation. If empty URL is |
- // passed, the default URL is used and returns the first page of the result. |
- // When non-first page result is requested, |url| should be specified. |
+ // override_url: |
+ // If empty, a hard-coded base URL of the WAPI server is used to fetch |
+ // the first page of the feed. This parameter is used for fetching 2nd |
+ // page and onward. |
+ // |
+ // start_changestamp: |
+ // This parameter specifies the starting point of a delta feed or 0 if a |
+ // full feed is necessary. |
+ // |
+ // search_string: |
+ // If non-empty, fetches a list of documents that match the search |
+ // string. |
+ // |
+ // shared_with_me: |
+ // If true, fetches a list of documents shared to the user, otherwise |
+ // fetches a list of documents owned by the user. |
+ // |
+ // directory_resource_id: |
+ // If non-empty, fetches a list of documents in a particular directory. |
GetDocumentsOperation(OperationRegistry* registry, |
const GDataWapiUrlGenerator& url_generator, |
- const GURL& url, |
+ const GURL& override_url, |
int start_changestamp, |
const std::string& search_string, |
bool shared_with_me, |
@@ -41,16 +53,16 @@ class GetDocumentsOperation : public GetDataOperation { |
virtual ~GetDocumentsOperation(); |
protected: |
- // Overridden from GetDataOperation. |
+ // UrlFetchOperationBase overrides. |
virtual GURL GetURL() const OVERRIDE; |
private: |
- GDataWapiUrlGenerator url_generator_; |
- GURL override_url_; |
- int start_changestamp_; |
- std::string search_string_; |
- bool shared_with_me_; |
- std::string directory_resource_id_; |
+ const GDataWapiUrlGenerator url_generator_; |
+ const GURL override_url_; |
+ const int start_changestamp_; |
+ const std::string search_string_; |
+ const bool shared_with_me_; |
+ const std::string directory_resource_id_; |
DISALLOW_COPY_AND_ASSIGN(GetDocumentsOperation); |
}; |
@@ -67,13 +79,13 @@ class GetDocumentEntryOperation : public GetDataOperation { |
virtual ~GetDocumentEntryOperation(); |
protected: |
- // Overridden from GetGdataOperation. |
+ // UrlFetchOperationBase overrides. |
virtual GURL GetURL() const OVERRIDE; |
private: |
- GDataWapiUrlGenerator url_generator_; |
+ const GDataWapiUrlGenerator url_generator_; |
// Resource id of the requested entry. |
- std::string resource_id_; |
+ const std::string resource_id_; |
DISALLOW_COPY_AND_ASSIGN(GetDocumentEntryOperation); |
}; |
@@ -89,11 +101,11 @@ class GetAccountMetadataOperation : public GetDataOperation { |
virtual ~GetAccountMetadataOperation(); |
protected: |
- // Overridden from GetDataOperation. |
+ // UrlFetchOperationBase overrides. |
virtual GURL GetURL() const OVERRIDE; |
private: |
- GDataWapiUrlGenerator url_generator_; |
+ const GDataWapiUrlGenerator url_generator_; |
DISALLOW_COPY_AND_ASSIGN(GetAccountMetadataOperation); |
}; |
@@ -107,22 +119,39 @@ typedef base::Callback<void(GDataErrorCode error, |
// This class performs the operation for downloading of a given document/file. |
class DownloadFileOperation : public UrlFetchOperationBase { |
public: |
+ // download_action_callback: |
+ // This callback is called when the download is complete. |
+ // |
+ // get_content_callback: |
+ // This callback is called when some part of the content is |
+ // read. Used to read the download content progressively. |
+ // |
+ // content_url: |
+ // Specifies the target file to download. |
+ // |
+ // drive_file_path: |
+ // Specifies the drive path of the target file. Shown in UI. |
+ // TODO(satorux): Remove the drive file path hack. crbug.com/163296 |
+ // |
+ // output_file_path: |
+ // Specifies the file path to save the downloaded file. |
+ // |
DownloadFileOperation( |
OperationRegistry* registry, |
const DownloadActionCallback& download_action_callback, |
const GetContentCallback& get_content_callback, |
- const GURL& document_url, |
- const FilePath& virtual_path, |
+ const GURL& content_url, |
+ const FilePath& drive_file_path, |
const FilePath& output_file_path); |
virtual ~DownloadFileOperation(); |
protected: |
- // Overridden from UrlFetchOperationBase. |
+ // UrlFetchOperationBase overrides. |
virtual GURL GetURL() const OVERRIDE; |
virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE; |
virtual void RunCallbackOnPrematureFailure(GDataErrorCode code) OVERRIDE; |
- // Overridden from net::URLFetcherDelegate. |
+ // net::URLFetcherDelegate overrides. |
virtual void OnURLFetchDownloadProgress(const net::URLFetcher* source, |
int64 current, int64 total) OVERRIDE; |
virtual bool ShouldSendDownloadData() OVERRIDE; |
@@ -131,9 +160,9 @@ class DownloadFileOperation : public UrlFetchOperationBase { |
scoped_ptr<std::string> download_data) OVERRIDE; |
private: |
- DownloadActionCallback download_action_callback_; |
- GetContentCallback get_content_callback_; |
- GURL document_url_; |
+ const DownloadActionCallback download_action_callback_; |
+ const GetContentCallback get_content_callback_; |
+ const GURL content_url_; |
DISALLOW_COPY_AND_ASSIGN(DownloadFileOperation); |
}; |
@@ -145,19 +174,17 @@ class DeleteDocumentOperation : public EntryActionOperation { |
public: |
DeleteDocumentOperation(OperationRegistry* registry, |
const EntryActionCallback& callback, |
- const GURL& document_url); |
+ const GURL& edit_url); |
virtual ~DeleteDocumentOperation(); |
protected: |
- // Overridden from UrlFetchOperationBase. |
+ // UrlFetchOperationBase overrides. |
virtual GURL GetURL() const OVERRIDE; |
- |
- // Overridden from EntryActionOperation. |
virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; |
virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE; |
private: |
- GURL document_url_; |
+ const GURL edit_url_; |
DISALLOW_COPY_AND_ASSIGN(DeleteDocumentOperation); |
}; |
@@ -167,7 +194,9 @@ class DeleteDocumentOperation : public EntryActionOperation { |
// This class performs the operation for creating a directory. |
class CreateDirectoryOperation : public GetDataOperation { |
public: |
- // Empty |parent_content_url| will create the directory in the root folder. |
+ // A new directory will be created under a directory specified by |
+ // |parent_content_url|. If this parameter is empty, a new directory will |
+ // be created in the root directory. |
CreateDirectoryOperation(OperationRegistry* registry, |
const GDataWapiUrlGenerator& url_generator, |
const GetDataCallback& callback, |
@@ -176,25 +205,25 @@ class CreateDirectoryOperation : public GetDataOperation { |
virtual ~CreateDirectoryOperation(); |
protected: |
- // Overridden from UrlFetchOperationBase. |
+ // UrlFetchOperationBase overrides. |
virtual GURL GetURL() const OVERRIDE; |
virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; |
- |
- // Overridden from UrlFetchOperationBase. |
virtual bool GetContentData(std::string* upload_content_type, |
std::string* upload_content) OVERRIDE; |
private: |
- GDataWapiUrlGenerator url_generator_; |
- GURL parent_content_url_; |
- FilePath::StringType directory_name_; |
+ const GDataWapiUrlGenerator url_generator_; |
+ const GURL parent_content_url_; |
+ const FilePath::StringType directory_name_; |
DISALLOW_COPY_AND_ASSIGN(CreateDirectoryOperation); |
}; |
//============================ CopyDocumentOperation =========================== |
-// This class performs the operation for making a copy of a document. |
+// This class performs the operation for making a copy of a hosted document. |
+// Note that this function cannot be used to copy regular files, as it's not |
+// supported by WAPI. |
class CopyDocumentOperation : public GetDataOperation { |
public: |
CopyDocumentOperation(OperationRegistry* registry, |
@@ -205,18 +234,16 @@ class CopyDocumentOperation : public GetDataOperation { |
virtual ~CopyDocumentOperation(); |
protected: |
- // Overridden from UrlFetchOperationBase. |
+ // UrlFetchOperationBase overrides. |
virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; |
- |
- // Overridden from UrlFetchOperationBase. |
virtual GURL GetURL() const OVERRIDE; |
virtual bool GetContentData(std::string* upload_content_type, |
std::string* upload_content) OVERRIDE; |
private: |
- GDataWapiUrlGenerator url_generator_; |
- std::string resource_id_; |
- FilePath::StringType new_name_; |
+ const GDataWapiUrlGenerator url_generator_; |
+ const std::string resource_id_; |
+ const FilePath::StringType new_name_; |
DISALLOW_COPY_AND_ASSIGN(CopyDocumentOperation); |
}; |
@@ -228,23 +255,21 @@ class RenameResourceOperation : public EntryActionOperation { |
public: |
RenameResourceOperation(OperationRegistry* registry, |
const EntryActionCallback& callback, |
- const GURL& document_url, |
+ const GURL& edit_url, |
const FilePath::StringType& new_name); |
virtual ~RenameResourceOperation(); |
protected: |
- // Overridden from EntryActionOperation. |
+ // UrlFetchOperationBase overrides. |
virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; |
virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE; |
- |
- // Overridden from UrlFetchOperationBase. |
virtual GURL GetURL() const OVERRIDE; |
virtual bool GetContentData(std::string* upload_content_type, |
std::string* upload_content) OVERRIDE; |
private: |
- GURL document_url_; |
- FilePath::StringType new_name_; |
+ const GURL edit_url_; |
+ const FilePath::StringType new_name_; |
DISALLOW_COPY_AND_ASSIGN(RenameResourceOperation); |
}; |
@@ -252,25 +277,21 @@ class RenameResourceOperation : public EntryActionOperation { |
//=========================== AuthorizeAppOperation ========================== |
// This class performs the operation for authorizing an application specified |
-// by |app_id| to access a document specified by |document_url| for . |
+// by |app_id| to access a document specified by |edit_url| for . |
class AuthorizeAppOperation : public GetDataOperation { |
public: |
AuthorizeAppOperation(OperationRegistry* registry, |
const GetDataCallback& callback, |
- const GURL& document_url, |
+ const GURL& edit_url, |
const std::string& app_id); |
virtual ~AuthorizeAppOperation(); |
protected: |
- // Overridden from GetDataOperation. |
+ // UrlFetchOperationBase overrides. |
virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; |
- |
- // Overridden from UrlFetchOperationBase. |
virtual bool GetContentData(std::string* upload_content_type, |
std::string* upload_content) OVERRIDE; |
virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE; |
- |
- // Overridden from GetDataOperation. |
virtual GURL GetURL() const OVERRIDE; |
virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE; |
@@ -280,8 +301,8 @@ class AuthorizeAppOperation : public GetDataOperation { |
const std::string& data) OVERRIDE; |
private: |
- std::string app_id_; |
- GURL document_url_; |
+ const std::string app_id_; |
+ const GURL edit_url_; |
DISALLOW_COPY_AND_ASSIGN(AuthorizeAppOperation); |
}; |
@@ -296,20 +317,20 @@ class AddResourceToDirectoryOperation : public EntryActionOperation { |
const GDataWapiUrlGenerator& url_generator, |
const EntryActionCallback& callback, |
const GURL& parent_content_url, |
- const GURL& document_url); |
+ const GURL& edit_url); |
virtual ~AddResourceToDirectoryOperation(); |
protected: |
- // Overridden from UrlFetchOperationBase. |
+ // UrlFetchOperationBase overrides. |
virtual GURL GetURL() const OVERRIDE; |
virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; |
virtual bool GetContentData(std::string* upload_content_type, |
std::string* upload_content) OVERRIDE; |
private: |
- GDataWapiUrlGenerator url_generator_; |
- GURL parent_content_url_; |
- GURL document_url_; |
+ const GDataWapiUrlGenerator url_generator_; |
+ const GURL parent_content_url_; |
+ const GURL edit_url_; |
DISALLOW_COPY_AND_ASSIGN(AddResourceToDirectoryOperation); |
}; |
@@ -327,14 +348,14 @@ class RemoveResourceFromDirectoryOperation : public EntryActionOperation { |
virtual ~RemoveResourceFromDirectoryOperation(); |
protected: |
- // Overridden from UrlFetchOperationBase. |
+ // UrlFetchOperationBase overrides. |
virtual GURL GetURL() const OVERRIDE; |
virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; |
virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE; |
private: |
- std::string resource_id_; |
- GURL parent_content_url_; |
+ const std::string resource_id_; |
+ const GURL parent_content_url_; |
DISALLOW_COPY_AND_ASSIGN(RemoveResourceFromDirectoryOperation); |
}; |
@@ -347,25 +368,27 @@ class RemoveResourceFromDirectoryOperation : public EntryActionOperation { |
// When uploading a new file (UPLOAD_NEW_FILE): |
// - |title| should be set. |
// - |upload_location| should be the upload_url() of the parent directory. |
+// (resumable-create-media URL) |
// |
// When updating an existing file (UPLOAD_EXISTING_FILE): |
// - |title| should be empty |
// - |upload_location| should be the upload_url() of the existing file. |
+// (resumable-edit-media URL) |
struct InitiateUploadParams { |
InitiateUploadParams(UploadMode upload_mode, |
const std::string& title, |
const std::string& content_type, |
int64 content_length, |
const GURL& upload_location, |
- const FilePath& virtual_path); |
+ const FilePath& drive_file_path); |
~InitiateUploadParams(); |
- UploadMode upload_mode; |
- std::string title; |
- std::string content_type; |
- int64 content_length; |
- GURL upload_location; |
- FilePath virtual_path; |
+ const UploadMode upload_mode; |
+ const std::string title; |
+ const std::string content_type; |
+ const int64 content_length; |
+ const GURL upload_location; |
+ const FilePath drive_file_path; |
}; |
// Callback type for DocumentServiceInterface::InitiateUpload. |
@@ -373,30 +396,39 @@ typedef base::Callback<void(GDataErrorCode error, |
const GURL& upload_url)> InitiateUploadCallback; |
// This class performs the operation for initiating the upload of a file. |
+// |callback| will be called with the obtained upload URL. The URL will be |
+// used with ResumeUploadOperation to upload the content to the server. |
+// |
+// Here's the flow of uploading: |
+// 1) Get the upload URL with InitiateUploadOperation. |
+// 2) Upload the first 512KB (see kUploadChunkSize in drive_uploader.cc) |
+// of the target file to the upload URL |
+// 3) If there is more data to upload, go to 2). |
+// |
class InitiateUploadOperation : public UrlFetchOperationBase { |
public: |
+ // |callback| will be called with the upload URL, where upload data is |
+ // uploaded to with ResumeUploadOperation. |
InitiateUploadOperation(OperationRegistry* registry, |
const InitiateUploadCallback& callback, |
const InitiateUploadParams& params); |
virtual ~InitiateUploadOperation(); |
protected: |
- // Overridden from UrlFetchOperationBase. |
+ // UrlFetchOperationBase overrides. |
virtual GURL GetURL() const OVERRIDE; |
virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE; |
virtual void NotifySuccessToOperationRegistry() OVERRIDE; |
virtual void RunCallbackOnPrematureFailure(GDataErrorCode code) OVERRIDE; |
- |
- // Overridden from UrlFetchOperationBase. |
virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; |
virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE; |
virtual bool GetContentData(std::string* upload_content_type, |
std::string* upload_content) OVERRIDE; |
private: |
- InitiateUploadCallback callback_; |
- InitiateUploadParams params_; |
- GURL initiate_upload_url_; |
+ const InitiateUploadCallback callback_; |
+ const InitiateUploadParams params_; |
+ const GURL initiate_upload_url_; |
DISALLOW_COPY_AND_ASSIGN(InitiateUploadOperation); |
}; |
@@ -404,6 +436,7 @@ class InitiateUploadOperation : public UrlFetchOperationBase { |
//============================ ResumeUploadOperation =========================== |
// Struct for response to ResumeUpload. |
+// TODO(satorux): Should return the next upload URL. crbug.com/163555 |
struct ResumeUploadResponse { |
ResumeUploadResponse(); |
ResumeUploadResponse(GDataErrorCode code, |
@@ -413,8 +446,8 @@ struct ResumeUploadResponse { |
GDataErrorCode code; |
int64 start_range_received; |
- int64 end_range_received; |
- FilePath virtual_path; |
+ int64 end_range_received; // inclusive. See below. |
+ FilePath drive_file_path; |
}; |
// Struct for passing params needed for DriveServiceInterface::ResumeUpload() |
@@ -427,19 +460,25 @@ struct ResumeUploadParams { |
const std::string& content_type, |
scoped_refptr<net::IOBuffer> buf, |
const GURL& upload_location, |
- const FilePath& virtual_path); |
+ const FilePath& drive_file_path); |
~ResumeUploadParams(); |
- UploadMode upload_mode; // Mode of the upload. |
- int64 start_range; // Start of range of contents currently stored in |buf|. |
- int64 end_range; // End of range of contents currently stored in |buf|. |
- int64 content_length; // File content-Length. |
- std::string content_type; // Content-Type of file. |
- scoped_refptr<net::IOBuffer> buf; // Holds current content to be uploaded. |
- GURL upload_location; // Url of where to upload the file to. |
- // Virtual GData path of the file seen in the UI. Not necessary for |
+ const UploadMode upload_mode; // Mode of the upload. |
+ // Start of range of contents currently stored in |buf|. |
+ const int64 start_range; |
+ // End of range of contents currently stored in |buf|. This is inclusive. |
+ // For instance, if you are to upload the first 500 bytes of date, |
+ // |start_range| is 0 and |end_range| is 499. |
+ const int64 end_range; |
+ const int64 content_length; // File content-Length. |
+ const std::string content_type; // Content-Type of file. |
+ // Holds current content to be uploaded. |
+ const scoped_refptr<net::IOBuffer> buf; |
+ const GURL upload_location; // Url of where to upload the file to. |
+ // Drive file path of the file seen in the UI. Not necessary for |
// resuming an upload, but used for adding an entry to OperationRegistry. |
- FilePath virtual_path; |
+ // TODO(satorux): Remove the drive file path hack. crbug.com/163296 |
+ const FilePath drive_file_path; |
}; |
// Callback type for DocumentServiceInterface::ResumeUpload. |
@@ -448,34 +487,42 @@ typedef base::Callback<void( |
scoped_ptr<google_apis::DocumentEntry> new_entry)> ResumeUploadCallback; |
// This class performs the operation for resuming the upload of a file. |
+// More specifically, this operation uploads a chunk of data carried in |buf| |
+// of ResumeUploadResponse. |
class ResumeUploadOperation : public UrlFetchOperationBase { |
public: |
+ // |callback| will be called on completion of the operation. |
+ // |
+ // If there is more data to upload, |code| in ResumeUploadParams is set to |
+ // HTTP_RESUME_INCOMPLETE, and |new_entry| parameter is NULL. |
+ // |
+ // If upload is complete, |code| is set to HTTP_CREATED for a new file, or |
+ // HTTP_SUCCES for an existing file. |new_entry| contains the document |
+ // entry of the newly uploaded file. |
ResumeUploadOperation(OperationRegistry* registry, |
const ResumeUploadCallback& callback, |
const ResumeUploadParams& params); |
virtual ~ResumeUploadOperation(); |
protected: |
- // Overridden from UrlFetchOperationBase. |
+ // UrlFetchOperationBase overrides. |
virtual GURL GetURL() const OVERRIDE; |
virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE; |
virtual void NotifyStartToOperationRegistry() OVERRIDE; |
virtual void NotifySuccessToOperationRegistry() OVERRIDE; |
virtual void RunCallbackOnPrematureFailure(GDataErrorCode code) OVERRIDE; |
- |
- // Overridden from UrlFetchOperationBase. |
virtual net::URLFetcher::RequestType GetRequestType() const OVERRIDE; |
virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE; |
virtual bool GetContentData(std::string* upload_content_type, |
std::string* upload_content) OVERRIDE; |
- // Overridden from content::UrlFetcherDelegate |
+ // content::UrlFetcherDelegate overrides. |
virtual void OnURLFetchUploadProgress(const net::URLFetcher* source, |
int64 current, int64 total) OVERRIDE; |
private: |
- ResumeUploadCallback callback_; |
- ResumeUploadParams params_; |
+ const ResumeUploadCallback callback_; |
+ const ResumeUploadParams params_; |
bool last_chunk_completed_; |
DISALLOW_COPY_AND_ASSIGN(ResumeUploadOperation); |