summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-23 09:36:33 +0000
committerhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-23 09:36:33 +0000
commit1408279d0dfbfc9fb2f0735ab341a0771910df42 (patch)
tree79335a8d0bf7ff2f37dcf56b1fbef4dc93398e6f
parenteaa4f14e5187ba2f1be85a0cdd4e044a8abc5c3c (diff)
downloadchromium_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
-rw-r--r--chrome/browser/chromeos/drive/job_scheduler.cc4
-rw-r--r--chrome/browser/drive/drive_api_service.cc24
-rw-r--r--chrome/browser/drive/drive_api_service.h2
-rw-r--r--chrome/browser/drive/drive_service_interface.cc17
-rw-r--r--chrome/browser/drive/drive_service_interface.h30
-rw-r--r--chrome/browser/drive/drive_uploader.cc8
-rw-r--r--chrome/browser/drive/drive_uploader.h9
-rw-r--r--chrome/browser/drive/drive_uploader_unittest.cc26
-rw-r--r--chrome/browser/drive/dummy_drive_service.cc2
-rw-r--r--chrome/browser/drive/dummy_drive_service.h2
-rw-r--r--chrome/browser/drive/fake_drive_service.cc7
-rw-r--r--chrome/browser/drive/fake_drive_service.h2
-rw-r--r--chrome/browser/drive/fake_drive_service_unittest.cc19
-rw-r--r--chrome/browser/drive/gdata_wapi_service.cc4
-rw-r--r--chrome/browser/drive/gdata_wapi_service.h2
-rw-r--r--chrome/browser/sync_file_system/drive_backend/fake_drive_service_helper.cc2
-rw-r--r--chrome/browser/sync_file_system/drive_backend/fake_drive_uploader.cc2
-rw-r--r--chrome/browser/sync_file_system/drive_backend/fake_drive_uploader.h2
-rw-r--r--chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.cc5
-rw-r--r--chrome/browser/sync_file_system/drive_backend_v1/api_util.cc4
-rw-r--r--chrome/chrome_browser.gypi1
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',