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

Unified Diff: chrome/browser/google_apis/gdata_operations.h

Issue 11143014: Add request header on gdata operation for testing ETag match. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: +comment Created 8 years, 2 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/google_apis/gdata_operations.h
diff --git a/chrome/browser/google_apis/gdata_operations.h b/chrome/browser/google_apis/gdata_operations.h
index af3262ee442560926c827b1a180ecb3673e8a3db..46eacacb6cef3bd698d76258a64ef24a25cd0ed6 100644
--- a/chrome/browser/google_apis/gdata_operations.h
+++ b/chrome/browser/google_apis/gdata_operations.h
@@ -97,13 +97,22 @@ typedef base::Callback<void(GDataErrorCode error,
// This class performs the operation for downloading of a given document/file.
class DownloadFileOperation : public UrlFetchOperationBase {
public:
+ // Downloads a file identified by its |document_url|.
+ // If |etag| is set, checks if it matches the file before downloading.
satorux1 2012/10/17 03:14:27 If etag does not match, what happens? Please docum
+ // The downloaded file will be stored at |output_file_path| location.
+ // On partial data is received, invokes |get_content_callbac| if not empty.
+ // Upon completion, invokes |download_action_callback|.
satorux1 2012/10/17 03:14:27 Thank you for improving the comment here!
+ //
+ // Registers the download task to |registry| with OperationProgressStatus
+ // associated with |virtual_path|.
DownloadFileOperation(
OperationRegistry* registry,
const DownloadActionCallback& download_action_callback,
const GetContentCallback& get_content_callback,
const GURL& document_url,
const FilePath& virtual_path,
- const FilePath& output_file_path);
+ const FilePath& output_file_path,
+ const std::string& etag);
virtual ~DownloadFileOperation();
protected:
@@ -111,6 +120,7 @@ class DownloadFileOperation : public UrlFetchOperationBase {
virtual GURL GetURL() const OVERRIDE;
virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE;
virtual void RunCallbackOnPrematureFailure(GDataErrorCode code) OVERRIDE;
+ virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE;
// Overridden from net::URLFetcherDelegate.
virtual void OnURLFetchDownloadProgress(const net::URLFetcher* source,
@@ -124,6 +134,7 @@ class DownloadFileOperation : public UrlFetchOperationBase {
DownloadActionCallback download_action_callback_;
GetContentCallback get_content_callback_;
GURL document_url_;
+ std::string etag_;
DISALLOW_COPY_AND_ASSIGN(DownloadFileOperation);
};
@@ -133,9 +144,15 @@ class DownloadFileOperation : public UrlFetchOperationBase {
// This class performs the operation for deleting a document.
class DeleteDocumentOperation : public EntryActionOperation {
public:
+ // Deletes a file identified by its |document_url|.
+ // If |etag| is set, checks if it matches the file before deletion.
satorux1 2012/10/17 03:14:27 If etag does not match, what happens? Please docum
+ // Upon completion, invokes |callback|.
+ //
+ // Registers the download task to |registry|.
DeleteDocumentOperation(OperationRegistry* registry,
const EntryActionCallback& callback,
- const GURL& document_url);
+ const GURL& document_url,
+ const std::string& etag);
virtual ~DeleteDocumentOperation();
protected:
@@ -147,6 +164,8 @@ class DeleteDocumentOperation : public EntryActionOperation {
virtual std::vector<std::string> GetExtraRequestHeaders() const OVERRIDE;
private:
+ std::string etag_;
+
DISALLOW_COPY_AND_ASSIGN(DeleteDocumentOperation);
};
@@ -327,17 +346,20 @@ 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.
+// - |etag| should be empty.
//
// When updating an existing file (UPLOAD_EXISTING_FILE):
-// - |title| should be empty
+// - |title| should be empty.
// - |upload_location| should be the upload_url() of the existing file.
+// - |etag| should match the existing file. If it's empty, matching is skipped.
satorux1 2012/10/17 03:14:27 If etag does not match, what happens? Please docum
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& virtual_path,
+ const std::string& etag);
~InitiateUploadParams();
UploadMode upload_mode;
@@ -346,6 +368,7 @@ struct InitiateUploadParams {
int64 content_length;
GURL upload_location;
FilePath virtual_path;
+ std::string etag;
};
// Callback type for DocumentServiceInterface::InitiateUpload.
@@ -406,7 +429,8 @@ struct ResumeUploadParams {
const std::string& content_type,
scoped_refptr<net::IOBuffer> buf,
const GURL& upload_location,
- const FilePath& virtual_path);
+ const FilePath& virtual_path,
+ const std::string& etag);
~ResumeUploadParams();
UploadMode upload_mode; // Mode of the upload.
@@ -419,6 +443,8 @@ struct ResumeUploadParams {
// Virtual GData 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;
+ // ETag matches the file to be overwritten. Matching is skipped if it's empty.
+ std::string etag;
};
// Callback type for DocumentServiceInterface::ResumeUpload.

Powered by Google App Engine
This is Rietveld 408576698