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

Side by Side Diff: chrome/browser/chromeos/drive/fake_file_system.cc

Issue 1314803004: Move chrome/browser/chromeos/drive/file_system.cc (+deps) into components/drive. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebasing... Created 5 years, 3 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2013 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.
4
5 #include "chrome/browser/chromeos/drive/fake_file_system.h"
6
7 #include "base/bind.h"
8 #include "base/bind_helpers.h"
9 #include "base/callback.h"
10 #include "base/files/file_path.h"
11 #include "base/files/file_util.h"
12 #include "base/logging.h"
13 #include "components/drive/drive.pb.h"
14 #include "components/drive/file_errors.h"
15 #include "components/drive/file_system_core_util.h"
16 #include "components/drive/resource_entry_conversion.h"
17 #include "components/drive/service/drive_service_interface.h"
18 #include "content/public/browser/browser_thread.h"
19 #include "google_apis/drive/drive_api_parser.h"
20
21 namespace drive {
22 namespace test_util {
23
24 using content::BrowserThread;
25
26 FakeFileSystem::FakeFileSystem(DriveServiceInterface* drive_service)
27 : drive_service_(drive_service),
28 weak_ptr_factory_(this) {
29 CHECK(cache_dir_.CreateUniqueTempDir());
30 }
31
32 FakeFileSystem::~FakeFileSystem() {
33 }
34
35 void FakeFileSystem::AddObserver(FileSystemObserver* observer) {
36 DCHECK_CURRENTLY_ON(BrowserThread::UI);
37 }
38
39 void FakeFileSystem::RemoveObserver(FileSystemObserver* observer) {
40 DCHECK_CURRENTLY_ON(BrowserThread::UI);
41 }
42
43 void FakeFileSystem::CheckForUpdates() {
44 DCHECK_CURRENTLY_ON(BrowserThread::UI);
45 }
46
47 void FakeFileSystem::TransferFileFromLocalToRemote(
48 const base::FilePath& local_src_file_path,
49 const base::FilePath& remote_dest_file_path,
50 const FileOperationCallback& callback) {
51 DCHECK_CURRENTLY_ON(BrowserThread::UI);
52 }
53
54 void FakeFileSystem::OpenFile(const base::FilePath& file_path,
55 OpenMode open_mode,
56 const std::string& mime_type,
57 const OpenFileCallback& callback) {
58 DCHECK_CURRENTLY_ON(BrowserThread::UI);
59 }
60
61 void FakeFileSystem::Copy(const base::FilePath& src_file_path,
62 const base::FilePath& dest_file_path,
63 bool preserve_last_modified,
64 const FileOperationCallback& callback) {
65 DCHECK_CURRENTLY_ON(BrowserThread::UI);
66 }
67
68 void FakeFileSystem::Move(const base::FilePath& src_file_path,
69 const base::FilePath& dest_file_path,
70 const FileOperationCallback& callback) {
71 DCHECK_CURRENTLY_ON(BrowserThread::UI);
72 }
73
74 void FakeFileSystem::Remove(const base::FilePath& file_path,
75 bool is_recursive,
76 const FileOperationCallback& callback) {
77 DCHECK_CURRENTLY_ON(BrowserThread::UI);
78 }
79
80 void FakeFileSystem::CreateDirectory(
81 const base::FilePath& directory_path,
82 bool is_exclusive,
83 bool is_recursive,
84 const FileOperationCallback& callback) {
85 DCHECK_CURRENTLY_ON(BrowserThread::UI);
86 }
87
88 void FakeFileSystem::CreateFile(const base::FilePath& file_path,
89 bool is_exclusive,
90 const std::string& mime_type,
91 const FileOperationCallback& callback) {
92 DCHECK_CURRENTLY_ON(BrowserThread::UI);
93 }
94
95 void FakeFileSystem::TouchFile(const base::FilePath& file_path,
96 const base::Time& last_access_time,
97 const base::Time& last_modified_time,
98 const FileOperationCallback& callback) {
99 DCHECK_CURRENTLY_ON(BrowserThread::UI);
100 }
101
102 void FakeFileSystem::TruncateFile(const base::FilePath& file_path,
103 int64 length,
104 const FileOperationCallback& callback) {
105 DCHECK_CURRENTLY_ON(BrowserThread::UI);
106 }
107
108 void FakeFileSystem::Pin(const base::FilePath& file_path,
109 const FileOperationCallback& callback) {
110 DCHECK_CURRENTLY_ON(BrowserThread::UI);
111 }
112
113 void FakeFileSystem::Unpin(const base::FilePath& file_path,
114 const FileOperationCallback& callback) {
115 DCHECK_CURRENTLY_ON(BrowserThread::UI);
116 }
117
118 void FakeFileSystem::GetFile(const base::FilePath& file_path,
119 const GetFileCallback& callback) {
120 DCHECK_CURRENTLY_ON(BrowserThread::UI);
121 }
122
123 void FakeFileSystem::GetFileForSaving(const base::FilePath& file_path,
124 const GetFileCallback& callback) {
125 DCHECK_CURRENTLY_ON(BrowserThread::UI);
126 }
127
128 base::Closure FakeFileSystem::GetFileContent(
129 const base::FilePath& file_path,
130 const GetFileContentInitializedCallback& initialized_callback,
131 const google_apis::GetContentCallback& get_content_callback,
132 const FileOperationCallback& completion_callback) {
133 DCHECK_CURRENTLY_ON(BrowserThread::UI);
134
135 GetResourceEntry(
136 file_path,
137 base::Bind(&FakeFileSystem::GetFileContentAfterGetResourceEntry,
138 weak_ptr_factory_.GetWeakPtr(),
139 initialized_callback, get_content_callback,
140 completion_callback));
141 return base::Bind(&base::DoNothing);
142 }
143
144 void FakeFileSystem::GetResourceEntry(
145 const base::FilePath& file_path,
146 const GetResourceEntryCallback& callback) {
147 DCHECK_CURRENTLY_ON(BrowserThread::UI);
148
149 if (file_path == util::GetDriveMyDriveRootPath()) {
150 // Specialized for the root entry.
151 drive_service_->GetAboutResource(
152 base::Bind(
153 &FakeFileSystem::GetResourceEntryAfterGetAboutResource,
154 weak_ptr_factory_.GetWeakPtr(), callback));
155 return;
156 }
157
158 // Now, we only support files under my drive.
159 DCHECK(util::GetDriveMyDriveRootPath().IsParent(file_path));
160 GetResourceEntry(
161 file_path.DirName(),
162 base::Bind(
163 &FakeFileSystem::GetResourceEntryAfterGetParentEntryInfo,
164 weak_ptr_factory_.GetWeakPtr(), file_path.BaseName(), callback));
165 }
166
167 void FakeFileSystem::ReadDirectory(
168 const base::FilePath& file_path,
169 const ReadDirectoryEntriesCallback& entries_callback,
170 const FileOperationCallback& completion_callback) {
171 DCHECK_CURRENTLY_ON(BrowserThread::UI);
172 }
173
174 void FakeFileSystem::Search(const std::string& search_query,
175 const GURL& next_link,
176 const SearchCallback& callback) {
177 DCHECK_CURRENTLY_ON(BrowserThread::UI);
178 }
179
180 void FakeFileSystem::SearchMetadata(
181 const std::string& query,
182 int options,
183 int at_most_num_matches,
184 const SearchMetadataCallback& callback) {
185 DCHECK_CURRENTLY_ON(BrowserThread::UI);
186 }
187
188 void FakeFileSystem::SearchByHashes(const std::set<std::string>& hashes,
189 const SearchByHashesCallback& callback) {
190 DCHECK_CURRENTLY_ON(BrowserThread::UI);
191 }
192
193 void FakeFileSystem::GetAvailableSpace(
194 const GetAvailableSpaceCallback& callback) {
195 DCHECK_CURRENTLY_ON(BrowserThread::UI);
196 }
197
198 void FakeFileSystem::GetShareUrl(
199 const base::FilePath& file_path,
200 const GURL& embed_origin,
201 const GetShareUrlCallback& callback) {
202 DCHECK_CURRENTLY_ON(BrowserThread::UI);
203 }
204
205 void FakeFileSystem::GetMetadata(
206 const GetFilesystemMetadataCallback& callback) {
207 DCHECK_CURRENTLY_ON(BrowserThread::UI);
208 }
209
210 void FakeFileSystem::MarkCacheFileAsMounted(
211 const base::FilePath& drive_file_path,
212 const MarkMountedCallback& callback) {
213 DCHECK_CURRENTLY_ON(BrowserThread::UI);
214 }
215
216 void FakeFileSystem::MarkCacheFileAsUnmounted(
217 const base::FilePath& cache_file_path,
218 const FileOperationCallback& callback) {
219 DCHECK_CURRENTLY_ON(BrowserThread::UI);
220 }
221
222 void FakeFileSystem::AddPermission(const base::FilePath& drive_file_path,
223 const std::string& email,
224 google_apis::drive::PermissionRole role,
225 const FileOperationCallback& callback) {
226 DCHECK_CURRENTLY_ON(BrowserThread::UI);
227 }
228
229 void FakeFileSystem::SetProperty(
230 const base::FilePath& drive_file_path,
231 google_apis::drive::Property::Visibility visibility,
232 const std::string& key,
233 const std::string& value,
234 const FileOperationCallback& callback) {
235 DCHECK_CURRENTLY_ON(BrowserThread::UI);
236 }
237
238 void FakeFileSystem::Reset(const FileOperationCallback& callback) {
239 }
240
241 void FakeFileSystem::GetPathFromResourceId(
242 const std::string& resource_id,
243 const GetFilePathCallback& callback) {
244 DCHECK_CURRENTLY_ON(BrowserThread::UI);
245 }
246
247 void FakeFileSystem::FreeDiskSpaceIfNeededFor(
248 int64 num_bytes,
249 const FreeDiskSpaceCallback& callback) {
250 DCHECK_CURRENTLY_ON(BrowserThread::UI);
251 }
252
253 void FakeFileSystem::CalculateEvictableCacheSize(
254 const EvictableCacheSizeCallback& callback) {
255 DCHECK_CURRENTLY_ON(BrowserThread::UI);
256 }
257
258 // Implementation of GetFileContent.
259 void FakeFileSystem::GetFileContentAfterGetResourceEntry(
260 const GetFileContentInitializedCallback& initialized_callback,
261 const google_apis::GetContentCallback& get_content_callback,
262 const FileOperationCallback& completion_callback,
263 FileError error,
264 scoped_ptr<ResourceEntry> entry) {
265 DCHECK_CURRENTLY_ON(BrowserThread::UI);
266
267 if (error != FILE_ERROR_OK) {
268 completion_callback.Run(error);
269 return;
270 }
271 DCHECK(entry);
272
273 // We're only interested in a file.
274 if (entry->file_info().is_directory()) {
275 completion_callback.Run(FILE_ERROR_NOT_A_FILE);
276 return;
277 }
278
279 // Fetch google_apis::FileResource for its |download_url|.
280 drive_service_->GetFileResource(
281 entry->resource_id(),
282 base::Bind(
283 &FakeFileSystem::GetFileContentAfterGetFileResource,
284 weak_ptr_factory_.GetWeakPtr(),
285 initialized_callback,
286 get_content_callback,
287 completion_callback));
288 }
289
290 void FakeFileSystem::GetFileContentAfterGetFileResource(
291 const GetFileContentInitializedCallback& initialized_callback,
292 const google_apis::GetContentCallback& get_content_callback,
293 const FileOperationCallback& completion_callback,
294 google_apis::DriveApiErrorCode gdata_error,
295 scoped_ptr<google_apis::FileResource> gdata_entry) {
296 DCHECK_CURRENTLY_ON(BrowserThread::UI);
297
298 FileError error = GDataToFileError(gdata_error);
299 if (error != FILE_ERROR_OK) {
300 completion_callback.Run(error);
301 return;
302 }
303 DCHECK(gdata_entry);
304
305 scoped_ptr<ResourceEntry> entry(new ResourceEntry);
306 std::string parent_resource_id;
307 bool converted = ConvertFileResourceToResourceEntry(
308 *gdata_entry, entry.get(), &parent_resource_id);
309 DCHECK(converted);
310 entry->set_parent_local_id(parent_resource_id);
311
312 base::FilePath cache_path =
313 cache_dir_.path().AppendASCII(entry->resource_id());
314 if (entry->file_specific_info().is_hosted_document()) {
315 // For hosted documents return a dummy cache without server request.
316 int result = base::WriteFile(cache_path, "", 0);
317 DCHECK_EQ(0, result);
318 }
319 if (base::PathExists(cache_path)) {
320 // Cache file is found.
321 initialized_callback.Run(FILE_ERROR_OK, cache_path, entry.Pass());
322 completion_callback.Run(FILE_ERROR_OK);
323 return;
324 }
325
326 initialized_callback.Run(FILE_ERROR_OK, base::FilePath(), entry.Pass());
327 drive_service_->DownloadFile(
328 cache_path,
329 gdata_entry->file_id(),
330 base::Bind(&FakeFileSystem::GetFileContentAfterDownloadFile,
331 weak_ptr_factory_.GetWeakPtr(),
332 completion_callback),
333 get_content_callback,
334 google_apis::ProgressCallback());
335 }
336
337 void FakeFileSystem::GetFileContentAfterDownloadFile(
338 const FileOperationCallback& completion_callback,
339 google_apis::DriveApiErrorCode gdata_error,
340 const base::FilePath& temp_file) {
341 DCHECK_CURRENTLY_ON(BrowserThread::UI);
342 completion_callback.Run(GDataToFileError(gdata_error));
343 }
344
345 // Implementation of GetResourceEntry.
346 void FakeFileSystem::GetResourceEntryAfterGetAboutResource(
347 const GetResourceEntryCallback& callback,
348 google_apis::DriveApiErrorCode gdata_error,
349 scoped_ptr<google_apis::AboutResource> about_resource) {
350 DCHECK_CURRENTLY_ON(BrowserThread::UI);
351
352 FileError error = GDataToFileError(gdata_error);
353 if (error != FILE_ERROR_OK) {
354 callback.Run(error, scoped_ptr<ResourceEntry>());
355 return;
356 }
357
358 DCHECK(about_resource);
359 scoped_ptr<ResourceEntry> root(new ResourceEntry);
360 root->mutable_file_info()->set_is_directory(true);
361 root->set_resource_id(about_resource->root_folder_id());
362 root->set_title(util::kDriveMyDriveRootDirName);
363 callback.Run(error, root.Pass());
364 }
365
366 void FakeFileSystem::GetResourceEntryAfterGetParentEntryInfo(
367 const base::FilePath& base_name,
368 const GetResourceEntryCallback& callback,
369 FileError error,
370 scoped_ptr<ResourceEntry> parent_entry) {
371 DCHECK_CURRENTLY_ON(BrowserThread::UI);
372
373 if (error != FILE_ERROR_OK) {
374 callback.Run(error, scoped_ptr<ResourceEntry>());
375 return;
376 }
377
378 DCHECK(parent_entry);
379 drive_service_->GetFileListInDirectory(
380 parent_entry->resource_id(),
381 base::Bind(
382 &FakeFileSystem::GetResourceEntryAfterGetFileList,
383 weak_ptr_factory_.GetWeakPtr(), base_name, callback));
384 }
385
386 void FakeFileSystem::GetResourceEntryAfterGetFileList(
387 const base::FilePath& base_name,
388 const GetResourceEntryCallback& callback,
389 google_apis::DriveApiErrorCode gdata_error,
390 scoped_ptr<google_apis::FileList> file_list) {
391 DCHECK_CURRENTLY_ON(BrowserThread::UI);
392
393 FileError error = GDataToFileError(gdata_error);
394 if (error != FILE_ERROR_OK) {
395 callback.Run(error, scoped_ptr<ResourceEntry>());
396 return;
397 }
398
399 DCHECK(file_list);
400 const ScopedVector<google_apis::FileResource>& entries = file_list->items();
401 for (size_t i = 0; i < entries.size(); ++i) {
402 scoped_ptr<ResourceEntry> entry(new ResourceEntry);
403 std::string parent_resource_id;
404 bool converted = ConvertFileResourceToResourceEntry(
405 *entries[i], entry.get(), &parent_resource_id);
406 DCHECK(converted);
407 entry->set_parent_local_id(parent_resource_id);
408
409 if (entry->base_name() == base_name.AsUTF8Unsafe()) {
410 // Found the target entry.
411 callback.Run(FILE_ERROR_OK, entry.Pass());
412 return;
413 }
414 }
415
416 callback.Run(FILE_ERROR_NOT_FOUND, scoped_ptr<ResourceEntry>());
417 }
418
419 } // namespace test_util
420 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/drive/fake_file_system.h ('k') | chrome/browser/chromeos/drive/fake_file_system_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698