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

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

Issue 11106007: drive: Rename 'gdata' namespace to 'drive' in chrome/browser/chromeos/drive (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/drive/drive_file_system.h" 5 #include "chrome/browser/chromeos/drive/drive_file_system.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 28 matching lines...) Expand all
39 #include "testing/gtest/include/gtest/gtest.h" 39 #include "testing/gtest/include/gtest/gtest.h"
40 40
41 using ::testing::AnyNumber; 41 using ::testing::AnyNumber;
42 using ::testing::AtLeast; 42 using ::testing::AtLeast;
43 using ::testing::Eq; 43 using ::testing::Eq;
44 using ::testing::NotNull; 44 using ::testing::NotNull;
45 using ::testing::Return; 45 using ::testing::Return;
46 using ::testing::StrictMock; 46 using ::testing::StrictMock;
47 using ::testing::_; 47 using ::testing::_;
48 48
49 namespace gdata { 49 namespace drive {
50 namespace { 50 namespace {
51 51
52 const char kSymLinkToDevNull[] = "/dev/null"; 52 const char kSymLinkToDevNull[] = "/dev/null";
53 53
54 const int64 kLotsOfSpace = kMinFreeSpace * 10; 54 const int64 kLotsOfSpace = kMinFreeSpace * 10;
55 55
56 struct SearchResultPair { 56 struct SearchResultPair {
57 const char* path; 57 const char* path;
58 const bool is_directory; 58 const bool is_directory;
59 }; 59 };
(...skipping 24 matching lines...) Expand all
84 // DriveServiceInterface::GetDocumentEntry(). 84 // DriveServiceInterface::GetDocumentEntry().
85 ACTION_P2(MockGetDocumentEntry, status, value) { 85 ACTION_P2(MockGetDocumentEntry, status, value) {
86 base::MessageLoopProxy::current()->PostTask(FROM_HERE, 86 base::MessageLoopProxy::current()->PostTask(FROM_HERE,
87 base::Bind(arg1, status, base::Passed(value))); 87 base::Bind(arg1, status, base::Passed(value)));
88 } 88 }
89 89
90 // Action used to set mock expectations for 90 // Action used to set mock expectations for
91 // DriveUploaderInterface::UploadExistingFile(). 91 // DriveUploaderInterface::UploadExistingFile().
92 ACTION_P4(MockUploadExistingFile, 92 ACTION_P4(MockUploadExistingFile,
93 error, drive_path, local_file_path, document_entry) { 93 error, drive_path, local_file_path, document_entry) {
94 scoped_ptr<DocumentEntry> scoped_document_entry(document_entry); 94 scoped_ptr<gdata::DocumentEntry> scoped_document_entry(document_entry);
95 base::MessageLoopProxy::current()->PostTask(FROM_HERE, 95 base::MessageLoopProxy::current()->PostTask(FROM_HERE,
96 base::Bind(arg5, 96 base::Bind(arg5,
97 error, 97 error,
98 drive_path, 98 drive_path,
99 local_file_path, 99 local_file_path,
100 base::Passed(&scoped_document_entry))); 100 base::Passed(&scoped_document_entry)));
101 101
102 const int kUploadId = 123; 102 const int kUploadId = 123;
103 return kUploadId; 103 return kUploadId;
104 } 104 }
105 105
106 // Action used to set mock expectations for 106 // Action used to set mock expectations for
107 // DriveUploaderInterface::UploadNewFile(). 107 // DriveUploaderInterface::UploadNewFile().
108 ACTION(MockUploadNewFile) { 108 ACTION(MockUploadNewFile) {
109 scoped_ptr<base::Value> value = 109 scoped_ptr<base::Value> value =
110 test_util::LoadJSONFile("gdata/uploaded_file.json"); 110 gdata::test_util::LoadJSONFile("gdata/uploaded_file.json");
111 scoped_ptr<DocumentEntry> document_entry( 111 scoped_ptr<gdata::DocumentEntry> document_entry(
112 DocumentEntry::ExtractAndParse(*value)); 112 gdata::DocumentEntry::ExtractAndParse(*value));
113 113
114 base::MessageLoopProxy::current()->PostTask(FROM_HERE, 114 base::MessageLoopProxy::current()->PostTask(FROM_HERE,
115 base::Bind(arg7, 115 base::Bind(arg7,
116 DRIVE_FILE_OK, 116 DRIVE_FILE_OK,
117 arg1, 117 arg1,
118 arg2, 118 arg2,
119 base::Passed(&document_entry))); 119 base::Passed(&document_entry)));
120 120
121 const int kUploadId = 123; 121 const int kUploadId = 123;
122 return kUploadId; 122 return kUploadId;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 blocking_task_runner_); 197 blocking_task_runner_);
198 198
199 mock_cache_observer_.reset(new StrictMock<MockDriveCacheObserver>); 199 mock_cache_observer_.reset(new StrictMock<MockDriveCacheObserver>);
200 cache_->AddObserver(mock_cache_observer_.get()); 200 cache_->AddObserver(mock_cache_observer_.get());
201 201
202 mock_directory_observer_.reset(new StrictMock<MockDirectoryChangeObserver>); 202 mock_directory_observer_.reset(new StrictMock<MockDirectoryChangeObserver>);
203 file_system_->AddObserver(mock_directory_observer_.get()); 203 file_system_->AddObserver(mock_directory_observer_.get());
204 204
205 file_system_->Initialize(); 205 file_system_->Initialize();
206 cache_->RequestInitializeOnUIThreadForTesting(); 206 cache_->RequestInitializeOnUIThreadForTesting();
207 test_util::RunBlockingPoolTask(); 207 gdata::test_util::RunBlockingPoolTask();
208 } 208 }
209 209
210 virtual void TearDown() OVERRIDE { 210 virtual void TearDown() OVERRIDE {
211 ASSERT_TRUE(file_system_); 211 ASSERT_TRUE(file_system_);
212 EXPECT_CALL(*mock_drive_service_, CancelAll()).Times(1); 212 EXPECT_CALL(*mock_drive_service_, CancelAll()).Times(1);
213 delete file_system_; 213 delete file_system_;
214 file_system_ = NULL; 214 file_system_ = NULL;
215 delete mock_drive_service_; 215 delete mock_drive_service_;
216 mock_drive_service_ = NULL; 216 mock_drive_service_ = NULL;
217 SetFreeDiskSpaceGetterForTesting(NULL); 217 SetFreeDiskSpaceGetterForTesting(NULL);
218 cache_->DestroyOnUIThread(); 218 cache_->DestroyOnUIThread();
219 // The cache destruction requires to post a task to the blocking pool. 219 // The cache destruction requires to post a task to the blocking pool.
220 test_util::RunBlockingPoolTask(); 220 gdata::test_util::RunBlockingPoolTask();
221 221
222 profile_.reset(NULL); 222 profile_.reset(NULL);
223 } 223 }
224 224
225 // Loads test json file as root ("/drive") element. 225 // Loads test json file as root ("/drive") element.
226 void LoadRootFeedDocument(const std::string& filename) { 226 void LoadRootFeedDocument(const std::string& filename) {
227 LoadChangeFeed(filename, 0); 227 LoadChangeFeed(filename, 0);
228 } 228 }
229 229
230 void LoadChangeFeed(const std::string& filename, 230 void LoadChangeFeed(const std::string& filename,
231 int largest_changestamp) { 231 int largest_changestamp) {
232 test_util::LoadChangeFeed(filename, 232 test_util::LoadChangeFeed(filename,
233 file_system_, 233 file_system_,
234 largest_changestamp, 234 largest_changestamp,
235 root_feed_changestamp_); 235 root_feed_changestamp_);
236 root_feed_changestamp_++; 236 root_feed_changestamp_++;
237 } 237 }
238 238
239 void AddDirectoryFromFile(const FilePath& directory_path, 239 void AddDirectoryFromFile(const FilePath& directory_path,
240 const std::string& filename) { 240 const std::string& filename) {
241 scoped_ptr<Value> atom = test_util::LoadJSONFile(filename); 241 scoped_ptr<Value> atom = gdata::test_util::LoadJSONFile(filename);
242 ASSERT_TRUE(atom.get()); 242 ASSERT_TRUE(atom.get());
243 ASSERT_TRUE(atom->GetType() == Value::TYPE_DICTIONARY); 243 ASSERT_TRUE(atom->GetType() == Value::TYPE_DICTIONARY);
244 244
245 DictionaryValue* dict_value = NULL; 245 DictionaryValue* dict_value = NULL;
246 Value* entry_value = NULL; 246 Value* entry_value = NULL;
247 ASSERT_TRUE(atom->GetAsDictionary(&dict_value)); 247 ASSERT_TRUE(atom->GetAsDictionary(&dict_value));
248 ASSERT_TRUE(dict_value->Get("entry", &entry_value)); 248 ASSERT_TRUE(dict_value->Get("entry", &entry_value));
249 249
250 DictionaryValue* entry_dict = NULL; 250 DictionaryValue* entry_dict = NULL;
251 ASSERT_TRUE(entry_value->GetAsDictionary(&entry_dict)); 251 ASSERT_TRUE(entry_value->GetAsDictionary(&entry_dict));
252 252
253 // Tweak entry title to match the last segment of the directory path 253 // Tweak entry title to match the last segment of the directory path
254 // (new directory name). 254 // (new directory name).
255 std::vector<FilePath::StringType> dir_parts; 255 std::vector<FilePath::StringType> dir_parts;
256 directory_path.GetComponents(&dir_parts); 256 directory_path.GetComponents(&dir_parts);
257 entry_dict->SetString("title.$t", dir_parts[dir_parts.size() - 1]); 257 entry_dict->SetString("title.$t", dir_parts[dir_parts.size() - 1]);
258 258
259 DriveFileError error; 259 DriveFileError error;
260 DriveFileSystem::CreateDirectoryParams params(directory_path, 260 DriveFileSystem::CreateDirectoryParams params(directory_path,
261 directory_path, 261 directory_path,
262 false, // is_exclusive 262 false, // is_exclusive
263 false, // is_recursive 263 false, // is_recursive
264 base::Bind(&test_util::CopyErrorCodeFromFileOperationCallback, &error)); 264 base::Bind(&test_util::CopyErrorCodeFromFileOperationCallback, &error));
265 file_system_->AddNewDirectory(params, HTTP_SUCCESS, atom.Pass()); 265 file_system_->AddNewDirectory(params, gdata::HTTP_SUCCESS, atom.Pass());
266 test_util::RunBlockingPoolTask(); 266 gdata::test_util::RunBlockingPoolTask();
267 EXPECT_EQ(DRIVE_FILE_OK, error); 267 EXPECT_EQ(DRIVE_FILE_OK, error);
268 } 268 }
269 269
270 bool RemoveEntry(const FilePath& file_path) { 270 bool RemoveEntry(const FilePath& file_path) {
271 DriveFileError error; 271 DriveFileError error;
272 EXPECT_CALL(*mock_drive_service_, DeleteDocument(_, _)).Times(AnyNumber()); 272 EXPECT_CALL(*mock_drive_service_, DeleteDocument(_, _)).Times(AnyNumber());
273 file_system_->remove_operation_->Remove( 273 file_system_->remove_operation_->Remove(
274 file_path, false, 274 file_path, false,
275 base::Bind(&test_util::CopyErrorCodeFromFileOperationCallback, &error)); 275 base::Bind(&test_util::CopyErrorCodeFromFileOperationCallback, &error));
276 276
277 test_util::RunBlockingPoolTask(); 277 gdata::test_util::RunBlockingPoolTask();
278 return error == DRIVE_FILE_OK; 278 return error == DRIVE_FILE_OK;
279 } 279 }
280 280
281 FilePath GetCachePathForFile(const std::string& resource_id, 281 FilePath GetCachePathForFile(const std::string& resource_id,
282 const std::string& md5) { 282 const std::string& md5) {
283 return cache_->GetCacheFilePath(resource_id, 283 return cache_->GetCacheFilePath(resource_id,
284 md5, 284 md5,
285 DriveCache::CACHE_TYPE_TMP, 285 DriveCache::CACHE_TYPE_TMP,
286 DriveCache::CACHED_FILE_FROM_SERVER); 286 DriveCache::CACHED_FILE_FROM_SERVER);
287 } 287 }
288 288
289 // Gets entry info by path synchronously. 289 // Gets entry info by path synchronously.
290 scoped_ptr<DriveEntryProto> GetEntryInfoByPathSync( 290 scoped_ptr<DriveEntryProto> GetEntryInfoByPathSync(
291 const FilePath& file_path) { 291 const FilePath& file_path) {
292 file_system_->GetEntryInfoByPath( 292 file_system_->GetEntryInfoByPath(
293 file_path, 293 file_path,
294 base::Bind(&CallbackHelper::GetEntryInfoCallback, 294 base::Bind(&CallbackHelper::GetEntryInfoCallback,
295 callback_helper_.get())); 295 callback_helper_.get()));
296 test_util::RunBlockingPoolTask(); 296 gdata::test_util::RunBlockingPoolTask();
297 297
298 return callback_helper_->entry_proto_.Pass(); 298 return callback_helper_->entry_proto_.Pass();
299 } 299 }
300 300
301 // Gets directory info by path synchronously. 301 // Gets directory info by path synchronously.
302 scoped_ptr<DriveEntryProtoVector> ReadDirectoryByPathSync( 302 scoped_ptr<DriveEntryProtoVector> ReadDirectoryByPathSync(
303 const FilePath& file_path) { 303 const FilePath& file_path) {
304 file_system_->ReadDirectoryByPath( 304 file_system_->ReadDirectoryByPath(
305 file_path, 305 file_path,
306 base::Bind(&CallbackHelper::ReadDirectoryCallback, 306 base::Bind(&CallbackHelper::ReadDirectoryCallback,
307 callback_helper_.get())); 307 callback_helper_.get()));
308 test_util::RunBlockingPoolTask(); 308 gdata::test_util::RunBlockingPoolTask();
309 309
310 return callback_helper_->directory_entries_.Pass(); 310 return callback_helper_->directory_entries_.Pass();
311 } 311 }
312 312
313 // Returns true if an entry exists at |file_path|. 313 // Returns true if an entry exists at |file_path|.
314 bool EntryExists(const FilePath& file_path) { 314 bool EntryExists(const FilePath& file_path) {
315 return GetEntryInfoByPathSync(file_path).get(); 315 return GetEntryInfoByPathSync(file_path).get();
316 } 316 }
317 317
318 318
(...skipping 13 matching lines...) Expand all
332 DriveCacheEntry* cache_entry) { 332 DriveCacheEntry* cache_entry) {
333 bool result = false; 333 bool result = false;
334 blocking_task_runner_->PostTask( 334 blocking_task_runner_->PostTask(
335 FROM_HERE, 335 FROM_HERE,
336 base::Bind(&DriveFileSystemTest::GetCacheEntryFromOriginThreadInternal, 336 base::Bind(&DriveFileSystemTest::GetCacheEntryFromOriginThreadInternal,
337 base::Unretained(this), 337 base::Unretained(this),
338 resource_id, 338 resource_id,
339 md5, 339 md5,
340 cache_entry, 340 cache_entry,
341 &result)); 341 &result));
342 test_util::RunBlockingPoolTask(); 342 gdata::test_util::RunBlockingPoolTask();
343 return result; 343 return result;
344 } 344 }
345 345
346 // Used to implement GetCacheEntry. 346 // Used to implement GetCacheEntry.
347 void GetCacheEntryFromOriginThreadInternal( 347 void GetCacheEntryFromOriginThreadInternal(
348 const std::string& resource_id, 348 const std::string& resource_id,
349 const std::string& md5, 349 const std::string& md5,
350 DriveCacheEntry* cache_entry, 350 DriveCacheEntry* cache_entry,
351 bool* result) { 351 bool* result) {
352 *result = cache_->GetCacheEntry(resource_id, md5, cache_entry); 352 *result = cache_->GetCacheEntry(resource_id, md5, cache_entry);
(...skipping 27 matching lines...) Expand all
380 expected_error_ = expected_error; 380 expected_error_ = expected_error;
381 expected_cache_state_ = expected_cache_state; 381 expected_cache_state_ = expected_cache_state;
382 expected_sub_dir_type_ = expected_sub_dir_type; 382 expected_sub_dir_type_ = expected_sub_dir_type;
383 383
384 cache_->StoreOnUIThread( 384 cache_->StoreOnUIThread(
385 resource_id, md5, source_path, 385 resource_id, md5, source_path,
386 DriveCache::FILE_OPERATION_COPY, 386 DriveCache::FILE_OPERATION_COPY,
387 base::Bind(&DriveFileSystemTest::VerifyCacheFileState, 387 base::Bind(&DriveFileSystemTest::VerifyCacheFileState,
388 base::Unretained(this))); 388 base::Unretained(this)));
389 389
390 test_util::RunBlockingPoolTask(); 390 gdata::test_util::RunBlockingPoolTask();
391 } 391 }
392 392
393 void TestPin( 393 void TestPin(
394 const std::string& resource_id, 394 const std::string& resource_id,
395 const std::string& md5, 395 const std::string& md5,
396 DriveFileError expected_error, 396 DriveFileError expected_error,
397 int expected_cache_state, 397 int expected_cache_state,
398 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { 398 DriveCache::CacheSubDirectoryType expected_sub_dir_type) {
399 expected_error_ = expected_error; 399 expected_error_ = expected_error;
400 expected_cache_state_ = expected_cache_state; 400 expected_cache_state_ = expected_cache_state;
401 expected_sub_dir_type_ = expected_sub_dir_type; 401 expected_sub_dir_type_ = expected_sub_dir_type;
402 402
403 cache_->PinOnUIThread( 403 cache_->PinOnUIThread(
404 resource_id, md5, 404 resource_id, md5,
405 base::Bind(&DriveFileSystemTest::VerifyCacheFileState, 405 base::Bind(&DriveFileSystemTest::VerifyCacheFileState,
406 base::Unretained(this))); 406 base::Unretained(this)));
407 407
408 test_util::RunBlockingPoolTask(); 408 gdata::test_util::RunBlockingPoolTask();
409 } 409 }
410 410
411 void TestMarkDirty( 411 void TestMarkDirty(
412 const std::string& resource_id, 412 const std::string& resource_id,
413 const std::string& md5, 413 const std::string& md5,
414 DriveFileError expected_error, 414 DriveFileError expected_error,
415 int expected_cache_state, 415 int expected_cache_state,
416 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { 416 DriveCache::CacheSubDirectoryType expected_sub_dir_type) {
417 expected_error_ = expected_error; 417 expected_error_ = expected_error;
418 expected_cache_state_ = expected_cache_state; 418 expected_cache_state_ = expected_cache_state;
419 expected_sub_dir_type_ = expected_sub_dir_type; 419 expected_sub_dir_type_ = expected_sub_dir_type;
420 expect_outgoing_symlink_ = false; 420 expect_outgoing_symlink_ = false;
421 421
422 cache_->MarkDirtyOnUIThread( 422 cache_->MarkDirtyOnUIThread(
423 resource_id, 423 resource_id,
424 md5, 424 md5,
425 base::Bind(&DriveFileSystemTest::VerifyMarkDirty, 425 base::Bind(&DriveFileSystemTest::VerifyMarkDirty,
426 base::Unretained(this), 426 base::Unretained(this),
427 resource_id, 427 resource_id,
428 md5)); 428 md5));
429 429
430 test_util::RunBlockingPoolTask(); 430 gdata::test_util::RunBlockingPoolTask();
431 } 431 }
432 432
433 void VerifyMarkDirty(const std::string& resource_id, 433 void VerifyMarkDirty(const std::string& resource_id,
434 const std::string& md5, 434 const std::string& md5,
435 DriveFileError error, 435 DriveFileError error,
436 const FilePath& cache_file_path) { 436 const FilePath& cache_file_path) {
437 VerifyCacheFileState(error, resource_id, md5); 437 VerifyCacheFileState(error, resource_id, md5);
438 438
439 // Verify filename of |cache_file_path|. 439 // Verify filename of |cache_file_path|.
440 if (error == DRIVE_FILE_OK) { 440 if (error == DRIVE_FILE_OK) {
(...skipping 16 matching lines...) Expand all
457 expected_error_ = expected_error; 457 expected_error_ = expected_error;
458 expected_cache_state_ = expected_cache_state; 458 expected_cache_state_ = expected_cache_state;
459 expected_sub_dir_type_ = expected_sub_dir_type; 459 expected_sub_dir_type_ = expected_sub_dir_type;
460 expect_outgoing_symlink_ = true; 460 expect_outgoing_symlink_ = true;
461 461
462 cache_->CommitDirtyOnUIThread( 462 cache_->CommitDirtyOnUIThread(
463 resource_id, md5, 463 resource_id, md5,
464 base::Bind(&DriveFileSystemTest::VerifyCacheFileState, 464 base::Bind(&DriveFileSystemTest::VerifyCacheFileState,
465 base::Unretained(this))); 465 base::Unretained(this)));
466 466
467 test_util::RunBlockingPoolTask(); 467 gdata::test_util::RunBlockingPoolTask();
468 } 468 }
469 469
470 // Verify the file identified by |resource_id| and |md5| is in the expected 470 // Verify the file identified by |resource_id| and |md5| is in the expected
471 // cache state after |OpenFile|, that is, marked dirty and has no outgoing 471 // cache state after |OpenFile|, that is, marked dirty and has no outgoing
472 // symlink, etc. 472 // symlink, etc.
473 void VerifyCacheStateAfterOpenFile(DriveFileError error, 473 void VerifyCacheStateAfterOpenFile(DriveFileError error,
474 const std::string& resource_id, 474 const std::string& resource_id,
475 const std::string& md5, 475 const std::string& md5,
476 const FilePath& cache_file_path) { 476 const FilePath& cache_file_path) {
477 expected_error_ = DRIVE_FILE_OK; 477 expected_error_ = DRIVE_FILE_OK;
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 void SetExpectationsForGetDocumentEntry(scoped_ptr<base::Value>* document, 582 void SetExpectationsForGetDocumentEntry(scoped_ptr<base::Value>* document,
583 const std::string& resource_id) { 583 const std::string& resource_id) {
584 EXPECT_CALL(*mock_drive_service_, GetDocumentEntry(resource_id, _)) 584 EXPECT_CALL(*mock_drive_service_, GetDocumentEntry(resource_id, _))
585 .WillOnce(MockGetDocumentEntry(gdata::HTTP_SUCCESS, document)); 585 .WillOnce(MockGetDocumentEntry(gdata::HTTP_SUCCESS, document));
586 } 586 }
587 587
588 // Loads serialized proto file from GCache, and makes sure the root 588 // Loads serialized proto file from GCache, and makes sure the root
589 // filesystem has a root at 'drive' 589 // filesystem has a root at 'drive'
590 void TestLoadMetadataFromCache() { 590 void TestLoadMetadataFromCache() {
591 file_system_->LoadRootFeedFromCacheForTesting(); 591 file_system_->LoadRootFeedFromCacheForTesting();
592 test_util::RunBlockingPoolTask(); 592 gdata::test_util::RunBlockingPoolTask();
593 } 593 }
594 594
595 // Creates a proto file representing a filesystem with directories: 595 // Creates a proto file representing a filesystem with directories:
596 // drive, drive/Dir1, drive/Dir1/SubDir2 596 // drive, drive/Dir1, drive/Dir1/SubDir2
597 // and files 597 // and files
598 // drive/File1, drive/Dir1/File2, drive/Dir1/SubDir2/File3. 598 // drive/File1, drive/Dir1/File2, drive/Dir1/SubDir2/File3.
599 // Sets the changestamp to 654321, equal to that of "account_metadata.json" 599 // Sets the changestamp to 654321, equal to that of "account_metadata.json"
600 // test data, indicating the cache is holding the latest file system info. 600 // test data, indicating the cache is holding the latest file system info.
601 void SaveTestFileSystem() { 601 void SaveTestFileSystem() {
602 DriveRootDirectoryProto root; 602 DriveRootDirectoryProto root;
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after
1168 EXPECT_TRUE(EntryExists( 1168 EXPECT_TRUE(EntryExists(
1169 FilePath(FILE_PATH_LITERAL("drive/Dir1/SubDir2/File3")))); 1169 FilePath(FILE_PATH_LITERAL("drive/Dir1/SubDir2/File3"))));
1170 } 1170 }
1171 1171
1172 TEST_F(DriveFileSystemTest, CachedFeadLoadingThenServerFeedLoading) { 1172 TEST_F(DriveFileSystemTest, CachedFeadLoadingThenServerFeedLoading) {
1173 SaveTestFileSystem(); 1173 SaveTestFileSystem();
1174 1174
1175 // SaveTestFileSystem and "account_metadata.json" have the same changestamp, 1175 // SaveTestFileSystem and "account_metadata.json" have the same changestamp,
1176 // so no request for new feeds (i.e., call to GetDocuments) should happen. 1176 // so no request for new feeds (i.e., call to GetDocuments) should happen.
1177 mock_drive_service_->set_account_metadata( 1177 mock_drive_service_->set_account_metadata(
1178 test_util::LoadJSONFile("gdata/account_metadata.json").release()); 1178 gdata::test_util::LoadJSONFile("gdata/account_metadata.json").release());
1179 EXPECT_CALL(*mock_drive_service_, GetAccountMetadata(_)).Times(1); 1179 EXPECT_CALL(*mock_drive_service_, GetAccountMetadata(_)).Times(1);
1180 EXPECT_CALL(*mock_webapps_registry_, UpdateFromFeed(_)).Times(1); 1180 EXPECT_CALL(*mock_webapps_registry_, UpdateFromFeed(_)).Times(1);
1181 EXPECT_CALL(*mock_drive_service_, GetDocuments(_, _, _, _, _)).Times(0); 1181 EXPECT_CALL(*mock_drive_service_, GetDocuments(_, _, _, _, _)).Times(0);
1182 1182
1183 // Kicks loading of cached file system and query for server update. 1183 // Kicks loading of cached file system and query for server update.
1184 EXPECT_TRUE(EntryExists(FilePath(FILE_PATH_LITERAL("drive/File1")))); 1184 EXPECT_TRUE(EntryExists(FilePath(FILE_PATH_LITERAL("drive/File1"))));
1185 1185
1186 // Since the file system has verified that it holds the latest snapshot, 1186 // Since the file system has verified that it holds the latest snapshot,
1187 // it should change its state to FROM_SERVER, which admits periodic refresh. 1187 // it should change its state to FROM_SERVER, which admits periodic refresh.
1188 // To test it, call CheckForUpdates and verify it does try to check updates. 1188 // To test it, call CheckForUpdates and verify it does try to check updates.
1189 mock_drive_service_->set_account_metadata( 1189 mock_drive_service_->set_account_metadata(
1190 test_util::LoadJSONFile("gdata/account_metadata.json").release()); 1190 gdata::test_util::LoadJSONFile("gdata/account_metadata.json").release());
1191 EXPECT_CALL(*mock_drive_service_, GetAccountMetadata(_)).Times(1); 1191 EXPECT_CALL(*mock_drive_service_, GetAccountMetadata(_)).Times(1);
1192 EXPECT_CALL(*mock_webapps_registry_, UpdateFromFeed(_)).Times(1); 1192 EXPECT_CALL(*mock_webapps_registry_, UpdateFromFeed(_)).Times(1);
1193 1193
1194 file_system_->CheckForUpdates(); 1194 file_system_->CheckForUpdates();
1195 test_util::RunBlockingPoolTask(); 1195 gdata::test_util::RunBlockingPoolTask();
1196 } 1196 }
1197 1197
1198 TEST_F(DriveFileSystemTest, TransferFileFromLocalToRemote_RegularFile) { 1198 TEST_F(DriveFileSystemTest, TransferFileFromLocalToRemote_RegularFile) {
1199 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1199 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
1200 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 1200 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
1201 1201
1202 LoadRootFeedDocument("gdata/root_feed.json"); 1202 LoadRootFeedDocument("gdata/root_feed.json");
1203 1203
1204 // We'll add a file to the Drive root directory. 1204 // We'll add a file to the Drive root directory.
1205 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( 1205 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
1206 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); 1206 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1);
1207 1207
1208 FileOperationCallback callback = 1208 FileOperationCallback callback =
1209 base::Bind(&CallbackHelper::FileOperationCallback, 1209 base::Bind(&CallbackHelper::FileOperationCallback,
1210 callback_helper_.get()); 1210 callback_helper_.get());
1211 1211
1212 // Prepare a local file. 1212 // Prepare a local file.
1213 ScopedTempDir temp_dir; 1213 ScopedTempDir temp_dir;
1214 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 1214 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
1215 const FilePath local_src_file_path = temp_dir.path().Append("local.txt"); 1215 const FilePath local_src_file_path = temp_dir.path().Append("local.txt");
1216 const std::string kContent = "hello"; 1216 const std::string kContent = "hello";
1217 file_util::WriteFile(local_src_file_path, kContent.data(), kContent.size()); 1217 file_util::WriteFile(local_src_file_path, kContent.data(), kContent.size());
1218 1218
1219 // Confirm that the remote file does not exist. 1219 // Confirm that the remote file does not exist.
1220 const FilePath remote_dest_file_path(FILE_PATH_LITERAL("drive/remote.txt")); 1220 const FilePath remote_dest_file_path(FILE_PATH_LITERAL("drive/remote.txt"));
1221 EXPECT_FALSE(EntryExists(remote_dest_file_path)); 1221 EXPECT_FALSE(EntryExists(remote_dest_file_path));
1222 1222
1223 scoped_ptr<base::Value> value = 1223 scoped_ptr<base::Value> value =
1224 test_util::LoadJSONFile("gdata/document_to_download.json"); 1224 gdata::test_util::LoadJSONFile("gdata/document_to_download.json");
1225 scoped_ptr<DocumentEntry> document_entry( 1225 scoped_ptr<gdata::DocumentEntry> document_entry(
1226 DocumentEntry::ExtractAndParse(*value)); 1226 gdata::DocumentEntry::ExtractAndParse(*value));
1227 1227
1228 EXPECT_CALL(*mock_uploader_, UploadNewFile(_, _, _, _, _, _, _, _, _)) 1228 EXPECT_CALL(*mock_uploader_, UploadNewFile(_, _, _, _, _, _, _, _, _))
1229 .WillOnce(MockUploadNewFile()); 1229 .WillOnce(MockUploadNewFile());
1230 1230
1231 // Transfer the local file to Drive. 1231 // Transfer the local file to Drive.
1232 file_system_->TransferFileFromLocalToRemote( 1232 file_system_->TransferFileFromLocalToRemote(
1233 local_src_file_path, remote_dest_file_path, callback); 1233 local_src_file_path, remote_dest_file_path, callback);
1234 test_util::RunBlockingPoolTask(); 1234 gdata::test_util::RunBlockingPoolTask();
1235 1235
1236 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_); 1236 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_);
1237 1237
1238 // Now the remote file should exist. 1238 // Now the remote file should exist.
1239 EXPECT_TRUE(EntryExists(remote_dest_file_path)); 1239 EXPECT_TRUE(EntryExists(remote_dest_file_path));
1240 } 1240 }
1241 1241
1242 TEST_F(DriveFileSystemTest, TransferFileFromLocalToRemote_HostedDocument) { 1242 TEST_F(DriveFileSystemTest, TransferFileFromLocalToRemote_HostedDocument) {
1243 LoadRootFeedDocument("gdata/root_feed.json"); 1243 LoadRootFeedDocument("gdata/root_feed.json");
1244 1244
(...skipping 15 matching lines...) Expand all
1260 FILE_PATH_LITERAL("drive/Directory 1/Document 1.gdoc")); 1260 FILE_PATH_LITERAL("drive/Directory 1/Document 1.gdoc"));
1261 EXPECT_FALSE(EntryExists(remote_dest_file_path)); 1261 EXPECT_FALSE(EntryExists(remote_dest_file_path));
1262 1262
1263 // We'll add a file to "Directory 1" directory on Drive. 1263 // We'll add a file to "Directory 1" directory on Drive.
1264 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( 1264 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
1265 Eq(FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); 1265 Eq(FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1);
1266 1266
1267 // We'll copy a hosted document using CopyDocument. 1267 // We'll copy a hosted document using CopyDocument.
1268 // ".gdoc" suffix should be stripped when copying. 1268 // ".gdoc" suffix should be stripped when copying.
1269 scoped_ptr<base::Value> document = 1269 scoped_ptr<base::Value> document =
1270 test_util::LoadJSONFile("gdata/uploaded_document.json"); 1270 gdata::test_util::LoadJSONFile("gdata/uploaded_document.json");
1271 EXPECT_CALL(*mock_drive_service_, 1271 EXPECT_CALL(*mock_drive_service_,
1272 CopyDocument(kResourceId, 1272 CopyDocument(kResourceId,
1273 FILE_PATH_LITERAL("Document 1"), 1273 FILE_PATH_LITERAL("Document 1"),
1274 _)) 1274 _))
1275 .WillOnce(MockCopyDocument(gdata::HTTP_SUCCESS, &document)); 1275 .WillOnce(MockCopyDocument(gdata::HTTP_SUCCESS, &document));
1276 // We'll then add the hosted document to the destination directory. 1276 // We'll then add the hosted document to the destination directory.
1277 EXPECT_CALL(*mock_drive_service_, 1277 EXPECT_CALL(*mock_drive_service_,
1278 AddResourceToDirectory(_, _, _)).Times(1); 1278 AddResourceToDirectory(_, _, _)).Times(1);
1279 1279
1280 FileOperationCallback callback = 1280 FileOperationCallback callback =
1281 base::Bind(&CallbackHelper::FileOperationCallback, 1281 base::Bind(&CallbackHelper::FileOperationCallback,
1282 callback_helper_.get()); 1282 callback_helper_.get());
1283 1283
1284 // Transfer the local file to Drive. 1284 // Transfer the local file to Drive.
1285 file_system_->TransferFileFromLocalToRemote( 1285 file_system_->TransferFileFromLocalToRemote(
1286 local_src_file_path, remote_dest_file_path, callback); 1286 local_src_file_path, remote_dest_file_path, callback);
1287 test_util::RunBlockingPoolTask(); 1287 gdata::test_util::RunBlockingPoolTask();
1288 1288
1289 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_); 1289 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_);
1290 1290
1291 // Now the remote file should exist. 1291 // Now the remote file should exist.
1292 EXPECT_TRUE(EntryExists(remote_dest_file_path)); 1292 EXPECT_TRUE(EntryExists(remote_dest_file_path));
1293 } 1293 }
1294 1294
1295 TEST_F(DriveFileSystemTest, TransferFileFromRemoteToLocal_RegularFile) { 1295 TEST_F(DriveFileSystemTest, TransferFileFromRemoteToLocal_RegularFile) {
1296 LoadRootFeedDocument("gdata/root_feed.json"); 1296 LoadRootFeedDocument("gdata/root_feed.json");
1297 1297
(...skipping 16 matching lines...) Expand all
1314 // Pretend we have enough space. 1314 // Pretend we have enough space.
1315 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1315 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
1316 .Times(2).WillRepeatedly(Return(file_size + kMinFreeSpace)); 1316 .Times(2).WillRepeatedly(Return(file_size + kMinFreeSpace));
1317 1317
1318 const std::string remote_src_file_data = "Test file data"; 1318 const std::string remote_src_file_data = "Test file data";
1319 mock_drive_service_->set_file_data(new std::string(remote_src_file_data)); 1319 mock_drive_service_->set_file_data(new std::string(remote_src_file_data));
1320 1320
1321 // Before Download starts metadata from server will be fetched. 1321 // Before Download starts metadata from server will be fetched.
1322 // We will read content url from the result. 1322 // We will read content url from the result.
1323 scoped_ptr<base::Value> document = 1323 scoped_ptr<base::Value> document =
1324 test_util::LoadJSONFile("gdata/document_to_download.json"); 1324 gdata::test_util::LoadJSONFile("gdata/document_to_download.json");
1325 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id"); 1325 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id");
1326 1326
1327 // The file is obtained with the mock DriveService. 1327 // The file is obtained with the mock DriveService.
1328 EXPECT_CALL(*mock_drive_service_, 1328 EXPECT_CALL(*mock_drive_service_,
1329 DownloadFile(remote_src_file_path, 1329 DownloadFile(remote_src_file_path,
1330 cache_file, 1330 cache_file,
1331 GURL("https://file_content_url_changed/"), 1331 GURL("https://file_content_url_changed/"),
1332 _, _)) 1332 _, _))
1333 .Times(1); 1333 .Times(1);
1334 1334
1335 file_system_->TransferFileFromRemoteToLocal( 1335 file_system_->TransferFileFromRemoteToLocal(
1336 remote_src_file_path, local_dest_file_path, callback); 1336 remote_src_file_path, local_dest_file_path, callback);
1337 test_util::RunBlockingPoolTask(); 1337 gdata::test_util::RunBlockingPoolTask();
1338 1338
1339 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_); 1339 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_);
1340 1340
1341 std::string cache_file_data; 1341 std::string cache_file_data;
1342 EXPECT_TRUE(file_util::ReadFileToString(cache_file, &cache_file_data)); 1342 EXPECT_TRUE(file_util::ReadFileToString(cache_file, &cache_file_data));
1343 EXPECT_EQ(remote_src_file_data, cache_file_data); 1343 EXPECT_EQ(remote_src_file_data, cache_file_data);
1344 1344
1345 std::string local_dest_file_data; 1345 std::string local_dest_file_data;
1346 EXPECT_TRUE(file_util::ReadFileToString(local_dest_file_path, 1346 EXPECT_TRUE(file_util::ReadFileToString(local_dest_file_path,
1347 &local_dest_file_data)); 1347 &local_dest_file_data));
1348 EXPECT_EQ(remote_src_file_data, local_dest_file_data); 1348 EXPECT_EQ(remote_src_file_data, local_dest_file_data);
1349 } 1349 }
1350 1350
1351 TEST_F(DriveFileSystemTest, TransferFileFromRemoteToLocal_HostedDocument) { 1351 TEST_F(DriveFileSystemTest, TransferFileFromRemoteToLocal_HostedDocument) {
1352 LoadRootFeedDocument("gdata/root_feed.json"); 1352 LoadRootFeedDocument("gdata/root_feed.json");
1353 1353
1354 FileOperationCallback callback = 1354 FileOperationCallback callback =
1355 base::Bind(&CallbackHelper::FileOperationCallback, 1355 base::Bind(&CallbackHelper::FileOperationCallback,
1356 callback_helper_.get()); 1356 callback_helper_.get());
1357 1357
1358 ScopedTempDir temp_dir; 1358 ScopedTempDir temp_dir;
1359 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 1359 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
1360 FilePath local_dest_file_path = temp_dir.path().Append("local_copy.txt"); 1360 FilePath local_dest_file_path = temp_dir.path().Append("local_copy.txt");
1361 FilePath remote_src_file_path(FILE_PATH_LITERAL("drive/Document 1.gdoc")); 1361 FilePath remote_src_file_path(FILE_PATH_LITERAL("drive/Document 1.gdoc"));
1362 file_system_->TransferFileFromRemoteToLocal( 1362 file_system_->TransferFileFromRemoteToLocal(
1363 remote_src_file_path, local_dest_file_path, callback); 1363 remote_src_file_path, local_dest_file_path, callback);
1364 test_util::RunBlockingPoolTask(); 1364 gdata::test_util::RunBlockingPoolTask();
1365 1365
1366 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_); 1366 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_);
1367 1367
1368 scoped_ptr<DriveEntryProto> entry_proto = GetEntryInfoByPathSync( 1368 scoped_ptr<DriveEntryProto> entry_proto = GetEntryInfoByPathSync(
1369 remote_src_file_path); 1369 remote_src_file_path);
1370 ASSERT_TRUE(entry_proto.get()); 1370 ASSERT_TRUE(entry_proto.get());
1371 VerifyHostedDocumentJSONFile(*entry_proto, local_dest_file_path); 1371 VerifyHostedDocumentJSONFile(*entry_proto, local_dest_file_path);
1372 } 1372 }
1373 1373
1374 TEST_F(DriveFileSystemTest, CopyNotExistingFile) { 1374 TEST_F(DriveFileSystemTest, CopyNotExistingFile) {
1375 FilePath src_file_path(FILE_PATH_LITERAL("drive/Dummy file.txt")); 1375 FilePath src_file_path(FILE_PATH_LITERAL("drive/Dummy file.txt"));
1376 FilePath dest_file_path(FILE_PATH_LITERAL("drive/Test.log")); 1376 FilePath dest_file_path(FILE_PATH_LITERAL("drive/Test.log"));
1377 1377
1378 LoadRootFeedDocument("gdata/root_feed.json"); 1378 LoadRootFeedDocument("gdata/root_feed.json");
1379 1379
1380 EXPECT_FALSE(EntryExists(src_file_path)); 1380 EXPECT_FALSE(EntryExists(src_file_path));
1381 1381
1382 FileOperationCallback callback = 1382 FileOperationCallback callback =
1383 base::Bind(&CallbackHelper::FileOperationCallback, 1383 base::Bind(&CallbackHelper::FileOperationCallback,
1384 callback_helper_.get()); 1384 callback_helper_.get());
1385 1385
1386 file_system_->Copy(src_file_path, dest_file_path, callback); 1386 file_system_->Copy(src_file_path, dest_file_path, callback);
1387 test_util::RunBlockingPoolTask(); 1387 gdata::test_util::RunBlockingPoolTask();
1388 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_); 1388 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_);
1389 1389
1390 EXPECT_FALSE(EntryExists(src_file_path)); 1390 EXPECT_FALSE(EntryExists(src_file_path));
1391 EXPECT_FALSE(EntryExists(dest_file_path)); 1391 EXPECT_FALSE(EntryExists(dest_file_path));
1392 } 1392 }
1393 1393
1394 TEST_F(DriveFileSystemTest, CopyFileToNonExistingDirectory) { 1394 TEST_F(DriveFileSystemTest, CopyFileToNonExistingDirectory) {
1395 FilePath src_file_path(FILE_PATH_LITERAL("drive/File 1.txt")); 1395 FilePath src_file_path(FILE_PATH_LITERAL("drive/File 1.txt"));
1396 FilePath dest_parent_path(FILE_PATH_LITERAL("drive/Dummy")); 1396 FilePath dest_parent_path(FILE_PATH_LITERAL("drive/Dummy"));
1397 FilePath dest_file_path(FILE_PATH_LITERAL("drive/Dummy/Test.log")); 1397 FilePath dest_file_path(FILE_PATH_LITERAL("drive/Dummy/Test.log"));
1398 1398
1399 LoadRootFeedDocument("gdata/root_feed.json"); 1399 LoadRootFeedDocument("gdata/root_feed.json");
1400 1400
1401 ASSERT_TRUE(EntryExists(src_file_path)); 1401 ASSERT_TRUE(EntryExists(src_file_path));
1402 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( 1402 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync(
1403 src_file_path); 1403 src_file_path);
1404 ASSERT_TRUE(src_entry_proto.get()); 1404 ASSERT_TRUE(src_entry_proto.get());
1405 std::string src_file_path_resource_id = 1405 std::string src_file_path_resource_id =
1406 src_entry_proto->resource_id(); 1406 src_entry_proto->resource_id();
1407 EXPECT_FALSE(src_entry_proto->edit_url().empty()); 1407 EXPECT_FALSE(src_entry_proto->edit_url().empty());
1408 1408
1409 EXPECT_FALSE(EntryExists(dest_parent_path)); 1409 EXPECT_FALSE(EntryExists(dest_parent_path));
1410 1410
1411 FileOperationCallback callback = 1411 FileOperationCallback callback =
1412 base::Bind(&CallbackHelper::FileOperationCallback, 1412 base::Bind(&CallbackHelper::FileOperationCallback,
1413 callback_helper_.get()); 1413 callback_helper_.get());
1414 1414
1415 file_system_->Move(src_file_path, dest_file_path, callback); 1415 file_system_->Move(src_file_path, dest_file_path, callback);
1416 test_util::RunBlockingPoolTask(); 1416 gdata::test_util::RunBlockingPoolTask();
1417 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_); 1417 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_);
1418 1418
1419 EXPECT_TRUE(EntryExists(src_file_path)); 1419 EXPECT_TRUE(EntryExists(src_file_path));
1420 EXPECT_FALSE(EntryExists(dest_parent_path)); 1420 EXPECT_FALSE(EntryExists(dest_parent_path));
1421 EXPECT_FALSE(EntryExists(dest_file_path)); 1421 EXPECT_FALSE(EntryExists(dest_file_path));
1422 } 1422 }
1423 1423
1424 // Test the case where the parent of |dest_file_path| is an existing file, 1424 // Test the case where the parent of |dest_file_path| is an existing file,
1425 // not a directory. 1425 // not a directory.
1426 TEST_F(DriveFileSystemTest, CopyFileToInvalidPath) { 1426 TEST_F(DriveFileSystemTest, CopyFileToInvalidPath) {
(...skipping 15 matching lines...) Expand all
1442 ASSERT_TRUE(EntryExists(dest_parent_path)); 1442 ASSERT_TRUE(EntryExists(dest_parent_path));
1443 scoped_ptr<DriveEntryProto> dest_entry_proto = GetEntryInfoByPathSync( 1443 scoped_ptr<DriveEntryProto> dest_entry_proto = GetEntryInfoByPathSync(
1444 dest_parent_path); 1444 dest_parent_path);
1445 ASSERT_TRUE(dest_entry_proto.get()); 1445 ASSERT_TRUE(dest_entry_proto.get());
1446 1446
1447 FileOperationCallback callback = 1447 FileOperationCallback callback =
1448 base::Bind(&CallbackHelper::FileOperationCallback, 1448 base::Bind(&CallbackHelper::FileOperationCallback,
1449 callback_helper_.get()); 1449 callback_helper_.get());
1450 1450
1451 file_system_->Copy(src_file_path, dest_file_path, callback); 1451 file_system_->Copy(src_file_path, dest_file_path, callback);
1452 test_util::RunBlockingPoolTask(); 1452 gdata::test_util::RunBlockingPoolTask();
1453 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_A_DIRECTORY, 1453 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_A_DIRECTORY,
1454 callback_helper_->last_error_); 1454 callback_helper_->last_error_);
1455 1455
1456 EXPECT_TRUE(EntryExists(src_file_path)); 1456 EXPECT_TRUE(EntryExists(src_file_path));
1457 EXPECT_TRUE(EntryExists(src_file_path)); 1457 EXPECT_TRUE(EntryExists(src_file_path));
1458 EXPECT_TRUE(EntryExists(dest_parent_path)); 1458 EXPECT_TRUE(EntryExists(dest_parent_path));
1459 1459
1460 EXPECT_FALSE(EntryExists(dest_file_path)); 1460 EXPECT_FALSE(EntryExists(dest_file_path));
1461 } 1461 }
1462 1462
(...skipping 18 matching lines...) Expand all
1481 FILE_PATH_LITERAL("Test.log"), _)); 1481 FILE_PATH_LITERAL("Test.log"), _));
1482 1482
1483 FileOperationCallback callback = 1483 FileOperationCallback callback =
1484 base::Bind(&CallbackHelper::FileOperationCallback, 1484 base::Bind(&CallbackHelper::FileOperationCallback,
1485 callback_helper_.get()); 1485 callback_helper_.get());
1486 1486
1487 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( 1487 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
1488 Eq(FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); 1488 Eq(FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1);
1489 1489
1490 file_system_->Move(src_file_path, dest_file_path, callback); 1490 file_system_->Move(src_file_path, dest_file_path, callback);
1491 test_util::RunBlockingPoolTask(); 1491 gdata::test_util::RunBlockingPoolTask();
1492 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_); 1492 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_);
1493 1493
1494 EXPECT_FALSE(EntryExists(src_file_path)); 1494 EXPECT_FALSE(EntryExists(src_file_path));
1495 EXPECT_TRUE(EntryExists(dest_file_path)); 1495 EXPECT_TRUE(EntryExists(dest_file_path));
1496 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path)); 1496 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path));
1497 } 1497 }
1498 1498
1499 TEST_F(DriveFileSystemTest, MoveFileFromRootToSubDirectory) { 1499 TEST_F(DriveFileSystemTest, MoveFileFromRootToSubDirectory) {
1500 FilePath src_file_path(FILE_PATH_LITERAL("drive/File 1.txt")); 1500 FilePath src_file_path(FILE_PATH_LITERAL("drive/File 1.txt"));
1501 FilePath dest_parent_path(FILE_PATH_LITERAL("drive/Directory 1")); 1501 FilePath dest_parent_path(FILE_PATH_LITERAL("drive/Directory 1"));
(...skipping 28 matching lines...) Expand all
1530 base::Bind(&CallbackHelper::FileOperationCallback, 1530 base::Bind(&CallbackHelper::FileOperationCallback,
1531 callback_helper_.get()); 1531 callback_helper_.get());
1532 1532
1533 // Expect notification for both source and destination directories. 1533 // Expect notification for both source and destination directories.
1534 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( 1534 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
1535 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); 1535 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1);
1536 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( 1536 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
1537 Eq(FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); 1537 Eq(FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1);
1538 1538
1539 file_system_->Move(src_file_path, dest_file_path, callback); 1539 file_system_->Move(src_file_path, dest_file_path, callback);
1540 test_util::RunBlockingPoolTask(); 1540 gdata::test_util::RunBlockingPoolTask();
1541 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_); 1541 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_);
1542 1542
1543 EXPECT_FALSE(EntryExists(src_file_path)); 1543 EXPECT_FALSE(EntryExists(src_file_path));
1544 EXPECT_TRUE(EntryExists(dest_file_path)); 1544 EXPECT_TRUE(EntryExists(dest_file_path));
1545 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path)); 1545 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path));
1546 } 1546 }
1547 1547
1548 TEST_F(DriveFileSystemTest, MoveFileFromSubDirectoryToRoot) { 1548 TEST_F(DriveFileSystemTest, MoveFileFromSubDirectoryToRoot) {
1549 FilePath src_parent_path(FILE_PATH_LITERAL("drive/Directory 1")); 1549 FilePath src_parent_path(FILE_PATH_LITERAL("drive/Directory 1"));
1550 FilePath src_file_path( 1550 FilePath src_file_path(
(...skipping 30 matching lines...) Expand all
1581 base::Bind(&CallbackHelper::FileOperationCallback, 1581 base::Bind(&CallbackHelper::FileOperationCallback,
1582 callback_helper_.get()); 1582 callback_helper_.get());
1583 1583
1584 // Expect notification for both source and destination directories. 1584 // Expect notification for both source and destination directories.
1585 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( 1585 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
1586 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); 1586 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1);
1587 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( 1587 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
1588 Eq(FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); 1588 Eq(FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1);
1589 1589
1590 file_system_->Move(src_file_path, dest_file_path, callback); 1590 file_system_->Move(src_file_path, dest_file_path, callback);
1591 test_util::RunBlockingPoolTask(); 1591 gdata::test_util::RunBlockingPoolTask();
1592 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_); 1592 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_);
1593 1593
1594 EXPECT_FALSE(EntryExists(src_file_path)); 1594 EXPECT_FALSE(EntryExists(src_file_path));
1595 ASSERT_TRUE(EntryExists(dest_file_path)); 1595 ASSERT_TRUE(EntryExists(dest_file_path));
1596 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path)); 1596 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path));
1597 } 1597 }
1598 1598
1599 TEST_F(DriveFileSystemTest, MoveFileBetweenSubDirectories) { 1599 TEST_F(DriveFileSystemTest, MoveFileBetweenSubDirectories) {
1600 FilePath src_parent_path(FILE_PATH_LITERAL("drive/Directory 1")); 1600 FilePath src_parent_path(FILE_PATH_LITERAL("drive/Directory 1"));
1601 FilePath src_file_path( 1601 FilePath src_file_path(
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1656 // Expect notification for both source and destination directories plus 1656 // Expect notification for both source and destination directories plus
1657 // interim file path. 1657 // interim file path.
1658 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( 1658 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
1659 Eq(FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); 1659 Eq(FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1);
1660 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( 1660 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
1661 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); 1661 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1);
1662 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( 1662 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
1663 Eq(FilePath(FILE_PATH_LITERAL("drive/New Folder 1"))))).Times(1); 1663 Eq(FilePath(FILE_PATH_LITERAL("drive/New Folder 1"))))).Times(1);
1664 1664
1665 file_system_->Move(src_file_path, dest_file_path, callback); 1665 file_system_->Move(src_file_path, dest_file_path, callback);
1666 test_util::RunBlockingPoolTask(); 1666 gdata::test_util::RunBlockingPoolTask();
1667 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_); 1667 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_);
1668 1668
1669 EXPECT_FALSE(EntryExists(src_file_path)); 1669 EXPECT_FALSE(EntryExists(src_file_path));
1670 EXPECT_FALSE(EntryExists(interim_file_path)); 1670 EXPECT_FALSE(EntryExists(interim_file_path));
1671 1671
1672 EXPECT_FALSE(EntryExists(src_file_path)); 1672 EXPECT_FALSE(EntryExists(src_file_path));
1673 EXPECT_TRUE(EntryExists(dest_file_path)); 1673 EXPECT_TRUE(EntryExists(dest_file_path));
1674 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path)); 1674 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path));
1675 } 1675 }
1676 1676
1677 TEST_F(DriveFileSystemTest, MoveNotExistingFile) { 1677 TEST_F(DriveFileSystemTest, MoveNotExistingFile) {
1678 FilePath src_file_path(FILE_PATH_LITERAL("drive/Dummy file.txt")); 1678 FilePath src_file_path(FILE_PATH_LITERAL("drive/Dummy file.txt"));
1679 FilePath dest_file_path(FILE_PATH_LITERAL("drive/Test.log")); 1679 FilePath dest_file_path(FILE_PATH_LITERAL("drive/Test.log"));
1680 1680
1681 LoadRootFeedDocument("gdata/root_feed.json"); 1681 LoadRootFeedDocument("gdata/root_feed.json");
1682 1682
1683 EXPECT_FALSE(EntryExists(src_file_path)); 1683 EXPECT_FALSE(EntryExists(src_file_path));
1684 1684
1685 FileOperationCallback callback = 1685 FileOperationCallback callback =
1686 base::Bind(&CallbackHelper::FileOperationCallback, 1686 base::Bind(&CallbackHelper::FileOperationCallback,
1687 callback_helper_.get()); 1687 callback_helper_.get());
1688 1688
1689 file_system_->Move(src_file_path, dest_file_path, callback); 1689 file_system_->Move(src_file_path, dest_file_path, callback);
1690 test_util::RunBlockingPoolTask(); 1690 gdata::test_util::RunBlockingPoolTask();
1691 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_); 1691 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_);
1692 1692
1693 EXPECT_FALSE(EntryExists(src_file_path)); 1693 EXPECT_FALSE(EntryExists(src_file_path));
1694 EXPECT_FALSE(EntryExists(dest_file_path)); 1694 EXPECT_FALSE(EntryExists(dest_file_path));
1695 } 1695 }
1696 1696
1697 TEST_F(DriveFileSystemTest, MoveFileToNonExistingDirectory) { 1697 TEST_F(DriveFileSystemTest, MoveFileToNonExistingDirectory) {
1698 FilePath src_file_path(FILE_PATH_LITERAL("drive/File 1.txt")); 1698 FilePath src_file_path(FILE_PATH_LITERAL("drive/File 1.txt"));
1699 FilePath dest_parent_path(FILE_PATH_LITERAL("drive/Dummy")); 1699 FilePath dest_parent_path(FILE_PATH_LITERAL("drive/Dummy"));
1700 FilePath dest_file_path(FILE_PATH_LITERAL("drive/Dummy/Test.log")); 1700 FilePath dest_file_path(FILE_PATH_LITERAL("drive/Dummy/Test.log"));
1701 1701
1702 LoadRootFeedDocument("gdata/root_feed.json"); 1702 LoadRootFeedDocument("gdata/root_feed.json");
1703 1703
1704 ASSERT_TRUE(EntryExists(src_file_path)); 1704 ASSERT_TRUE(EntryExists(src_file_path));
1705 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( 1705 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync(
1706 src_file_path); 1706 src_file_path);
1707 ASSERT_TRUE(src_entry_proto.get()); 1707 ASSERT_TRUE(src_entry_proto.get());
1708 std::string src_file_resource_id = 1708 std::string src_file_resource_id =
1709 src_entry_proto->resource_id(); 1709 src_entry_proto->resource_id();
1710 EXPECT_FALSE(src_entry_proto->edit_url().empty()); 1710 EXPECT_FALSE(src_entry_proto->edit_url().empty());
1711 1711
1712 EXPECT_FALSE(EntryExists(dest_parent_path)); 1712 EXPECT_FALSE(EntryExists(dest_parent_path));
1713 1713
1714 FileOperationCallback callback = 1714 FileOperationCallback callback =
1715 base::Bind(&CallbackHelper::FileOperationCallback, 1715 base::Bind(&CallbackHelper::FileOperationCallback,
1716 callback_helper_.get()); 1716 callback_helper_.get());
1717 1717
1718 file_system_->Move(src_file_path, dest_file_path, callback); 1718 file_system_->Move(src_file_path, dest_file_path, callback);
1719 test_util::RunBlockingPoolTask(); 1719 gdata::test_util::RunBlockingPoolTask();
1720 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_); 1720 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_);
1721 1721
1722 1722
1723 EXPECT_FALSE(EntryExists(dest_parent_path)); 1723 EXPECT_FALSE(EntryExists(dest_parent_path));
1724 EXPECT_FALSE(EntryExists(dest_file_path)); 1724 EXPECT_FALSE(EntryExists(dest_file_path));
1725 } 1725 }
1726 1726
1727 // Test the case where the parent of |dest_file_path| is a existing file, 1727 // Test the case where the parent of |dest_file_path| is a existing file,
1728 // not a directory. 1728 // not a directory.
1729 TEST_F(DriveFileSystemTest, MoveFileToInvalidPath) { 1729 TEST_F(DriveFileSystemTest, MoveFileToInvalidPath) {
(...skipping 15 matching lines...) Expand all
1745 ASSERT_TRUE(EntryExists(dest_parent_path)); 1745 ASSERT_TRUE(EntryExists(dest_parent_path));
1746 scoped_ptr<DriveEntryProto> dest_parent_proto = GetEntryInfoByPathSync( 1746 scoped_ptr<DriveEntryProto> dest_parent_proto = GetEntryInfoByPathSync(
1747 dest_parent_path); 1747 dest_parent_path);
1748 ASSERT_TRUE(dest_parent_proto.get()); 1748 ASSERT_TRUE(dest_parent_proto.get());
1749 1749
1750 FileOperationCallback callback = 1750 FileOperationCallback callback =
1751 base::Bind(&CallbackHelper::FileOperationCallback, 1751 base::Bind(&CallbackHelper::FileOperationCallback,
1752 callback_helper_.get()); 1752 callback_helper_.get());
1753 1753
1754 file_system_->Move(src_file_path, dest_file_path, callback); 1754 file_system_->Move(src_file_path, dest_file_path, callback);
1755 test_util::RunBlockingPoolTask(); 1755 gdata::test_util::RunBlockingPoolTask();
1756 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_A_DIRECTORY, 1756 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_A_DIRECTORY,
1757 callback_helper_->last_error_); 1757 callback_helper_->last_error_);
1758 1758
1759 EXPECT_TRUE(EntryExists(src_file_path)); 1759 EXPECT_TRUE(EntryExists(src_file_path));
1760 EXPECT_TRUE(EntryExists(dest_parent_path)); 1760 EXPECT_TRUE(EntryExists(dest_parent_path));
1761 EXPECT_FALSE(EntryExists(dest_file_path)); 1761 EXPECT_FALSE(EntryExists(dest_file_path));
1762 } 1762 }
1763 1763
1764 TEST_F(DriveFileSystemTest, RemoveEntries) { 1764 TEST_F(DriveFileSystemTest, RemoveEntries) {
1765 LoadRootFeedDocument("gdata/root_feed.json"); 1765 LoadRootFeedDocument("gdata/root_feed.json");
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1805 // Try removing file in already removed subdirectory. 1805 // Try removing file in already removed subdirectory.
1806 EXPECT_FALSE(RemoveEntry(file_in_subdir)); 1806 EXPECT_FALSE(RemoveEntry(file_in_subdir));
1807 1807
1808 // Try removing non-existing file. 1808 // Try removing non-existing file.
1809 EXPECT_FALSE(RemoveEntry(nonexisting_file)); 1809 EXPECT_FALSE(RemoveEntry(nonexisting_file));
1810 1810
1811 // Try removing root file element. 1811 // Try removing root file element.
1812 EXPECT_FALSE(RemoveEntry(FilePath(FILE_PATH_LITERAL("drive")))); 1812 EXPECT_FALSE(RemoveEntry(FilePath(FILE_PATH_LITERAL("drive"))));
1813 1813
1814 // Need this to ensure OnDirectoryChanged() is run. 1814 // Need this to ensure OnDirectoryChanged() is run.
1815 test_util::RunBlockingPoolTask(); 1815 gdata::test_util::RunBlockingPoolTask();
1816 } 1816 }
1817 1817
1818 TEST_F(DriveFileSystemTest, CreateDirectory) { 1818 TEST_F(DriveFileSystemTest, CreateDirectory) {
1819 LoadRootFeedDocument("gdata/root_feed.json"); 1819 LoadRootFeedDocument("gdata/root_feed.json");
1820 1820
1821 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( 1821 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
1822 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); 1822 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1);
1823 1823
1824 // Create directory in root. 1824 // Create directory in root.
1825 FilePath dir_path(FILE_PATH_LITERAL("drive/New Folder 1")); 1825 FilePath dir_path(FILE_PATH_LITERAL("drive/New Folder 1"));
(...skipping 15 matching lines...) Expand all
1841 LoadRootFeedDocument("gdata/root_feed.json"); 1841 LoadRootFeedDocument("gdata/root_feed.json");
1842 1842
1843 DriveFileSystem::FindFirstMissingParentDirectoryResult result; 1843 DriveFileSystem::FindFirstMissingParentDirectoryResult result;
1844 1844
1845 // Create directory in root. 1845 // Create directory in root.
1846 FilePath dir_path(FILE_PATH_LITERAL("drive/New Folder 1")); 1846 FilePath dir_path(FILE_PATH_LITERAL("drive/New Folder 1"));
1847 file_system_->FindFirstMissingParentDirectory( 1847 file_system_->FindFirstMissingParentDirectory(
1848 dir_path, 1848 dir_path,
1849 base::Bind(&CopyResultFromFindFirstMissingParentDirectory, 1849 base::Bind(&CopyResultFromFindFirstMissingParentDirectory,
1850 &result)); 1850 &result));
1851 test_util::RunBlockingPoolTask(); 1851 gdata::test_util::RunBlockingPoolTask();
1852 EXPECT_EQ(DriveFileSystem::FIND_FIRST_FOUND_MISSING, result.error); 1852 EXPECT_EQ(DriveFileSystem::FIND_FIRST_FOUND_MISSING, result.error);
1853 EXPECT_EQ(FilePath(FILE_PATH_LITERAL("drive/New Folder 1")), 1853 EXPECT_EQ(FilePath(FILE_PATH_LITERAL("drive/New Folder 1")),
1854 result.first_missing_parent_path); 1854 result.first_missing_parent_path);
1855 EXPECT_TRUE(result.last_dir_content_url.is_empty()); // root directory. 1855 EXPECT_TRUE(result.last_dir_content_url.is_empty()); // root directory.
1856 1856
1857 // Missing folders in subdir of an existing folder. 1857 // Missing folders in subdir of an existing folder.
1858 FilePath dir_path2(FILE_PATH_LITERAL("drive/Directory 1/New Folder 2")); 1858 FilePath dir_path2(FILE_PATH_LITERAL("drive/Directory 1/New Folder 2"));
1859 file_system_->FindFirstMissingParentDirectory( 1859 file_system_->FindFirstMissingParentDirectory(
1860 dir_path2, 1860 dir_path2,
1861 base::Bind(&CopyResultFromFindFirstMissingParentDirectory, 1861 base::Bind(&CopyResultFromFindFirstMissingParentDirectory,
1862 &result)); 1862 &result));
1863 test_util::RunBlockingPoolTask(); 1863 gdata::test_util::RunBlockingPoolTask();
1864 EXPECT_EQ(DriveFileSystem::FIND_FIRST_FOUND_MISSING, result.error); 1864 EXPECT_EQ(DriveFileSystem::FIND_FIRST_FOUND_MISSING, result.error);
1865 EXPECT_EQ(FilePath(FILE_PATH_LITERAL("drive/Directory 1/New Folder 2")), 1865 EXPECT_EQ(FilePath(FILE_PATH_LITERAL("drive/Directory 1/New Folder 2")),
1866 result.first_missing_parent_path); 1866 result.first_missing_parent_path);
1867 EXPECT_FALSE(result.last_dir_content_url.is_empty()); // non-root dir. 1867 EXPECT_FALSE(result.last_dir_content_url.is_empty()); // non-root dir.
1868 1868
1869 // Missing two folders on the path. 1869 // Missing two folders on the path.
1870 FilePath dir_path3 = dir_path2.Append(FILE_PATH_LITERAL("Another Folder")); 1870 FilePath dir_path3 = dir_path2.Append(FILE_PATH_LITERAL("Another Folder"));
1871 file_system_->FindFirstMissingParentDirectory( 1871 file_system_->FindFirstMissingParentDirectory(
1872 dir_path3, 1872 dir_path3,
1873 base::Bind(&CopyResultFromFindFirstMissingParentDirectory, 1873 base::Bind(&CopyResultFromFindFirstMissingParentDirectory,
1874 &result)); 1874 &result));
1875 test_util::RunBlockingPoolTask(); 1875 gdata::test_util::RunBlockingPoolTask();
1876 EXPECT_EQ(DriveFileSystem::FIND_FIRST_FOUND_MISSING, result.error); 1876 EXPECT_EQ(DriveFileSystem::FIND_FIRST_FOUND_MISSING, result.error);
1877 EXPECT_EQ(FilePath(FILE_PATH_LITERAL("drive/Directory 1/New Folder 2")), 1877 EXPECT_EQ(FilePath(FILE_PATH_LITERAL("drive/Directory 1/New Folder 2")),
1878 result.first_missing_parent_path); 1878 result.first_missing_parent_path);
1879 EXPECT_FALSE(result.last_dir_content_url.is_empty()); // non-root dir. 1879 EXPECT_FALSE(result.last_dir_content_url.is_empty()); // non-root dir.
1880 1880
1881 // Folders on top of an existing file. 1881 // Folders on top of an existing file.
1882 file_system_->FindFirstMissingParentDirectory( 1882 file_system_->FindFirstMissingParentDirectory(
1883 FilePath(FILE_PATH_LITERAL("drive/File 1.txt/BadDir")), 1883 FilePath(FILE_PATH_LITERAL("drive/File 1.txt/BadDir")),
1884 base::Bind(&CopyResultFromFindFirstMissingParentDirectory, 1884 base::Bind(&CopyResultFromFindFirstMissingParentDirectory,
1885 &result)); 1885 &result));
1886 test_util::RunBlockingPoolTask(); 1886 gdata::test_util::RunBlockingPoolTask();
1887 EXPECT_EQ(DriveFileSystem::FIND_FIRST_FOUND_INVALID, result.error); 1887 EXPECT_EQ(DriveFileSystem::FIND_FIRST_FOUND_INVALID, result.error);
1888 1888
1889 // Existing folder. 1889 // Existing folder.
1890 file_system_->FindFirstMissingParentDirectory( 1890 file_system_->FindFirstMissingParentDirectory(
1891 FilePath(FILE_PATH_LITERAL("drive/Directory 1")), 1891 FilePath(FILE_PATH_LITERAL("drive/Directory 1")),
1892 base::Bind(&CopyResultFromFindFirstMissingParentDirectory, 1892 base::Bind(&CopyResultFromFindFirstMissingParentDirectory,
1893 &result)); 1893 &result));
1894 test_util::RunBlockingPoolTask(); 1894 gdata::test_util::RunBlockingPoolTask();
1895 EXPECT_EQ(DriveFileSystem::FIND_FIRST_DIRECTORY_ALREADY_PRESENT, 1895 EXPECT_EQ(DriveFileSystem::FIND_FIRST_DIRECTORY_ALREADY_PRESENT,
1896 result.error); 1896 result.error);
1897 } 1897 }
1898 1898
1899 // Create a directory through the document service 1899 // Create a directory through the document service
1900 TEST_F(DriveFileSystemTest, CreateDirectoryWithService) { 1900 TEST_F(DriveFileSystemTest, CreateDirectoryWithService) {
1901 LoadRootFeedDocument("gdata/root_feed.json"); 1901 LoadRootFeedDocument("gdata/root_feed.json");
1902 EXPECT_CALL(*mock_drive_service_, 1902 EXPECT_CALL(*mock_drive_service_,
1903 CreateDirectory(_, "Sample Directory Title", _)).Times(1); 1903 CreateDirectory(_, "Sample Directory Title", _)).Times(1);
1904 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( 1904 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
1905 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); 1905 Eq(FilePath(FILE_PATH_LITERAL("drive"))))).Times(1);
1906 1906
1907 // Set last error so it's not a valid error code. 1907 // Set last error so it's not a valid error code.
1908 callback_helper_->last_error_ = static_cast<DriveFileError>(1); 1908 callback_helper_->last_error_ = static_cast<DriveFileError>(1);
1909 file_system_->CreateDirectory( 1909 file_system_->CreateDirectory(
1910 FilePath(FILE_PATH_LITERAL("drive/Sample Directory Title")), 1910 FilePath(FILE_PATH_LITERAL("drive/Sample Directory Title")),
1911 false, // is_exclusive 1911 false, // is_exclusive
1912 true, // is_recursive 1912 true, // is_recursive
1913 base::Bind(&CallbackHelper::FileOperationCallback, 1913 base::Bind(&CallbackHelper::FileOperationCallback,
1914 callback_helper_.get())); 1914 callback_helper_.get()));
1915 test_util::RunBlockingPoolTask(); 1915 gdata::test_util::RunBlockingPoolTask();
1916 // TODO(gspencer): Uncomment this when we get a blob that 1916 // TODO(gspencer): Uncomment this when we get a blob that
1917 // works that can be returned from the mock. 1917 // works that can be returned from the mock.
1918 // EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_); 1918 // EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_);
1919 } 1919 }
1920 1920
1921 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_EnoughSpace) { 1921 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_EnoughSpace) {
1922 LoadRootFeedDocument("gdata/root_feed.json"); 1922 LoadRootFeedDocument("gdata/root_feed.json");
1923 1923
1924 GetFileCallback callback = 1924 GetFileCallback callback =
1925 base::Bind(&CallbackHelper::GetFileCallback, 1925 base::Bind(&CallbackHelper::GetFileCallback,
1926 callback_helper_.get()); 1926 callback_helper_.get());
1927 1927
1928 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); 1928 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt"));
1929 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); 1929 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root));
1930 FilePath downloaded_file = GetCachePathForFile( 1930 FilePath downloaded_file = GetCachePathForFile(
1931 entry_proto->resource_id(), 1931 entry_proto->resource_id(),
1932 entry_proto->file_specific_info().file_md5()); 1932 entry_proto->file_specific_info().file_md5());
1933 const int64 file_size = entry_proto->file_info().size(); 1933 const int64 file_size = entry_proto->file_info().size();
1934 1934
1935 // Pretend we have enough space. 1935 // Pretend we have enough space.
1936 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1936 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
1937 .Times(2).WillRepeatedly(Return(file_size + kMinFreeSpace)); 1937 .Times(2).WillRepeatedly(Return(file_size + kMinFreeSpace));
1938 1938
1939 // Before Download starts metadata from server will be fetched. 1939 // Before Download starts metadata from server will be fetched.
1940 // We will read content url from the result. 1940 // We will read content url from the result.
1941 scoped_ptr<base::Value> document = 1941 scoped_ptr<base::Value> document =
1942 test_util::LoadJSONFile("gdata/document_to_download.json"); 1942 gdata::test_util::LoadJSONFile("gdata/document_to_download.json");
1943 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id"); 1943 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id");
1944 1944
1945 // The file is obtained with the mock DriveService. 1945 // The file is obtained with the mock DriveService.
1946 EXPECT_CALL(*mock_drive_service_, 1946 EXPECT_CALL(*mock_drive_service_,
1947 DownloadFile(file_in_root, 1947 DownloadFile(file_in_root,
1948 downloaded_file, 1948 downloaded_file,
1949 GURL("https://file_content_url_changed/"), 1949 GURL("https://file_content_url_changed/"),
1950 _, _)) 1950 _, _))
1951 .Times(1); 1951 .Times(1);
1952 1952
1953 file_system_->GetFileByPath(file_in_root, callback, 1953 file_system_->GetFileByPath(file_in_root, callback,
1954 GetContentCallback()); 1954 gdata::GetContentCallback());
1955 test_util::RunBlockingPoolTask(); 1955 gdata::test_util::RunBlockingPoolTask();
1956 1956
1957 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_); 1957 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_);
1958 EXPECT_EQ(REGULAR_FILE, callback_helper_->file_type_); 1958 EXPECT_EQ(REGULAR_FILE, callback_helper_->file_type_);
1959 EXPECT_EQ(downloaded_file.value(), 1959 EXPECT_EQ(downloaded_file.value(),
1960 callback_helper_->download_path_.value()); 1960 callback_helper_->download_path_.value());
1961 } 1961 }
1962 1962
1963 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_NoSpaceAtAll) { 1963 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_NoSpaceAtAll) {
1964 LoadRootFeedDocument("gdata/root_feed.json"); 1964 LoadRootFeedDocument("gdata/root_feed.json");
1965 1965
1966 GetFileCallback callback = 1966 GetFileCallback callback =
1967 base::Bind(&CallbackHelper::GetFileCallback, 1967 base::Bind(&CallbackHelper::GetFileCallback,
1968 callback_helper_.get()); 1968 callback_helper_.get());
1969 1969
1970 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); 1970 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt"));
1971 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); 1971 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root));
1972 FilePath downloaded_file = GetCachePathForFile( 1972 FilePath downloaded_file = GetCachePathForFile(
1973 entry_proto->resource_id(), 1973 entry_proto->resource_id(),
1974 entry_proto->file_specific_info().file_md5()); 1974 entry_proto->file_specific_info().file_md5());
1975 1975
1976 // Pretend we have no space at all. 1976 // Pretend we have no space at all.
1977 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1977 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
1978 .Times(2).WillRepeatedly(Return(0)); 1978 .Times(2).WillRepeatedly(Return(0));
1979 1979
1980 // Before Download starts metadata from server will be fetched. 1980 // Before Download starts metadata from server will be fetched.
1981 // We will read content url from the result. 1981 // We will read content url from the result.
1982 scoped_ptr<base::Value> document = 1982 scoped_ptr<base::Value> document =
1983 test_util::LoadJSONFile("gdata/document_to_download.json"); 1983 gdata::test_util::LoadJSONFile("gdata/document_to_download.json");
1984 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id"); 1984 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id");
1985 1985
1986 // The file is not obtained with the mock DriveService, because of no space. 1986 // The file is not obtained with the mock DriveService, because of no space.
1987 EXPECT_CALL(*mock_drive_service_, 1987 EXPECT_CALL(*mock_drive_service_,
1988 DownloadFile(file_in_root, 1988 DownloadFile(file_in_root,
1989 downloaded_file, 1989 downloaded_file,
1990 GURL("https://file_content_url_changed/"), 1990 GURL("https://file_content_url_changed/"),
1991 _, _)) 1991 _, _))
1992 .Times(0); 1992 .Times(0);
1993 1993
1994 file_system_->GetFileByPath(file_in_root, callback, 1994 file_system_->GetFileByPath(file_in_root, callback,
1995 GetContentCallback()); 1995 gdata::GetContentCallback());
1996 test_util::RunBlockingPoolTask(); 1996 gdata::test_util::RunBlockingPoolTask();
1997 1997
1998 EXPECT_EQ(DRIVE_FILE_ERROR_NO_SPACE, 1998 EXPECT_EQ(DRIVE_FILE_ERROR_NO_SPACE,
1999 callback_helper_->last_error_); 1999 callback_helper_->last_error_);
2000 } 2000 }
2001 2001
2002 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_NoEnoughSpaceButCanFreeUp) { 2002 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_NoEnoughSpaceButCanFreeUp) {
2003 LoadRootFeedDocument("gdata/root_feed.json"); 2003 LoadRootFeedDocument("gdata/root_feed.json");
2004 2004
2005 GetFileCallback callback = 2005 GetFileCallback callback =
2006 base::Bind(&CallbackHelper::GetFileCallback, 2006 base::Bind(&CallbackHelper::GetFileCallback,
(...skipping 11 matching lines...) Expand all
2018 // the disk space was freed up by removing temporary files. 2018 // the disk space was freed up by removing temporary files.
2019 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 2019 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
2020 .WillOnce(Return(file_size + kMinFreeSpace)) 2020 .WillOnce(Return(file_size + kMinFreeSpace))
2021 .WillOnce(Return(0)) 2021 .WillOnce(Return(0))
2022 .WillOnce(Return(file_size + kMinFreeSpace)) 2022 .WillOnce(Return(file_size + kMinFreeSpace))
2023 .WillOnce(Return(file_size + kMinFreeSpace)); 2023 .WillOnce(Return(file_size + kMinFreeSpace));
2024 2024
2025 // Store something in the temporary cache directory. 2025 // Store something in the temporary cache directory.
2026 TestStoreToCache("<resource_id>", 2026 TestStoreToCache("<resource_id>",
2027 "<md5>", 2027 "<md5>",
2028 test_util::GetTestFilePath("gdata/root_feed.json"), 2028 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
2029 DRIVE_FILE_OK, 2029 DRIVE_FILE_OK,
2030 test_util::TEST_CACHE_STATE_PRESENT, 2030 test_util::TEST_CACHE_STATE_PRESENT,
2031 DriveCache::CACHE_TYPE_TMP); 2031 DriveCache::CACHE_TYPE_TMP);
2032 ASSERT_TRUE(CacheEntryExists("<resource_id>", "<md5>")); 2032 ASSERT_TRUE(CacheEntryExists("<resource_id>", "<md5>"));
2033 ASSERT_TRUE(CacheFileExists("<resource_id>", "<md5>")); 2033 ASSERT_TRUE(CacheFileExists("<resource_id>", "<md5>"));
2034 2034
2035 // Before Download starts metadata from server will be fetched. 2035 // Before Download starts metadata from server will be fetched.
2036 // We will read content url from the result. 2036 // We will read content url from the result.
2037 scoped_ptr<base::Value> document = 2037 scoped_ptr<base::Value> document =
2038 test_util::LoadJSONFile("gdata/document_to_download.json"); 2038 gdata::test_util::LoadJSONFile("gdata/document_to_download.json");
2039 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id"); 2039 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id");
2040 2040
2041 // The file is obtained with the mock DriveService, because of we freed up the 2041 // The file is obtained with the mock DriveService, because of we freed up the
2042 // space. 2042 // space.
2043 EXPECT_CALL(*mock_drive_service_, 2043 EXPECT_CALL(*mock_drive_service_,
2044 DownloadFile(file_in_root, 2044 DownloadFile(file_in_root,
2045 downloaded_file, 2045 downloaded_file,
2046 GURL("https://file_content_url_changed/"), 2046 GURL("https://file_content_url_changed/"),
2047 _, _)) 2047 _, _))
2048 .Times(1); 2048 .Times(1);
2049 2049
2050 file_system_->GetFileByPath(file_in_root, callback, 2050 file_system_->GetFileByPath(file_in_root, callback,
2051 GetContentCallback()); 2051 gdata::GetContentCallback());
2052 test_util::RunBlockingPoolTask(); 2052 gdata::test_util::RunBlockingPoolTask();
2053 2053
2054 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_); 2054 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_);
2055 EXPECT_EQ(REGULAR_FILE, callback_helper_->file_type_); 2055 EXPECT_EQ(REGULAR_FILE, callback_helper_->file_type_);
2056 EXPECT_EQ(downloaded_file.value(), 2056 EXPECT_EQ(downloaded_file.value(),
2057 callback_helper_->download_path_.value()); 2057 callback_helper_->download_path_.value());
2058 2058
2059 // The file should be removed in order to free up space, and the cache 2059 // The file should be removed in order to free up space, and the cache
2060 // entry should also be removed. 2060 // entry should also be removed.
2061 ASSERT_FALSE(CacheEntryExists("<resource_id>", "<md5>")); 2061 ASSERT_FALSE(CacheEntryExists("<resource_id>", "<md5>"));
2062 ASSERT_FALSE(CacheFileExists("<resource_id>", "<md5>")); 2062 ASSERT_FALSE(CacheFileExists("<resource_id>", "<md5>"));
(...skipping 18 matching lines...) Expand all
2081 // the disk space becomes full after the file is downloaded for some reason 2081 // the disk space becomes full after the file is downloaded for some reason
2082 // (ex. the actual file was larger than the expected size). 2082 // (ex. the actual file was larger than the expected size).
2083 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 2083 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
2084 .WillOnce(Return(file_size + kMinFreeSpace)) 2084 .WillOnce(Return(file_size + kMinFreeSpace))
2085 .WillOnce(Return(kMinFreeSpace - 1)) 2085 .WillOnce(Return(kMinFreeSpace - 1))
2086 .WillOnce(Return(kMinFreeSpace - 1)); 2086 .WillOnce(Return(kMinFreeSpace - 1));
2087 2087
2088 // Before Download starts metadata from server will be fetched. 2088 // Before Download starts metadata from server will be fetched.
2089 // We will read content url from the result. 2089 // We will read content url from the result.
2090 scoped_ptr<base::Value> document = 2090 scoped_ptr<base::Value> document =
2091 test_util::LoadJSONFile("gdata/document_to_download.json"); 2091 gdata::test_util::LoadJSONFile("gdata/document_to_download.json");
2092 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id"); 2092 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id");
2093 2093
2094 // The file is obtained with the mock DriveService. 2094 // The file is obtained with the mock DriveService.
2095 EXPECT_CALL(*mock_drive_service_, 2095 EXPECT_CALL(*mock_drive_service_,
2096 DownloadFile(file_in_root, 2096 DownloadFile(file_in_root,
2097 downloaded_file, 2097 downloaded_file,
2098 GURL("https://file_content_url_changed/"), 2098 GURL("https://file_content_url_changed/"),
2099 _, _)) 2099 _, _))
2100 .Times(1); 2100 .Times(1);
2101 2101
2102 file_system_->GetFileByPath(file_in_root, callback, 2102 file_system_->GetFileByPath(file_in_root, callback,
2103 GetContentCallback()); 2103 gdata::GetContentCallback());
2104 test_util::RunBlockingPoolTask(); 2104 gdata::test_util::RunBlockingPoolTask();
2105 2105
2106 EXPECT_EQ(DRIVE_FILE_ERROR_NO_SPACE, 2106 EXPECT_EQ(DRIVE_FILE_ERROR_NO_SPACE,
2107 callback_helper_->last_error_); 2107 callback_helper_->last_error_);
2108 } 2108 }
2109 2109
2110 TEST_F(DriveFileSystemTest, GetFileByPath_FromCache) { 2110 TEST_F(DriveFileSystemTest, GetFileByPath_FromCache) {
2111 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 2111 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
2112 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 2112 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
2113 2113
2114 LoadRootFeedDocument("gdata/root_feed.json"); 2114 LoadRootFeedDocument("gdata/root_feed.json");
2115 2115
2116 GetFileCallback callback = 2116 GetFileCallback callback =
2117 base::Bind(&CallbackHelper::GetFileCallback, 2117 base::Bind(&CallbackHelper::GetFileCallback,
2118 callback_helper_.get()); 2118 callback_helper_.get());
2119 2119
2120 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); 2120 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt"));
2121 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); 2121 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root));
2122 FilePath downloaded_file = GetCachePathForFile( 2122 FilePath downloaded_file = GetCachePathForFile(
2123 entry_proto->resource_id(), 2123 entry_proto->resource_id(),
2124 entry_proto->file_specific_info().file_md5()); 2124 entry_proto->file_specific_info().file_md5());
2125 2125
2126 // Store something as cached version of this file. 2126 // Store something as cached version of this file.
2127 TestStoreToCache(entry_proto->resource_id(), 2127 TestStoreToCache(entry_proto->resource_id(),
2128 entry_proto->file_specific_info().file_md5(), 2128 entry_proto->file_specific_info().file_md5(),
2129 test_util::GetTestFilePath("gdata/root_feed.json"), 2129 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
2130 DRIVE_FILE_OK, 2130 DRIVE_FILE_OK,
2131 test_util::TEST_CACHE_STATE_PRESENT, 2131 test_util::TEST_CACHE_STATE_PRESENT,
2132 DriveCache::CACHE_TYPE_TMP); 2132 DriveCache::CACHE_TYPE_TMP);
2133 2133
2134 // Make sure we don't fetch metadata for downloading file. 2134 // Make sure we don't fetch metadata for downloading file.
2135 EXPECT_CALL(*mock_drive_service_, GetDocumentEntry(_, _)).Times(0); 2135 EXPECT_CALL(*mock_drive_service_, GetDocumentEntry(_, _)).Times(0);
2136 2136
2137 // Make sure we don't call downloads at all. 2137 // Make sure we don't call downloads at all.
2138 EXPECT_CALL(*mock_drive_service_, 2138 EXPECT_CALL(*mock_drive_service_,
2139 DownloadFile(file_in_root, 2139 DownloadFile(file_in_root,
2140 downloaded_file, 2140 downloaded_file,
2141 GURL("https://file_content_url_changed/"), 2141 GURL("https://file_content_url_changed/"),
2142 _, _)) 2142 _, _))
2143 .Times(0); 2143 .Times(0);
2144 2144
2145 file_system_->GetFileByPath(file_in_root, callback, 2145 file_system_->GetFileByPath(file_in_root, callback,
2146 GetContentCallback()); 2146 gdata::GetContentCallback());
2147 test_util::RunBlockingPoolTask(); 2147 gdata::test_util::RunBlockingPoolTask();
2148 2148
2149 EXPECT_EQ(REGULAR_FILE, callback_helper_->file_type_); 2149 EXPECT_EQ(REGULAR_FILE, callback_helper_->file_type_);
2150 EXPECT_EQ(downloaded_file.value(), 2150 EXPECT_EQ(downloaded_file.value(),
2151 callback_helper_->download_path_.value()); 2151 callback_helper_->download_path_.value());
2152 } 2152 }
2153 2153
2154 TEST_F(DriveFileSystemTest, GetFileByPath_HostedDocument) { 2154 TEST_F(DriveFileSystemTest, GetFileByPath_HostedDocument) {
2155 LoadRootFeedDocument("gdata/root_feed.json"); 2155 LoadRootFeedDocument("gdata/root_feed.json");
2156 2156
2157 GetFileCallback callback = 2157 GetFileCallback callback =
2158 base::Bind(&CallbackHelper::GetFileCallback, 2158 base::Bind(&CallbackHelper::GetFileCallback,
2159 callback_helper_.get()); 2159 callback_helper_.get());
2160 2160
2161 FilePath file_in_root(FILE_PATH_LITERAL("drive/Document 1.gdoc")); 2161 FilePath file_in_root(FILE_PATH_LITERAL("drive/Document 1.gdoc"));
2162 scoped_ptr<DriveEntryProto> src_entry_proto = 2162 scoped_ptr<DriveEntryProto> src_entry_proto =
2163 GetEntryInfoByPathSync(file_in_root); 2163 GetEntryInfoByPathSync(file_in_root);
2164 ASSERT_TRUE(src_entry_proto.get()); 2164 ASSERT_TRUE(src_entry_proto.get());
2165 2165
2166 file_system_->GetFileByPath(file_in_root, callback, 2166 file_system_->GetFileByPath(file_in_root, callback,
2167 GetContentCallback()); 2167 gdata::GetContentCallback());
2168 test_util::RunBlockingPoolTask(); 2168 gdata::test_util::RunBlockingPoolTask();
2169 2169
2170 EXPECT_EQ(HOSTED_DOCUMENT, callback_helper_->file_type_); 2170 EXPECT_EQ(HOSTED_DOCUMENT, callback_helper_->file_type_);
2171 EXPECT_FALSE(callback_helper_->download_path_.empty()); 2171 EXPECT_FALSE(callback_helper_->download_path_.empty());
2172 2172
2173 ASSERT_TRUE(src_entry_proto.get()); 2173 ASSERT_TRUE(src_entry_proto.get());
2174 VerifyHostedDocumentJSONFile(*src_entry_proto, 2174 VerifyHostedDocumentJSONFile(*src_entry_proto,
2175 callback_helper_->download_path_); 2175 callback_helper_->download_path_);
2176 } 2176 }
2177 2177
2178 TEST_F(DriveFileSystemTest, GetFileByResourceId) { 2178 TEST_F(DriveFileSystemTest, GetFileByResourceId) {
2179 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 2179 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
2180 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 2180 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
2181 2181
2182 LoadRootFeedDocument("gdata/root_feed.json"); 2182 LoadRootFeedDocument("gdata/root_feed.json");
2183 2183
2184 GetFileCallback callback = 2184 GetFileCallback callback =
2185 base::Bind(&CallbackHelper::GetFileCallback, 2185 base::Bind(&CallbackHelper::GetFileCallback,
2186 callback_helper_.get()); 2186 callback_helper_.get());
2187 2187
2188 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); 2188 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt"));
2189 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); 2189 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root));
2190 FilePath downloaded_file = GetCachePathForFile( 2190 FilePath downloaded_file = GetCachePathForFile(
2191 entry_proto->resource_id(), 2191 entry_proto->resource_id(),
2192 entry_proto->file_specific_info().file_md5()); 2192 entry_proto->file_specific_info().file_md5());
2193 2193
2194 // Before Download starts metadata from server will be fetched. 2194 // Before Download starts metadata from server will be fetched.
2195 // We will read content url from the result. 2195 // We will read content url from the result.
2196 scoped_ptr<base::Value> document = 2196 scoped_ptr<base::Value> document =
2197 test_util::LoadJSONFile("gdata/document_to_download.json"); 2197 gdata::test_util::LoadJSONFile("gdata/document_to_download.json");
2198 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id"); 2198 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id");
2199 2199
2200 // The file is obtained with the mock DriveService, because it's not stored in 2200 // The file is obtained with the mock DriveService, because it's not stored in
2201 // the cache. 2201 // the cache.
2202 EXPECT_CALL(*mock_drive_service_, 2202 EXPECT_CALL(*mock_drive_service_,
2203 DownloadFile(file_in_root, 2203 DownloadFile(file_in_root,
2204 downloaded_file, 2204 downloaded_file,
2205 GURL("https://file_content_url_changed/"), 2205 GURL("https://file_content_url_changed/"),
2206 _, _)) 2206 _, _))
2207 .Times(1); 2207 .Times(1);
2208 2208
2209 file_system_->GetFileByResourceId(entry_proto->resource_id(), 2209 file_system_->GetFileByResourceId(entry_proto->resource_id(),
2210 callback, 2210 callback,
2211 GetContentCallback()); 2211 gdata::GetContentCallback());
2212 test_util::RunBlockingPoolTask(); 2212 gdata::test_util::RunBlockingPoolTask();
2213 2213
2214 EXPECT_EQ(REGULAR_FILE, callback_helper_->file_type_); 2214 EXPECT_EQ(REGULAR_FILE, callback_helper_->file_type_);
2215 EXPECT_EQ(downloaded_file.value(), 2215 EXPECT_EQ(downloaded_file.value(),
2216 callback_helper_->download_path_.value()); 2216 callback_helper_->download_path_.value());
2217 } 2217 }
2218 2218
2219 TEST_F(DriveFileSystemTest, GetFileByResourceId_FromCache) { 2219 TEST_F(DriveFileSystemTest, GetFileByResourceId_FromCache) {
2220 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 2220 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
2221 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 2221 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
2222 2222
2223 LoadRootFeedDocument("gdata/root_feed.json"); 2223 LoadRootFeedDocument("gdata/root_feed.json");
2224 2224
2225 GetFileCallback callback = 2225 GetFileCallback callback =
2226 base::Bind(&CallbackHelper::GetFileCallback, 2226 base::Bind(&CallbackHelper::GetFileCallback,
2227 callback_helper_.get()); 2227 callback_helper_.get());
2228 2228
2229 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); 2229 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt"));
2230 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); 2230 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root));
2231 FilePath downloaded_file = GetCachePathForFile( 2231 FilePath downloaded_file = GetCachePathForFile(
2232 entry_proto->resource_id(), 2232 entry_proto->resource_id(),
2233 entry_proto->file_specific_info().file_md5()); 2233 entry_proto->file_specific_info().file_md5());
2234 2234
2235 // Store something as cached version of this file. 2235 // Store something as cached version of this file.
2236 TestStoreToCache(entry_proto->resource_id(), 2236 TestStoreToCache(entry_proto->resource_id(),
2237 entry_proto->file_specific_info().file_md5(), 2237 entry_proto->file_specific_info().file_md5(),
2238 test_util::GetTestFilePath("gdata/root_feed.json"), 2238 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
2239 DRIVE_FILE_OK, 2239 DRIVE_FILE_OK,
2240 test_util::TEST_CACHE_STATE_PRESENT, 2240 test_util::TEST_CACHE_STATE_PRESENT,
2241 DriveCache::CACHE_TYPE_TMP); 2241 DriveCache::CACHE_TYPE_TMP);
2242 2242
2243 // The file is obtained from the cache. 2243 // The file is obtained from the cache.
2244 // Make sure we don't call downloads at all. 2244 // Make sure we don't call downloads at all.
2245 EXPECT_CALL(*mock_drive_service_, DownloadFile(_, _, _, _, _)) 2245 EXPECT_CALL(*mock_drive_service_, DownloadFile(_, _, _, _, _))
2246 .Times(0); 2246 .Times(0);
2247 2247
2248 file_system_->GetFileByResourceId(entry_proto->resource_id(), 2248 file_system_->GetFileByResourceId(entry_proto->resource_id(),
2249 callback, 2249 callback,
2250 GetContentCallback()); 2250 gdata::GetContentCallback());
2251 test_util::RunBlockingPoolTask(); 2251 gdata::test_util::RunBlockingPoolTask();
2252 2252
2253 EXPECT_EQ(REGULAR_FILE, callback_helper_->file_type_); 2253 EXPECT_EQ(REGULAR_FILE, callback_helper_->file_type_);
2254 EXPECT_EQ(downloaded_file.value(), 2254 EXPECT_EQ(downloaded_file.value(),
2255 callback_helper_->download_path_.value()); 2255 callback_helper_->download_path_.value());
2256 } 2256 }
2257 2257
2258 TEST_F(DriveFileSystemTest, UpdateFileByResourceId_PersistentFile) { 2258 TEST_F(DriveFileSystemTest, UpdateFileByResourceId_PersistentFile) {
2259 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 2259 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
2260 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 2260 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
2261 2261
(...skipping 14 matching lines...) Expand all
2276 2276
2277 // First store a file to cache. A cache file will be created at: 2277 // First store a file to cache. A cache file will be created at:
2278 // GCache/v1/persistent/<kResourceId>.<kMd5> 2278 // GCache/v1/persistent/<kResourceId>.<kMd5>
2279 const FilePath original_cache_file_path = 2279 const FilePath original_cache_file_path =
2280 DriveCache::GetCacheRootPath(profile_.get()) 2280 DriveCache::GetCacheRootPath(profile_.get())
2281 .AppendASCII("persistent") 2281 .AppendASCII("persistent")
2282 .AppendASCII(kResourceId + "." + kMd5); 2282 .AppendASCII(kResourceId + "." + kMd5);
2283 TestStoreToCache(kResourceId, 2283 TestStoreToCache(kResourceId,
2284 kMd5, 2284 kMd5,
2285 // Anything works. 2285 // Anything works.
2286 test_util::GetTestFilePath("gdata/root_feed.json"), 2286 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
2287 DRIVE_FILE_OK, 2287 DRIVE_FILE_OK,
2288 test_util::TEST_CACHE_STATE_PRESENT | 2288 test_util::TEST_CACHE_STATE_PRESENT |
2289 test_util::TEST_CACHE_STATE_PINNED | 2289 test_util::TEST_CACHE_STATE_PINNED |
2290 test_util::TEST_CACHE_STATE_PERSISTENT, 2290 test_util::TEST_CACHE_STATE_PERSISTENT,
2291 DriveCache::CACHE_TYPE_PERSISTENT); 2291 DriveCache::CACHE_TYPE_PERSISTENT);
2292 ASSERT_TRUE(file_util::PathExists(original_cache_file_path)); 2292 ASSERT_TRUE(file_util::PathExists(original_cache_file_path));
2293 2293
2294 // Add the dirty bit. The cache file will be renamed to 2294 // Add the dirty bit. The cache file will be renamed to
2295 // GCache/v1/persistent/<kResourceId>.local 2295 // GCache/v1/persistent/<kResourceId>.local
2296 TestMarkDirty(kResourceId, 2296 TestMarkDirty(kResourceId,
(...skipping 29 matching lines...) Expand all
2326 test_util::TEST_CACHE_STATE_DIRTY | 2326 test_util::TEST_CACHE_STATE_DIRTY |
2327 test_util::TEST_CACHE_STATE_PERSISTENT, 2327 test_util::TEST_CACHE_STATE_PERSISTENT,
2328 DriveCache::CACHE_TYPE_PERSISTENT); 2328 DriveCache::CACHE_TYPE_PERSISTENT);
2329 const FilePath outgoing_symlink_path = 2329 const FilePath outgoing_symlink_path =
2330 DriveCache::GetCacheRootPath(profile_.get()) 2330 DriveCache::GetCacheRootPath(profile_.get())
2331 .AppendASCII("outgoing") 2331 .AppendASCII("outgoing")
2332 .AppendASCII(kResourceId); 2332 .AppendASCII(kResourceId);
2333 ASSERT_TRUE(file_util::PathExists(dirty_cache_file_path)); 2333 ASSERT_TRUE(file_util::PathExists(dirty_cache_file_path));
2334 ASSERT_TRUE(file_util::PathExists(outgoing_symlink_path)); 2334 ASSERT_TRUE(file_util::PathExists(outgoing_symlink_path));
2335 2335
2336 // Create a DocumentEntry, which is needed to mock 2336 // Create a gdata::DocumentEntry, which is needed to mock
2337 // DriveUploaderInterface::UploadExistingFile(). 2337 // DriveUploaderInterface::UploadExistingFile().
2338 // TODO(satorux): This should be cleaned up. crbug.com/134240. 2338 // TODO(satorux): This should be cleaned up. crbug.com/134240.
2339 DocumentEntry* document_entry = NULL; 2339 gdata::DocumentEntry* document_entry = NULL;
2340 scoped_ptr<base::Value> value = 2340 scoped_ptr<base::Value> value =
2341 test_util::LoadJSONFile("gdata/root_feed.json"); 2341 gdata::test_util::LoadJSONFile("gdata/root_feed.json");
2342 ASSERT_TRUE(value.get()); 2342 ASSERT_TRUE(value.get());
2343 base::DictionaryValue* as_dict = NULL; 2343 base::DictionaryValue* as_dict = NULL;
2344 base::ListValue* entry_list = NULL; 2344 base::ListValue* entry_list = NULL;
2345 if (value->GetAsDictionary(&as_dict) && 2345 if (value->GetAsDictionary(&as_dict) &&
2346 as_dict->GetList("feed.entry", &entry_list)) { 2346 as_dict->GetList("feed.entry", &entry_list)) {
2347 for (size_t i = 0; i < entry_list->GetSize(); ++i) { 2347 for (size_t i = 0; i < entry_list->GetSize(); ++i) {
2348 base::DictionaryValue* entry = NULL; 2348 base::DictionaryValue* entry = NULL;
2349 std::string resource_id; 2349 std::string resource_id;
2350 if (entry_list->GetDictionary(i, &entry) && 2350 if (entry_list->GetDictionary(i, &entry) &&
2351 entry->GetString("gd$resourceId.$t", &resource_id) && 2351 entry->GetString("gd$resourceId.$t", &resource_id) &&
2352 resource_id == kResourceId) { 2352 resource_id == kResourceId) {
2353 // This will be deleted by UploadExistingFile(). 2353 // This will be deleted by UploadExistingFile().
2354 document_entry = DocumentEntry::CreateFrom(*entry); 2354 document_entry = gdata::DocumentEntry::CreateFrom(*entry);
2355 } 2355 }
2356 } 2356 }
2357 } 2357 }
2358 ASSERT_TRUE(document_entry); 2358 ASSERT_TRUE(document_entry);
2359 2359
2360 // The mock uploader will be used to simulate a file upload. 2360 // The mock uploader will be used to simulate a file upload.
2361 EXPECT_CALL(*mock_uploader_, UploadExistingFile( 2361 EXPECT_CALL(*mock_uploader_, UploadExistingFile(
2362 GURL("https://file_link_resumable_edit_media/"), 2362 GURL("https://file_link_resumable_edit_media/"),
2363 kFilePath, 2363 kFilePath,
2364 dirty_cache_file_path, 2364 dirty_cache_file_path,
(...skipping 18 matching lines...) Expand all
2383 callback_helper_.get()); 2383 callback_helper_.get());
2384 2384
2385 // Check the number of files in the root directory. We'll compare the 2385 // Check the number of files in the root directory. We'll compare the
2386 // number after updating a file. 2386 // number after updating a file.
2387 scoped_ptr<DriveEntryProtoVector> root_directory_entries( 2387 scoped_ptr<DriveEntryProtoVector> root_directory_entries(
2388 ReadDirectoryByPathSync(FilePath::FromUTF8Unsafe("drive"))); 2388 ReadDirectoryByPathSync(FilePath::FromUTF8Unsafe("drive")));
2389 ASSERT_TRUE(root_directory_entries.get()); 2389 ASSERT_TRUE(root_directory_entries.get());
2390 const int num_files_in_root = CountFiles(*root_directory_entries); 2390 const int num_files_in_root = CountFiles(*root_directory_entries);
2391 2391
2392 file_system_->UpdateFileByResourceId(kResourceId, callback); 2392 file_system_->UpdateFileByResourceId(kResourceId, callback);
2393 test_util::RunBlockingPoolTask(); 2393 gdata::test_util::RunBlockingPoolTask();
2394 2394
2395 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_); 2395 EXPECT_EQ(DRIVE_FILE_OK, callback_helper_->last_error_);
2396 // Make sure that the number of files did not change (i.e. we updated an 2396 // Make sure that the number of files did not change (i.e. we updated an
2397 // existing file, rather than adding a new file. The number of files 2397 // existing file, rather than adding a new file. The number of files
2398 // increases if we don't handle the file update right). 2398 // increases if we don't handle the file update right).
2399 EXPECT_EQ(num_files_in_root, CountFiles(*root_directory_entries)); 2399 EXPECT_EQ(num_files_in_root, CountFiles(*root_directory_entries));
2400 // After the file is updated, the dirty bit is cleared, hence the symlink 2400 // After the file is updated, the dirty bit is cleared, hence the symlink
2401 // should be gone. 2401 // should be gone.
2402 ASSERT_FALSE(file_util::PathExists(outgoing_symlink_path)); 2402 ASSERT_FALSE(file_util::PathExists(outgoing_symlink_path));
2403 } 2403 }
2404 2404
2405 TEST_F(DriveFileSystemTest, UpdateFileByResourceId_NonexistentFile) { 2405 TEST_F(DriveFileSystemTest, UpdateFileByResourceId_NonexistentFile) {
2406 LoadRootFeedDocument("gdata/root_feed.json"); 2406 LoadRootFeedDocument("gdata/root_feed.json");
2407 2407
2408 // This is nonexistent in root_feed.json. 2408 // This is nonexistent in root_feed.json.
2409 const FilePath kFilePath(FILE_PATH_LITERAL("drive/Nonexistent.txt")); 2409 const FilePath kFilePath(FILE_PATH_LITERAL("drive/Nonexistent.txt"));
2410 const std::string kResourceId("file:nonexistent_resource_id"); 2410 const std::string kResourceId("file:nonexistent_resource_id");
2411 const std::string kMd5("nonexistent_md5"); 2411 const std::string kMd5("nonexistent_md5");
2412 2412
2413 // The callback will be called upon completion of 2413 // The callback will be called upon completion of
2414 // UpdateFileByResourceId(). 2414 // UpdateFileByResourceId().
2415 FileOperationCallback callback = 2415 FileOperationCallback callback =
2416 base::Bind(&CallbackHelper::FileOperationCallback, 2416 base::Bind(&CallbackHelper::FileOperationCallback,
2417 callback_helper_.get()); 2417 callback_helper_.get());
2418 2418
2419 file_system_->UpdateFileByResourceId(kResourceId, callback); 2419 file_system_->UpdateFileByResourceId(kResourceId, callback);
2420 test_util::RunBlockingPoolTask(); 2420 gdata::test_util::RunBlockingPoolTask();
2421 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_); 2421 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_);
2422 } 2422 }
2423 2423
2424 TEST_F(DriveFileSystemTest, ContentSearch) { 2424 TEST_F(DriveFileSystemTest, ContentSearch) {
2425 LoadRootFeedDocument("gdata/root_feed.json"); 2425 LoadRootFeedDocument("gdata/root_feed.json");
2426 2426
2427 mock_drive_service_->set_search_result("gdata/search_result_feed.json"); 2427 mock_drive_service_->set_search_result("gdata/search_result_feed.json");
2428 2428
2429 EXPECT_CALL(*mock_drive_service_, GetDocuments(Eq(GURL()), _, "foo", _, _)) 2429 EXPECT_CALL(*mock_drive_service_, GetDocuments(Eq(GURL()), _, "foo", _, _))
2430 .Times(1); 2430 .Times(1);
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
2492 } 2492 }
2493 2493
2494 TEST_F(DriveFileSystemTest, GetAvailableSpace) { 2494 TEST_F(DriveFileSystemTest, GetAvailableSpace) {
2495 GetAvailableSpaceCallback callback = 2495 GetAvailableSpaceCallback callback =
2496 base::Bind(&CallbackHelper::GetAvailableSpaceCallback, 2496 base::Bind(&CallbackHelper::GetAvailableSpaceCallback,
2497 callback_helper_.get()); 2497 callback_helper_.get());
2498 2498
2499 EXPECT_CALL(*mock_drive_service_, GetAccountMetadata(_)); 2499 EXPECT_CALL(*mock_drive_service_, GetAccountMetadata(_));
2500 2500
2501 file_system_->GetAvailableSpace(callback); 2501 file_system_->GetAvailableSpace(callback);
2502 test_util::RunBlockingPoolTask(); 2502 gdata::test_util::RunBlockingPoolTask();
2503 EXPECT_EQ(GG_LONGLONG(6789012345), callback_helper_->quota_bytes_used_); 2503 EXPECT_EQ(GG_LONGLONG(6789012345), callback_helper_->quota_bytes_used_);
2504 EXPECT_EQ(GG_LONGLONG(9876543210), callback_helper_->quota_bytes_total_); 2504 EXPECT_EQ(GG_LONGLONG(9876543210), callback_helper_->quota_bytes_total_);
2505 } 2505 }
2506 2506
2507 TEST_F(DriveFileSystemTest, RequestDirectoryRefresh) { 2507 TEST_F(DriveFileSystemTest, RequestDirectoryRefresh) {
2508 LoadRootFeedDocument("gdata/root_feed.json"); 2508 LoadRootFeedDocument("gdata/root_feed.json");
2509 2509
2510 // We'll fetch documents in the root directory with its resource ID. 2510 // We'll fetch documents in the root directory with its resource ID.
2511 EXPECT_CALL(*mock_drive_service_, 2511 EXPECT_CALL(*mock_drive_service_,
2512 GetDocuments(Eq(GURL()), _, _, kDriveRootDirectoryResourceId, _)) 2512 GetDocuments(Eq(GURL()), _, _, kDriveRootDirectoryResourceId, _))
2513 .Times(1); 2513 .Times(1);
2514 // We'll notify the directory change to the observer. 2514 // We'll notify the directory change to the observer.
2515 EXPECT_CALL(*mock_directory_observer_, 2515 EXPECT_CALL(*mock_directory_observer_,
2516 OnDirectoryChanged(Eq(FilePath(kDriveRootDirectory)))).Times(1); 2516 OnDirectoryChanged(Eq(FilePath(kDriveRootDirectory)))).Times(1);
2517 2517
2518 file_system_->RequestDirectoryRefresh(FilePath(kDriveRootDirectory)); 2518 file_system_->RequestDirectoryRefresh(FilePath(kDriveRootDirectory));
2519 test_util::RunBlockingPoolTask(); 2519 gdata::test_util::RunBlockingPoolTask();
2520 } 2520 }
2521 2521
2522 TEST_F(DriveFileSystemTest, OpenAndCloseFile) { 2522 TEST_F(DriveFileSystemTest, OpenAndCloseFile) {
2523 LoadRootFeedDocument("gdata/root_feed.json"); 2523 LoadRootFeedDocument("gdata/root_feed.json");
2524 2524
2525 OpenFileCallback callback = 2525 OpenFileCallback callback =
2526 base::Bind(&CallbackHelper::OpenFileCallback, 2526 base::Bind(&CallbackHelper::OpenFileCallback,
2527 callback_helper_.get()); 2527 callback_helper_.get());
2528 FileOperationCallback close_file_callback = 2528 FileOperationCallback close_file_callback =
2529 base::Bind(&CallbackHelper::CloseFileCallback, 2529 base::Bind(&CallbackHelper::CloseFileCallback,
(...skipping 16 matching lines...) Expand all
2546 // Pretend we have enough space. 2546 // Pretend we have enough space.
2547 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 2547 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
2548 .Times(2).WillRepeatedly(Return(file_size + kMinFreeSpace)); 2548 .Times(2).WillRepeatedly(Return(file_size + kMinFreeSpace));
2549 2549
2550 const std::string kExpectedFileData = "test file data"; 2550 const std::string kExpectedFileData = "test file data";
2551 mock_drive_service_->set_file_data(new std::string(kExpectedFileData)); 2551 mock_drive_service_->set_file_data(new std::string(kExpectedFileData));
2552 2552
2553 // Before Download starts metadata from server will be fetched. 2553 // Before Download starts metadata from server will be fetched.
2554 // We will read content url from the result. 2554 // We will read content url from the result.
2555 scoped_ptr<base::Value> document = 2555 scoped_ptr<base::Value> document =
2556 test_util::LoadJSONFile("gdata/document_to_download.json"); 2556 gdata::test_util::LoadJSONFile("gdata/document_to_download.json");
2557 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id"); 2557 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id");
2558 2558
2559 // The file is obtained with the mock DriveService. 2559 // The file is obtained with the mock DriveService.
2560 EXPECT_CALL(*mock_drive_service_, 2560 EXPECT_CALL(*mock_drive_service_,
2561 DownloadFile(kFileInRoot, 2561 DownloadFile(kFileInRoot,
2562 downloaded_file, 2562 downloaded_file,
2563 GURL("https://file_content_url_changed/"), 2563 GURL("https://file_content_url_changed/"),
2564 _, _)) 2564 _, _))
2565 .Times(1); 2565 .Times(1);
2566 2566
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2603 file_md5); 2603 file_md5);
2604 2604
2605 // Try to close the same file twice. 2605 // Try to close the same file twice.
2606 file_system_->CloseFile(kFileInRoot, close_file_callback); 2606 file_system_->CloseFile(kFileInRoot, close_file_callback);
2607 message_loop_.Run(); 2607 message_loop_.Run();
2608 2608
2609 // It must fail. 2609 // It must fail.
2610 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_); 2610 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_);
2611 } 2611 }
2612 2612
2613 } // namespace gdata 2613 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/drive/drive_file_system_proxy.cc ('k') | chrome/browser/chromeos/drive/drive_file_system_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698