1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/sync_file_system/drive_backend/fake_drive_uploader.h"
8 #include "base/location.h"
9 #include "base/logging.h"
10 #include "base/message_loop/message_loop.h"
11 #include "base/thread_task_runner_handle.h"
12 #include "google_apis/drive/drive_api_parser.h"
13 #include "testing/gtest/include/gtest/gtest.h"
15 using drive::FakeDriveService
;
16 using drive::UploadCompletionCallback
;
17 using google_apis::CancelCallback
;
18 using google_apis::FileResource
;
19 using google_apis::FileResourceCallback
;
20 using google_apis::DriveApiErrorCode
;
21 using google_apis::ProgressCallback
;
23 namespace sync_file_system
{
24 namespace drive_backend
{
28 void DidAddFileOrDirectoryForMakingConflict(DriveApiErrorCode error
,
29 scoped_ptr
<FileResource
> entry
) {
30 ASSERT_EQ(google_apis::HTTP_CREATED
, error
);
34 void DidAddFileForUploadNew(
35 const UploadCompletionCallback
& callback
,
36 DriveApiErrorCode error
,
37 scoped_ptr
<FileResource
> entry
) {
38 ASSERT_EQ(google_apis::HTTP_CREATED
, error
);
40 base::ThreadTaskRunnerHandle::Get()->PostTask(
43 google_apis::HTTP_SUCCESS
,
45 base::Passed(&entry
)));
48 void DidGetFileResourceForUploadExisting(
49 const UploadCompletionCallback
& callback
,
50 DriveApiErrorCode error
,
51 scoped_ptr
<FileResource
> entry
) {
52 base::ThreadTaskRunnerHandle::Get()->PostTask(
57 base::Passed(&entry
)));
62 FakeDriveServiceWrapper::FakeDriveServiceWrapper()
63 : make_directory_conflict_(false) {}
65 FakeDriveServiceWrapper::~FakeDriveServiceWrapper() {}
67 CancelCallback
FakeDriveServiceWrapper::AddNewDirectory(
68 const std::string
& parent_resource_id
,
69 const std::string
& directory_name
,
70 const drive::AddNewDirectoryOptions
& options
,
71 const FileResourceCallback
& callback
) {
72 if (make_directory_conflict_
) {
73 FakeDriveService::AddNewDirectory(
77 base::Bind(&DidAddFileOrDirectoryForMakingConflict
));
79 return FakeDriveService::AddNewDirectory(
80 parent_resource_id
, directory_name
, options
, callback
);
83 FakeDriveUploader::FakeDriveUploader(
84 FakeDriveServiceWrapper
* fake_drive_service
)
85 : fake_drive_service_(fake_drive_service
),
86 make_file_conflict_(false) {}
88 FakeDriveUploader::~FakeDriveUploader() {}
90 CancelCallback
FakeDriveUploader::UploadNewFile(
91 const std::string
& parent_resource_id
,
92 const base::FilePath
& local_file_path
,
93 const std::string
& title
,
94 const std::string
& content_type
,
95 const drive::UploadNewFileOptions
& options
,
96 const UploadCompletionCallback
& callback
,
97 const ProgressCallback
& progress_callback
) {
98 DCHECK(!callback
.is_null());
99 const std::string kFileContent
= "test content";
101 if (make_file_conflict_
) {
102 fake_drive_service_
->AddNewFile(
107 false, // shared_with_me
108 base::Bind(&DidAddFileOrDirectoryForMakingConflict
));
111 fake_drive_service_
->AddNewFile(
116 false, // shared_with_me
117 base::Bind(&DidAddFileForUploadNew
, callback
));
118 base::MessageLoop::current()->RunUntilIdle();
120 return CancelCallback();
123 CancelCallback
FakeDriveUploader::UploadExistingFile(
124 const std::string
& resource_id
,
125 const base::FilePath
& local_file_path
,
126 const std::string
& content_type
,
127 const drive::UploadExistingFileOptions
& options
,
128 const UploadCompletionCallback
& callback
,
129 const ProgressCallback
& progress_callback
) {
130 DCHECK(!callback
.is_null());
131 return fake_drive_service_
->GetFileResource(
133 base::Bind(&DidGetFileResourceForUploadExisting
, callback
));
136 CancelCallback
FakeDriveUploader::ResumeUploadFile(
137 const GURL
& upload_location
,
138 const base::FilePath
& local_file_path
,
139 const std::string
& content_type
,
140 const drive::UploadCompletionCallback
& callback
,
141 const ProgressCallback
& progress_callback
) {
142 // At the moment, sync file system doesn't support resuming of the uploading.
143 // So this method shouldn't be reached.
145 return CancelCallback();
148 } // namespace drive_backend
149 } // namespace sync_file_system