diff options
author | hashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-23 09:36:33 +0000 |
---|---|---|
committer | hashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-23 09:36:33 +0000 |
commit | 1408279d0dfbfc9fb2f0735ab341a0771910df42 (patch) | |
tree | 79335a8d0bf7ff2f37dcf56b1fbef4dc93398e6f | |
parent | eaa4f14e5187ba2f1be85a0cdd4e044a8abc5c3c (diff) | |
download | chromium_src-1408279d0dfbfc9fb2f0735ab341a0771910df42.zip chromium_src-1408279d0dfbfc9fb2f0735ab341a0771910df42.tar.gz chromium_src-1408279d0dfbfc9fb2f0735ab341a0771910df42.tar.bz2 |
drive: Wire metadata parameters to DriveServiceInterface and DriveUploader
Drive API upload requests support updating entries' metadata. (parent, title, modified, last_viewed_by_me)
Add these arguments to DriveServiceInterface::InitiateUploadExistingFile() and DriveUploader::UploadExistingFile().
BUG=260539
TEST=unit_tests
Review URL: https://codereview.chromium.org/144913002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@246549 0039d316-1c4b-4281-b951-d872f2087c98
21 files changed, 124 insertions, 50 deletions
diff --git a/chrome/browser/chromeos/drive/job_scheduler.cc b/chrome/browser/chromeos/drive/job_scheduler.cc index 723cc91..be5a5df 100644 --- a/chrome/browser/chromeos/drive/job_scheduler.cc +++ b/chrome/browser/chromeos/drive/job_scheduler.cc @@ -103,10 +103,12 @@ struct UploadExistingFileParams { google_apis::CancelCallback RunUploadExistingFile( DriveUploaderInterface* uploader, const UploadExistingFileParams& params) { + drive::DriveUploader::UploadExistingFileOptions options; + options.etag = params.etag; return uploader->UploadExistingFile(params.resource_id, params.local_file_path, params.content_type, - params.etag, + options, params.callback, params.progress_callback); } diff --git a/chrome/browser/drive/drive_api_service.cc b/chrome/browser/drive/drive_api_service.cc index 0508170..e41b4cf 100644 --- a/chrome/browser/drive/drive_api_service.cc +++ b/chrome/browser/drive/drive_api_service.cc @@ -721,20 +721,24 @@ CancelCallback DriveAPIService::InitiateUploadExistingFile( const std::string& content_type, int64 content_length, const std::string& resource_id, - const std::string& etag, + const InitiateUploadExistingFileOptions& options, const InitiateUploadCallback& callback) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); DCHECK(!callback.is_null()); - return sender_->StartRequestWithRetry( - new InitiateUploadExistingFileRequest( - sender_.get(), - url_generator_, - content_type, - content_length, - resource_id, - etag, - callback)); + InitiateUploadExistingFileRequest* request = + new InitiateUploadExistingFileRequest(sender_.get(), + url_generator_, + content_type, + content_length, + resource_id, + options.etag, + callback); + request->set_parent_resource_id(options.parent_resource_id); + request->set_title(options.title); + request->set_modified_date(options.modified_date); + request->set_last_viewed_by_me_date(options.last_viewed_by_me_date); + return sender_->StartRequestWithRetry(request); } CancelCallback DriveAPIService::ResumeUpload( diff --git a/chrome/browser/drive/drive_api_service.h b/chrome/browser/drive/drive_api_service.h index 580341e..b720bf6 100644 --- a/chrome/browser/drive/drive_api_service.h +++ b/chrome/browser/drive/drive_api_service.h @@ -158,7 +158,7 @@ class DriveAPIService : public DriveServiceInterface, const std::string& content_type, int64 content_length, const std::string& resource_id, - const std::string& etag, + const InitiateUploadExistingFileOptions& options, const google_apis::InitiateUploadCallback& callback) OVERRIDE; virtual google_apis::CancelCallback ResumeUpload( const GURL& upload_url, diff --git a/chrome/browser/drive/drive_service_interface.cc b/chrome/browser/drive/drive_service_interface.cc new file mode 100644 index 0000000..5770ec0 --- /dev/null +++ b/chrome/browser/drive/drive_service_interface.cc @@ -0,0 +1,17 @@ +// 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. + +#include "chrome/browser/drive/drive_service_interface.h" + +namespace drive { + +DriveServiceInterface::InitiateUploadExistingFileOptions:: + InitiateUploadExistingFileOptions() { +} + +DriveServiceInterface::InitiateUploadExistingFileOptions:: + ~InitiateUploadExistingFileOptions() { +} + +} // namespace drive diff --git a/chrome/browser/drive/drive_service_interface.h b/chrome/browser/drive/drive_service_interface.h index e08602b..92fc1d6 100644 --- a/chrome/browser/drive/drive_service_interface.h +++ b/chrome/browser/drive/drive_service_interface.h @@ -7,6 +7,7 @@ #include <string> +#include "base/time/time.h" #include "google_apis/drive/auth_service_interface.h" #include "google_apis/drive/base_requests.h" #include "google_apis/drive/drive_common_callbacks.h" @@ -41,6 +42,33 @@ class DriveServiceObserver { // URLFetcher that runs on UI thread. class DriveServiceInterface { public: + // Optional parameters for InitiateUploadExistingFile(). + struct InitiateUploadExistingFileOptions { + InitiateUploadExistingFileOptions(); + ~InitiateUploadExistingFileOptions(); + + // Expected ETag of the file. UPLOAD_ERROR_CONFLICT error is generated when + // matching fails. + // Pass the empty string to disable this behavior. + std::string etag; + + // New parent of the file. + // Pass the empty string to keep the property unchanged. + std::string parent_resource_id; + + // New title of the file. + // Pass the empty string to keep the property unchanged. + std::string title; + + // New modified_date of the file. + // Pass the null Time to keep the property unchanged. + base::Time modified_date; + + // New last_viewed_by_me_date of the file. + // Pass the null Time to keep the property unchanged. + base::Time last_viewed_by_me_date; + }; + virtual ~DriveServiceInterface() {} // Common service: @@ -318,7 +346,7 @@ class DriveServiceInterface { const std::string& content_type, int64 content_length, const std::string& resource_id, - const std::string& etag, + const InitiateUploadExistingFileOptions& options, const google_apis::InitiateUploadCallback& callback) = 0; // Resumes uploading of a document/file on the calling thread. diff --git a/chrome/browser/drive/drive_uploader.cc b/chrome/browser/drive/drive_uploader.cc index 7398297..7a1845a 100644 --- a/chrome/browser/drive/drive_uploader.cc +++ b/chrome/browser/drive/drive_uploader.cc @@ -162,7 +162,7 @@ CancelCallback DriveUploader::UploadExistingFile( const std::string& resource_id, const base::FilePath& local_file_path, const std::string& content_type, - const std::string& etag, + const UploadExistingFileOptions& options, const UploadCompletionCallback& callback, const ProgressCallback& progress_callback) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); @@ -179,7 +179,7 @@ CancelCallback DriveUploader::UploadExistingFile( base::Bind(&DriveUploader::StartInitiateUploadExistingFile, weak_ptr_factory_.GetWeakPtr(), resource_id, - etag)); + options)); } CancelCallback DriveUploader::ResumeUploadFile( @@ -262,7 +262,7 @@ void DriveUploader::StartInitiateUploadNewFile( void DriveUploader::StartInitiateUploadExistingFile( const std::string& resource_id, - const std::string& etag, + const UploadExistingFileOptions& options, scoped_ptr<UploadFileInfo> upload_file_info) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); @@ -271,7 +271,7 @@ void DriveUploader::StartInitiateUploadExistingFile( info_ptr->content_type, info_ptr->content_length, resource_id, - etag, + options, base::Bind(&DriveUploader::OnUploadLocationReceived, weak_ptr_factory_.GetWeakPtr(), base::Passed(&upload_file_info))); diff --git a/chrome/browser/drive/drive_uploader.h b/chrome/browser/drive/drive_uploader.h index db0bafe..47d1643 100644 --- a/chrome/browser/drive/drive_uploader.h +++ b/chrome/browser/drive/drive_uploader.h @@ -41,6 +41,9 @@ typedef base::Callback<void( class DriveUploaderInterface { public: + typedef DriveServiceInterface::InitiateUploadExistingFileOptions + UploadExistingFileOptions; + virtual ~DriveUploaderInterface() {} // Uploads a new file to a directory specified by |upload_location|. @@ -88,7 +91,7 @@ class DriveUploaderInterface { const std::string& resource_id, const base::FilePath& local_file_path, const std::string& content_type, - const std::string& etag, + const UploadExistingFileOptions& options, const UploadCompletionCallback& callback, const google_apis::ProgressCallback& progress_callback) = 0; @@ -124,7 +127,7 @@ class DriveUploader : public DriveUploaderInterface { const std::string& resource_id, const base::FilePath& local_file_path, const std::string& content_type, - const std::string& etag, + const UploadExistingFileOptions& options, const UploadCompletionCallback& callback, const google_apis::ProgressCallback& progress_callback) OVERRIDE; virtual google_apis::CancelCallback ResumeUploadFile( @@ -159,7 +162,7 @@ class DriveUploader : public DriveUploaderInterface { // Upon completion, OnUploadLocationReceived should be called. void StartInitiateUploadExistingFile( const std::string& resource_id, - const std::string& etag, + const UploadExistingFileOptions& options, scoped_ptr<UploadFileInfo> upload_file_info); // DriveService callback for InitiateUpload. diff --git a/chrome/browser/drive/drive_uploader_unittest.cc b/chrome/browser/drive/drive_uploader_unittest.cc index 139e014..d3a38f5 100644 --- a/chrome/browser/drive/drive_uploader_unittest.cc +++ b/chrome/browser/drive/drive_uploader_unittest.cc @@ -96,13 +96,13 @@ class MockDriveServiceWithUploadExpectation : public DummyDriveService { const std::string& content_type, int64 content_length, const std::string& resource_id, - const std::string& etag, + const InitiateUploadExistingFileOptions& options, const InitiateUploadCallback& callback) OVERRIDE { EXPECT_EQ(kTestMimeType, content_type); EXPECT_EQ(expected_content_length_, content_length); EXPECT_EQ(kTestInitiateUploadResourceId, resource_id); - if (!etag.empty() && etag != kTestETag) { + if (!options.etag.empty() && options.etag != kTestETag) { base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind(callback, HTTP_PRECONDITION, GURL())); return CancelCallback(); @@ -221,7 +221,7 @@ class MockDriveServiceNoConnectionAtInitiate : public DummyDriveService { const std::string& content_type, int64 content_length, const std::string& resource_id, - const std::string& etag, + const InitiateUploadExistingFileOptions& options, const InitiateUploadCallback& callback) OVERRIDE { base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind(callback, GDATA_NO_CONNECTION, GURL())); @@ -261,7 +261,7 @@ class MockDriveServiceNoConnectionAtResume : public DummyDriveService { const std::string& content_type, int64 content_length, const std::string& resource_id, - const std::string& etag, + const InitiateUploadExistingFileOptions& options, const InitiateUploadCallback& callback) OVERRIDE { base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind(callback, HTTP_SUCCESS, GURL(kTestUploadExistingFileURL))); @@ -332,7 +332,7 @@ TEST_F(DriveUploaderTest, UploadExisting0KB) { kTestInitiateUploadResourceId, local_path, kTestMimeType, - std::string(), // etag + DriveUploader::UploadExistingFileOptions(), test_util::CreateCopyResultCallback( &error, &upload_location, &resource_entry), base::Bind(&test_util::AppendProgressCallbackResult, @@ -367,7 +367,7 @@ TEST_F(DriveUploaderTest, UploadExisting512KB) { kTestInitiateUploadResourceId, local_path, kTestMimeType, - std::string(), // etag + DriveUploader::UploadExistingFileOptions(), test_util::CreateCopyResultCallback( &error, &upload_location, &resource_entry), base::Bind(&test_util::AppendProgressCallbackResult, @@ -402,7 +402,7 @@ TEST_F(DriveUploaderTest, InitiateUploadFail) { uploader.UploadExistingFile(kTestInitiateUploadResourceId, local_path, kTestMimeType, - std::string(), // etag + DriveUploader::UploadExistingFileOptions(), test_util::CreateCopyResultCallback( &error, &upload_location, &resource_entry), google_apis::ProgressCallback()); @@ -426,10 +426,12 @@ TEST_F(DriveUploaderTest, InitiateUploadNoConflict) { MockDriveServiceWithUploadExpectation mock_service(local_path, data.size()); DriveUploader uploader(&mock_service, base::MessageLoopProxy::current().get()); + DriveUploader::UploadExistingFileOptions options; + options.etag = kTestETag; uploader.UploadExistingFile(kTestInitiateUploadResourceId, local_path, kTestMimeType, - kTestETag, + options, test_util::CreateCopyResultCallback( &error, &upload_location, &resource_entry), google_apis::ProgressCallback()); @@ -453,10 +455,12 @@ TEST_F(DriveUploaderTest, InitiateUploadConflict) { MockDriveServiceWithUploadExpectation mock_service(local_path, data.size()); DriveUploader uploader(&mock_service, base::MessageLoopProxy::current().get()); + DriveUploader::UploadExistingFileOptions options; + options.etag = kDestinationETag; uploader.UploadExistingFile(kTestInitiateUploadResourceId, local_path, kTestMimeType, - kDestinationETag, + options, test_util::CreateCopyResultCallback( &error, &upload_location, &resource_entry), google_apis::ProgressCallback()); @@ -482,7 +486,7 @@ TEST_F(DriveUploaderTest, ResumeUploadFail) { uploader.UploadExistingFile(kTestInitiateUploadResourceId, local_path, kTestMimeType, - std::string(), // etag + DriveUploader::UploadExistingFileOptions(), test_util::CreateCopyResultCallback( &error, &upload_location, &resource_entry), google_apis::ProgressCallback()); @@ -528,7 +532,7 @@ TEST_F(DriveUploaderTest, NonExistingSourceFile) { kTestInitiateUploadResourceId, temp_dir_.path().AppendASCII("_this_path_should_not_exist_"), kTestMimeType, - std::string(), // etag + DriveUploader::UploadExistingFileOptions(), test_util::CreateCopyResultCallback( &error, &upload_location, &resource_entry), google_apis::ProgressCallback()); diff --git a/chrome/browser/drive/dummy_drive_service.cc b/chrome/browser/drive/dummy_drive_service.cc index e564b3e..038717c 100644 --- a/chrome/browser/drive/dummy_drive_service.cc +++ b/chrome/browser/drive/dummy_drive_service.cc @@ -163,7 +163,7 @@ CancelCallback DummyDriveService::InitiateUploadExistingFile( const std::string& content_type, int64 content_length, const std::string& resource_id, - const std::string& etag, + const InitiateUploadExistingFileOptions& options, const InitiateUploadCallback& callback) { return CancelCallback(); } CancelCallback DummyDriveService::ResumeUpload( diff --git a/chrome/browser/drive/dummy_drive_service.h b/chrome/browser/drive/dummy_drive_service.h index bb729fb..aaefd9f 100644 --- a/chrome/browser/drive/dummy_drive_service.h +++ b/chrome/browser/drive/dummy_drive_service.h @@ -114,7 +114,7 @@ class DummyDriveService : public DriveServiceInterface { const std::string& content_type, int64 content_length, const std::string& resource_id, - const std::string& etag, + const InitiateUploadExistingFileOptions& options, const google_apis::InitiateUploadCallback& callback) OVERRIDE; virtual google_apis::CancelCallback ResumeUpload( const GURL& upload_url, diff --git a/chrome/browser/drive/fake_drive_service.cc b/chrome/browser/drive/fake_drive_service.cc index 3d3e81a..cb70595 100644 --- a/chrome/browser/drive/fake_drive_service.cc +++ b/chrome/browser/drive/fake_drive_service.cc @@ -994,7 +994,7 @@ CancelCallback FakeDriveService::InitiateUploadExistingFile( const std::string& content_type, int64 content_length, const std::string& resource_id, - const std::string& etag, + const InitiateUploadExistingFileOptions& options, const InitiateUploadCallback& callback) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); DCHECK(!callback.is_null()); @@ -1014,13 +1014,14 @@ CancelCallback FakeDriveService::InitiateUploadExistingFile( return CancelCallback(); } - const FileResource* file = entry->change_resource.file(); - if (!etag.empty() && etag != file->etag()) { + FileResource* file = entry->change_resource.mutable_file(); + if (!options.etag.empty() && options.etag != file->etag()) { base::MessageLoop::current()->PostTask( FROM_HERE, base::Bind(callback, HTTP_PRECONDITION, GURL())); return CancelCallback(); } + // TODO(hashimoto): Update |file|'s metadata with |options|. GURL session_url = GetNewUploadSessionUrl(); upload_sessions_[session_url] = diff --git a/chrome/browser/drive/fake_drive_service.h b/chrome/browser/drive/fake_drive_service.h index 4946ec3..6ead6e1 100644 --- a/chrome/browser/drive/fake_drive_service.h +++ b/chrome/browser/drive/fake_drive_service.h @@ -208,7 +208,7 @@ class FakeDriveService : public DriveServiceInterface { const std::string& content_type, int64 content_length, const std::string& resource_id, - const std::string& etag, + const InitiateUploadExistingFileOptions& options, const google_apis::InitiateUploadCallback& callback) OVERRIDE; virtual google_apis::CancelCallback ResumeUpload( const GURL& upload_url, diff --git a/chrome/browser/drive/fake_drive_service_unittest.cc b/chrome/browser/drive/fake_drive_service_unittest.cc index cd97fdc..f78d260 100644 --- a/chrome/browser/drive/fake_drive_service_unittest.cc +++ b/chrome/browser/drive/fake_drive_service_unittest.cc @@ -1818,7 +1818,7 @@ TEST_F(FakeDriveServiceTest, InitiateUploadExistingFile_Offline) { "test/foo", 13, "file:2_file_resource_id", - std::string(), // etag + FakeDriveService::InitiateUploadExistingFileOptions(), test_util::CreateCopyResultCallback(&error, &upload_location)); base::RunLoop().RunUntilIdle(); @@ -1836,7 +1836,7 @@ TEST_F(FakeDriveServiceTest, InitiateUploadExistingFile_NotFound) { "test/foo", 13, "non_existent", - std::string(), // etag + FakeDriveService::InitiateUploadExistingFileOptions(), test_util::CreateCopyResultCallback(&error, &upload_location)); base::RunLoop().RunUntilIdle(); @@ -1848,13 +1848,16 @@ TEST_F(FakeDriveServiceTest, InitiateUploadExistingFile_WrongETag) { ASSERT_TRUE(fake_service_.LoadResourceListForWapi( "gdata/root_feed.json")); + FakeDriveService::InitiateUploadExistingFileOptions options; + options.etag = "invalid_etag"; + GDataErrorCode error = GDATA_OTHER_ERROR; GURL upload_location; fake_service_.InitiateUploadExistingFile( "text/plain", 13, "file:2_file_resource_id", - "invalid_etag", + options, test_util::CreateCopyResultCallback(&error, &upload_location)); base::RunLoop().RunUntilIdle(); @@ -1866,13 +1869,16 @@ TEST_F(FakeDriveServiceTest, InitiateUpload_ExistingFile) { ASSERT_TRUE(fake_service_.LoadResourceListForWapi( "gdata/root_feed.json")); + FakeDriveService::InitiateUploadExistingFileOptions options; + options.etag = "\"HhMOFgxXHit7ImBr\""; + GDataErrorCode error = GDATA_OTHER_ERROR; GURL upload_location; fake_service_.InitiateUploadExistingFile( "text/plain", 13, "file:2_file_resource_id", - "\"HhMOFgxXHit7ImBr\"", + options, test_util::CreateCopyResultCallback(&error, &upload_location)); base::RunLoop().RunUntilIdle(); @@ -1956,13 +1962,16 @@ TEST_F(FakeDriveServiceTest, ResumeUpload_ExistingFile) { ASSERT_TRUE(fake_service_.LoadResourceListForWapi( "gdata/root_feed.json")); + FakeDriveService::InitiateUploadExistingFileOptions options; + options.etag = "\"HhMOFgxXHit7ImBr\""; + GDataErrorCode error = GDATA_OTHER_ERROR; GURL upload_location; fake_service_.InitiateUploadExistingFile( "text/plain", contents.size(), "file:2_file_resource_id", - "\"HhMOFgxXHit7ImBr\"", + options, test_util::CreateCopyResultCallback(&error, &upload_location)); base::RunLoop().RunUntilIdle(); diff --git a/chrome/browser/drive/gdata_wapi_service.cc b/chrome/browser/drive/gdata_wapi_service.cc index e9d9a45..a77fa01 100644 --- a/chrome/browser/drive/gdata_wapi_service.cc +++ b/chrome/browser/drive/gdata_wapi_service.cc @@ -515,7 +515,7 @@ CancelCallback GDataWapiService::InitiateUploadExistingFile( const std::string& content_type, int64 content_length, const std::string& resource_id, - const std::string& etag, + const InitiateUploadExistingFileOptions& options, const InitiateUploadCallback& callback) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); DCHECK(!callback.is_null()); @@ -528,7 +528,7 @@ CancelCallback GDataWapiService::InitiateUploadExistingFile( content_type, content_length, resource_id, - etag)); + options.etag)); } CancelCallback GDataWapiService::ResumeUpload( diff --git a/chrome/browser/drive/gdata_wapi_service.h b/chrome/browser/drive/gdata_wapi_service.h index 1de521f..c36ed46 100644 --- a/chrome/browser/drive/gdata_wapi_service.h +++ b/chrome/browser/drive/gdata_wapi_service.h @@ -154,7 +154,7 @@ class GDataWapiService : public DriveServiceInterface, const std::string& content_type, int64 content_length, const std::string& resource_id, - const std::string& etag, + const InitiateUploadExistingFileOptions& options, const google_apis::InitiateUploadCallback& callback) OVERRIDE; virtual google_apis::CancelCallback ResumeUpload( const GURL& upload_url, diff --git a/chrome/browser/sync_file_system/drive_backend/fake_drive_service_helper.cc b/chrome/browser/sync_file_system/drive_backend/fake_drive_service_helper.cc index 28d7302..99cac26 100644 --- a/chrome/browser/sync_file_system/drive_backend/fake_drive_service_helper.cc +++ b/chrome/browser/sync_file_system/drive_backend/fake_drive_service_helper.cc @@ -132,7 +132,7 @@ GDataErrorCode FakeDriveServiceHelper::UpdateFile( drive_uploader_->UploadExistingFile( file_id, temp_file, "application/octet-stream", - std::string(), // etag + drive::DriveUploader::UploadExistingFileOptions(), base::Bind(&UploadResultCallback, &error, &file), google_apis::ProgressCallback()); base::RunLoop().RunUntilIdle(); diff --git a/chrome/browser/sync_file_system/drive_backend/fake_drive_uploader.cc b/chrome/browser/sync_file_system/drive_backend/fake_drive_uploader.cc index ecff45b..6421ab1 100644 --- a/chrome/browser/sync_file_system/drive_backend/fake_drive_uploader.cc +++ b/chrome/browser/sync_file_system/drive_backend/fake_drive_uploader.cc @@ -121,7 +121,7 @@ CancelCallback FakeDriveUploader::UploadExistingFile( const std::string& resource_id, const base::FilePath& local_file_path, const std::string& content_type, - const std::string& etag, + const UploadExistingFileOptions& options, const UploadCompletionCallback& callback, const ProgressCallback& progress_callback) { DCHECK(!callback.is_null()); diff --git a/chrome/browser/sync_file_system/drive_backend/fake_drive_uploader.h b/chrome/browser/sync_file_system/drive_backend/fake_drive_uploader.h index 7c622d1..e302ce7 100644 --- a/chrome/browser/sync_file_system/drive_backend/fake_drive_uploader.h +++ b/chrome/browser/sync_file_system/drive_backend/fake_drive_uploader.h @@ -60,7 +60,7 @@ class FakeDriveUploader : public drive::DriveUploaderInterface { const std::string& resource_id, const base::FilePath& local_file_path, const std::string& content_type, - const std::string& etag, + const UploadExistingFileOptions& options, const drive::UploadCompletionCallback& callback, const google_apis::ProgressCallback& progress_callback) OVERRIDE; virtual google_apis::CancelCallback ResumeUploadFile( diff --git a/chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.cc b/chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.cc index 1c0c280..e1459c3 100644 --- a/chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.cc +++ b/chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.cc @@ -396,11 +396,14 @@ void LocalToRemoteSyncer::DidGetMD5ForUpload( } sync_action_ = SYNC_ACTION_UPDATED; + + drive::DriveUploader::UploadExistingFileOptions options; + options.etag = remote_file_tracker_->synced_details().etag(); drive_uploader()->UploadExistingFile( remote_file_tracker_->file_id(), local_path_, "application/octet_stream", - remote_file_tracker_->synced_details().etag(), + options, base::Bind(&LocalToRemoteSyncer::DidUploadExistingFile, weak_ptr_factory_.GetWeakPtr(), callback), diff --git a/chrome/browser/sync_file_system/drive_backend_v1/api_util.cc b/chrome/browser/sync_file_system/drive_backend_v1/api_util.cc index 52681ce..b1f83dc 100644 --- a/chrome/browser/sync_file_system/drive_backend_v1/api_util.cc +++ b/chrome/browser/sync_file_system/drive_backend_v1/api_util.cc @@ -889,6 +889,8 @@ void APIUtil::UploadExistingFileInternal( return; } + drive::DriveUploader::UploadExistingFileOptions options; + options.etag = entry->etag(); std::string mime_type = GetMimeTypeFromTitle(entry->title()); UploadKey upload_key = RegisterUploadCallback(callback); ResourceEntryCallback did_upload_callback = @@ -897,7 +899,7 @@ void APIUtil::UploadExistingFileInternal( entry->resource_id(), local_file_path, mime_type, - entry->etag(), + options, base::Bind(&UploadResultAdapter, did_upload_callback), google_apis::ProgressCallback()); } diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 1b1fa5d..29d3e49 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -618,6 +618,7 @@ 'browser/drive/drive_notification_manager_factory.cc', 'browser/drive/drive_notification_manager_factory.h', 'browser/drive/drive_notification_observer.h', + 'browser/drive/drive_service_interface.cc', 'browser/drive/drive_service_interface.h', 'browser/drive/drive_switches.cc', 'browser/drive/drive_switches.h', |