| OLD | NEW |
| 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 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 301 return GetCacheEntryFromOriginThread(resource_id, md5, &cache_entry); | 301 return GetCacheEntryFromOriginThread(resource_id, md5, &cache_entry); |
| 302 } | 302 } |
| 303 | 303 |
| 304 // Flag for specifying the timestamp of the test filesystem cache. | 304 // Flag for specifying the timestamp of the test filesystem cache. |
| 305 enum SaveTestFileSystemParam { | 305 enum SaveTestFileSystemParam { |
| 306 USE_OLD_TIMESTAMP, | 306 USE_OLD_TIMESTAMP, |
| 307 USE_SERVER_TIMESTAMP, | 307 USE_SERVER_TIMESTAMP, |
| 308 }; | 308 }; |
| 309 | 309 |
| 310 // Saves a file representing a filesystem with directories: | 310 // Saves a file representing a filesystem with directories: |
| 311 // drive, drive/Dir1, drive/Dir1/SubDir2 | 311 // drive/root, drive/root/Dir1, drive/root/Dir1/SubDir2 |
| 312 // and files | 312 // and files |
| 313 // drive/File1, drive/Dir1/File2, drive/Dir1/SubDir2/File3. | 313 // drive/root/File1, drive/root/Dir1/File2, drive/root/Dir1/SubDir2/File3. |
| 314 // If |use_up_to_date_timestamp| is true, sets the changestamp to 654321, | 314 // If |use_up_to_date_timestamp| is true, sets the changestamp to 654321, |
| 315 // equal to that of "account_metadata.json" test data, indicating the cache is | 315 // equal to that of "account_metadata.json" test data, indicating the cache is |
| 316 // holding the latest file system info. | 316 // holding the latest file system info. |
| 317 bool SaveTestFileSystem(SaveTestFileSystemParam param) { | 317 bool SaveTestFileSystem(SaveTestFileSystemParam param) { |
| 318 // Destroy the existing resource metadata to close DB. | 318 // Destroy the existing resource metadata to close DB. |
| 319 resource_metadata_.reset(); | 319 resource_metadata_.reset(); |
| 320 | 320 |
| 321 const std::string root_resource_id = | 321 const std::string root_resource_id = |
| 322 fake_drive_service_->GetRootResourceId(); | 322 fake_drive_service_->GetRootResourceId(); |
| 323 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests> | 323 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests> |
| 324 resource_metadata(new DriveResourceMetadata( | 324 resource_metadata(new DriveResourceMetadata( |
| 325 root_resource_id, | 325 root_resource_id, |
| 326 cache_->GetCacheDirectoryPath(DriveCache::CACHE_TYPE_META), | 326 cache_->GetCacheDirectoryPath(DriveCache::CACHE_TYPE_META), |
| 327 blocking_task_runner_)); | 327 blocking_task_runner_)); |
| 328 | 328 |
| 329 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 329 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 330 resource_metadata->Initialize( | 330 resource_metadata->Initialize( |
| 331 google_apis::test_util::CreateCopyResultCallback(&error)); | 331 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 332 google_apis::test_util::RunBlockingPoolTask(); | 332 google_apis::test_util::RunBlockingPoolTask(); |
| 333 if (error != DRIVE_FILE_OK) | 333 if (error != DRIVE_FILE_OK) |
| 334 return false; | 334 return false; |
| 335 | 335 |
| 336 resource_metadata->SetLargestChangestamp( | 336 resource_metadata->SetLargestChangestamp( |
| 337 param == USE_SERVER_TIMESTAMP ? 654321 : 1, | 337 param == USE_SERVER_TIMESTAMP ? 654321 : 1, |
| 338 google_apis::test_util::CreateCopyResultCallback(&error)); | 338 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 339 google_apis::test_util::RunBlockingPoolTask(); | 339 google_apis::test_util::RunBlockingPoolTask(); |
| 340 if (error != DRIVE_FILE_OK) | 340 if (error != DRIVE_FILE_OK) |
| 341 return false; | 341 return false; |
| 342 | 342 |
| 343 // drive/File1 | 343 // drive/root is already prepared by DriveResourceMetadata. |
| 344 // TODO(haruki): Create drive/root here when we start creating it in |
| 345 // ChangeListLoader. |
| 346 base::FilePath file_path; |
| 347 |
| 348 // drive/root/File1 |
| 344 DriveEntryProto file1; | 349 DriveEntryProto file1; |
| 345 file1.set_title("File1"); | 350 file1.set_title("File1"); |
| 346 file1.set_resource_id("resource_id:File1"); | 351 file1.set_resource_id("resource_id:File1"); |
| 347 file1.set_parent_resource_id(root_resource_id); | 352 file1.set_parent_resource_id(root_resource_id); |
| 348 file1.mutable_file_specific_info()->set_file_md5("md5"); | 353 file1.mutable_file_specific_info()->set_file_md5("md5"); |
| 349 file1.mutable_file_info()->set_is_directory(false); | 354 file1.mutable_file_info()->set_is_directory(false); |
| 350 file1.mutable_file_info()->set_size(1048576); | 355 file1.mutable_file_info()->set_size(1048576); |
| 351 base::FilePath file_path; | |
| 352 resource_metadata->AddEntry( | 356 resource_metadata->AddEntry( |
| 353 file1, | 357 file1, |
| 354 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); | 358 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); |
| 355 google_apis::test_util::RunBlockingPoolTask(); | 359 google_apis::test_util::RunBlockingPoolTask(); |
| 356 if (error != DRIVE_FILE_OK) | 360 if (error != DRIVE_FILE_OK) |
| 357 return false; | 361 return false; |
| 358 | 362 |
| 359 // drive/Dir1 | 363 // drive/root/Dir1 |
| 360 DriveEntryProto dir1; | 364 DriveEntryProto dir1; |
| 361 dir1.set_title("Dir1"); | 365 dir1.set_title("Dir1"); |
| 362 dir1.set_resource_id("resource_id:Dir1"); | 366 dir1.set_resource_id("resource_id:Dir1"); |
| 363 dir1.set_parent_resource_id(root_resource_id); | 367 dir1.set_parent_resource_id(root_resource_id); |
| 364 dir1.mutable_file_info()->set_is_directory(true); | 368 dir1.mutable_file_info()->set_is_directory(true); |
| 365 resource_metadata->AddEntry( | 369 resource_metadata->AddEntry( |
| 366 dir1, | 370 dir1, |
| 367 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); | 371 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); |
| 368 google_apis::test_util::RunBlockingPoolTask(); | 372 google_apis::test_util::RunBlockingPoolTask(); |
| 369 if (error != DRIVE_FILE_OK) | 373 if (error != DRIVE_FILE_OK) |
| 370 return false; | 374 return false; |
| 371 | 375 |
| 372 // drive/Dir1/File2 | 376 // drive/root/Dir1/File2 |
| 373 DriveEntryProto file2; | 377 DriveEntryProto file2; |
| 374 file2.set_title("File2"); | 378 file2.set_title("File2"); |
| 375 file2.set_resource_id("resource_id:File2"); | 379 file2.set_resource_id("resource_id:File2"); |
| 376 file2.set_parent_resource_id(dir1.resource_id()); | 380 file2.set_parent_resource_id(dir1.resource_id()); |
| 377 file2.mutable_file_specific_info()->set_file_md5("md5"); | 381 file2.mutable_file_specific_info()->set_file_md5("md5"); |
| 378 file2.mutable_file_info()->set_is_directory(false); | 382 file2.mutable_file_info()->set_is_directory(false); |
| 379 file2.mutable_file_info()->set_size(555); | 383 file2.mutable_file_info()->set_size(555); |
| 380 resource_metadata->AddEntry( | 384 resource_metadata->AddEntry( |
| 381 file2, | 385 file2, |
| 382 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); | 386 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); |
| 383 google_apis::test_util::RunBlockingPoolTask(); | 387 google_apis::test_util::RunBlockingPoolTask(); |
| 384 if (error != DRIVE_FILE_OK) | 388 if (error != DRIVE_FILE_OK) |
| 385 return false; | 389 return false; |
| 386 | 390 |
| 387 // drive/Dir1/SubDir2 | 391 // drive/root/Dir1/SubDir2 |
| 388 DriveEntryProto dir2; | 392 DriveEntryProto dir2; |
| 389 dir2.set_title("SubDir2"); | 393 dir2.set_title("SubDir2"); |
| 390 dir2.set_resource_id("resource_id:SubDir2"); | 394 dir2.set_resource_id("resource_id:SubDir2"); |
| 391 dir2.set_parent_resource_id(dir1.resource_id()); | 395 dir2.set_parent_resource_id(dir1.resource_id()); |
| 392 dir2.mutable_file_info()->set_is_directory(true); | 396 dir2.mutable_file_info()->set_is_directory(true); |
| 393 resource_metadata->AddEntry( | 397 resource_metadata->AddEntry( |
| 394 dir2, | 398 dir2, |
| 395 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); | 399 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); |
| 396 google_apis::test_util::RunBlockingPoolTask(); | 400 google_apis::test_util::RunBlockingPoolTask(); |
| 397 if (error != DRIVE_FILE_OK) | 401 if (error != DRIVE_FILE_OK) |
| 398 return false; | 402 return false; |
| 399 | 403 |
| 400 // drive/Dir1/SubDir2/File3 | 404 // drive/root/Dir1/SubDir2/File3 |
| 401 DriveEntryProto file3; | 405 DriveEntryProto file3; |
| 402 file3.set_title("File3"); | 406 file3.set_title("File3"); |
| 403 file3.set_resource_id("resource_id:File3"); | 407 file3.set_resource_id("resource_id:File3"); |
| 404 file3.set_parent_resource_id(dir2.resource_id()); | 408 file3.set_parent_resource_id(dir2.resource_id()); |
| 405 file3.mutable_file_specific_info()->set_file_md5("md5"); | 409 file3.mutable_file_specific_info()->set_file_md5("md5"); |
| 406 file3.mutable_file_info()->set_is_directory(false); | 410 file3.mutable_file_info()->set_is_directory(false); |
| 407 file3.mutable_file_info()->set_size(12345); | 411 file3.mutable_file_info()->set_size(12345); |
| 408 resource_metadata->AddEntry( | 412 resource_metadata->AddEntry( |
| 409 file3, | 413 file3, |
| 410 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); | 414 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 477 ASSERT_FALSE(entries->empty()); | 481 ASSERT_FALSE(entries->empty()); |
| 478 | 482 |
| 479 (*counter)++; | 483 (*counter)++; |
| 480 if (*counter >= expected_counter) | 484 if (*counter >= expected_counter) |
| 481 message_loop->Quit(); | 485 message_loop->Quit(); |
| 482 } | 486 } |
| 483 | 487 |
| 484 TEST_F(DriveFileSystemTest, DuplicatedAsyncInitialization) { | 488 TEST_F(DriveFileSystemTest, DuplicatedAsyncInitialization) { |
| 485 // The root directory will be loaded that triggers the event. | 489 // The root directory will be loaded that triggers the event. |
| 486 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 490 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 487 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 491 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 488 | 492 |
| 489 int counter = 0; | 493 int counter = 0; |
| 490 ReadDirectoryWithSettingCallback callback = base::Bind( | 494 ReadDirectoryWithSettingCallback callback = base::Bind( |
| 491 &AsyncInitializationCallback, | 495 &AsyncInitializationCallback, |
| 492 &counter, | 496 &counter, |
| 493 2, | 497 2, |
| 494 &message_loop_); | 498 &message_loop_); |
| 495 | 499 |
| 496 file_system_->ReadDirectoryByPath( | 500 file_system_->ReadDirectoryByPath( |
| 497 base::FilePath(FILE_PATH_LITERAL("drive")), callback); | 501 base::FilePath(FILE_PATH_LITERAL("drive/root")), callback); |
| 498 file_system_->ReadDirectoryByPath( | 502 file_system_->ReadDirectoryByPath( |
| 499 base::FilePath(FILE_PATH_LITERAL("drive")), callback); | 503 base::FilePath(FILE_PATH_LITERAL("drive/root")), callback); |
| 500 message_loop_.Run(); // Wait to get our result | 504 message_loop_.Run(); // Wait to get our result |
| 501 EXPECT_EQ(2, counter); | 505 EXPECT_EQ(2, counter); |
| 502 | 506 |
| 503 // ReadDirectoryByPath() was called twice, but the account metadata should | 507 // ReadDirectoryByPath() was called twice, but the account metadata should |
| 504 // only be loaded once. In the past, there was a bug that caused it to be | 508 // only be loaded once. In the past, there was a bug that caused it to be |
| 505 // loaded twice. | 509 // loaded twice. |
| 506 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count()); | 510 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count()); |
| 507 // On the other hand, the resource list could be loaded twice. One for | 511 // On the other hand, the resource list could be loaded twice. One for |
| 508 // just the directory contents, and one for the entire resource list. | 512 // just the directory contents, and one for the entire resource list. |
| 509 // | 513 // |
| 510 // The |callback| function gets called back soon after the directory content | 514 // The |callback| function gets called back soon after the directory content |
| 511 // is loaded, and the full resource load is done in background asynchronously. | 515 // is loaded, and the full resource load is done in background asynchronously. |
| 512 // So it depends on timing whether we receive the full resource load request | 516 // So it depends on timing whether we receive the full resource load request |
| 513 // at this point. | 517 // at this point. |
| 514 EXPECT_TRUE(fake_drive_service_->resource_list_load_count() == 1 || | 518 EXPECT_TRUE(fake_drive_service_->resource_list_load_count() == 1 || |
| 515 fake_drive_service_->resource_list_load_count() == 2) | 519 fake_drive_service_->resource_list_load_count() == 2) |
| 516 << ": " << fake_drive_service_->resource_list_load_count(); | 520 << ": " << fake_drive_service_->resource_list_load_count(); |
| 517 } | 521 } |
| 518 | 522 |
| 519 TEST_F(DriveFileSystemTest, GetRootEntry) { | 523 TEST_F(DriveFileSystemTest, GetGrandRootEntry) { |
| 520 const base::FilePath kFilePath = base::FilePath(FILE_PATH_LITERAL("drive")); | 524 const base::FilePath kFilePath = |
| 525 base::FilePath(FILE_PATH_LITERAL("drive")); |
| 526 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); |
| 527 ASSERT_TRUE(entry.get()); |
| 528 EXPECT_EQ(util::kDriveGrandRootSpecialResourceId, entry->resource_id()); |
| 529 |
| 530 // Getting the grand root entry should not cause the resource load to happen. |
| 531 EXPECT_EQ(0, fake_drive_service_->about_resource_load_count()); |
| 532 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count()); |
| 533 } |
| 534 |
| 535 TEST_F(DriveFileSystemTest, GetMyDriveRootEntry) { |
| 536 const base::FilePath kFilePath = |
| 537 base::FilePath(FILE_PATH_LITERAL("drive/root")); |
| 521 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); | 538 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); |
| 522 ASSERT_TRUE(entry.get()); | 539 ASSERT_TRUE(entry.get()); |
| 523 EXPECT_EQ(fake_drive_service_->GetRootResourceId(), entry->resource_id()); | 540 EXPECT_EQ(fake_drive_service_->GetRootResourceId(), entry->resource_id()); |
| 524 | 541 |
| 525 // Getting the root entry should not cause the resource load to happen. | 542 // Getting the "My Drive" root entry should not cause the resource load to |
| 543 // happen. |
| 544 EXPECT_EQ(0, fake_drive_service_->about_resource_load_count()); |
| 545 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count()); |
| 546 } |
| 547 |
| 548 TEST_F(DriveFileSystemTest, GetOtherDirEntry) { |
| 549 const base::FilePath kFilePath = |
| 550 base::FilePath(FILE_PATH_LITERAL("drive/other")); |
| 551 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); |
| 552 ASSERT_TRUE(entry.get()); |
| 553 EXPECT_EQ(util::kDriveOtherDirSpecialResourceId, entry->resource_id()); |
| 554 |
| 555 // Getting the "other" directory entry should not cause the resource load to |
| 556 // happen. |
| 526 EXPECT_EQ(0, fake_drive_service_->about_resource_load_count()); | 557 EXPECT_EQ(0, fake_drive_service_->about_resource_load_count()); |
| 527 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count()); | 558 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count()); |
| 528 } | 559 } |
| 529 | 560 |
| 530 TEST_F(DriveFileSystemTest, GetNonRootEntry) { | 561 TEST_F(DriveFileSystemTest, GetNonRootEntry) { |
| 531 const base::FilePath kFilePath = | 562 const base::FilePath kFilePath = |
| 532 base::FilePath(FILE_PATH_LITERAL("drive/whatever.txt")); | 563 base::FilePath(FILE_PATH_LITERAL("drive/root/whatever.txt")); |
| 533 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); | 564 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); |
| 534 // The entry should not exist as the resource metadata only contains the | 565 // The entry should not exist as the resource metadata only contains the |
| 535 // root entry now. | 566 // root entry now. |
| 536 ASSERT_FALSE(entry.get()); | 567 ASSERT_FALSE(entry.get()); |
| 537 | 568 |
| 538 // The resource load should happen because non-root entry is requested. | 569 // The resource load should happen because non-root entry is requested. |
| 539 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count()); | 570 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count()); |
| 540 EXPECT_EQ(1, fake_drive_service_->resource_list_load_count()); | 571 EXPECT_EQ(1, fake_drive_service_->resource_list_load_count()); |
| 541 } | 572 } |
| 542 | 573 |
| 543 TEST_F(DriveFileSystemTest, SearchRootDirectory) { | 574 TEST_F(DriveFileSystemTest, SearchRootDirectory) { |
| 544 ASSERT_TRUE(LoadRootFeedDocument()); | 575 ASSERT_TRUE(LoadRootFeedDocument()); |
| 545 | 576 |
| 546 const base::FilePath kFilePath = base::FilePath(FILE_PATH_LITERAL("drive")); | 577 const base::FilePath kFilePath = |
| 578 base::FilePath(FILE_PATH_LITERAL("drive/root")); |
| 547 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); | 579 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); |
| 548 ASSERT_TRUE(entry.get()); | 580 ASSERT_TRUE(entry.get()); |
| 549 EXPECT_EQ(fake_drive_service_->GetRootResourceId(), entry->resource_id()); | 581 EXPECT_EQ(fake_drive_service_->GetRootResourceId(), entry->resource_id()); |
| 550 | 582 |
| 551 // The changestamp should be propagated to the root directory. | 583 // The changestamp should be propagated to the root directory. |
| 552 EXPECT_EQ(fake_drive_service_->largest_changestamp(), | 584 EXPECT_EQ(fake_drive_service_->largest_changestamp(), |
| 553 entry->directory_specific_info().changestamp()); | 585 entry->directory_specific_info().changestamp()); |
| 554 } | 586 } |
| 555 | 587 |
| 556 TEST_F(DriveFileSystemTest, SearchExistingFile) { | 588 TEST_F(DriveFileSystemTest, SearchExistingFile) { |
| 557 ASSERT_TRUE(LoadRootFeedDocument()); | 589 ASSERT_TRUE(LoadRootFeedDocument()); |
| 558 | 590 |
| 559 const base::FilePath kFilePath = base::FilePath( | 591 const base::FilePath kFilePath = base::FilePath( |
| 560 FILE_PATH_LITERAL("drive/File 1.txt")); | 592 FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 561 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); | 593 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); |
| 562 ASSERT_TRUE(entry.get()); | 594 ASSERT_TRUE(entry.get()); |
| 563 EXPECT_EQ("file:2_file_resource_id", entry->resource_id()); | 595 EXPECT_EQ("file:2_file_resource_id", entry->resource_id()); |
| 564 } | 596 } |
| 565 | 597 |
| 566 TEST_F(DriveFileSystemTest, SearchExistingDocument) { | 598 TEST_F(DriveFileSystemTest, SearchExistingDocument) { |
| 567 ASSERT_TRUE(LoadRootFeedDocument()); | 599 ASSERT_TRUE(LoadRootFeedDocument()); |
| 568 | 600 |
| 569 const base::FilePath kFilePath = base::FilePath( | 601 const base::FilePath kFilePath = base::FilePath( |
| 570 FILE_PATH_LITERAL("drive/Document 1.gdoc")); | 602 FILE_PATH_LITERAL("drive/root/Document 1.gdoc")); |
| 571 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); | 603 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); |
| 572 ASSERT_TRUE(entry.get()); | 604 ASSERT_TRUE(entry.get()); |
| 573 EXPECT_EQ("document:5_document_resource_id", entry->resource_id()); | 605 EXPECT_EQ("document:5_document_resource_id", entry->resource_id()); |
| 574 } | 606 } |
| 575 | 607 |
| 576 TEST_F(DriveFileSystemTest, SearchNonExistingFile) { | 608 TEST_F(DriveFileSystemTest, SearchNonExistingFile) { |
| 577 ASSERT_TRUE(LoadRootFeedDocument()); | 609 ASSERT_TRUE(LoadRootFeedDocument()); |
| 578 | 610 |
| 579 const base::FilePath kFilePath = base::FilePath( | 611 const base::FilePath kFilePath = base::FilePath( |
| 580 FILE_PATH_LITERAL("drive/nonexisting.file")); | 612 FILE_PATH_LITERAL("drive/root/nonexisting.file")); |
| 581 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); | 613 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); |
| 582 ASSERT_FALSE(entry.get()); | 614 ASSERT_FALSE(entry.get()); |
| 583 } | 615 } |
| 584 | 616 |
| 585 TEST_F(DriveFileSystemTest, SearchEncodedFileNames) { | 617 TEST_F(DriveFileSystemTest, SearchEncodedFileNames) { |
| 586 ASSERT_TRUE(LoadRootFeedDocument()); | 618 ASSERT_TRUE(LoadRootFeedDocument()); |
| 587 | 619 |
| 588 const base::FilePath kFilePath1 = base::FilePath( | 620 const base::FilePath kFilePath1 = base::FilePath( |
| 589 FILE_PATH_LITERAL("drive/Slash / in file 1.txt")); | 621 FILE_PATH_LITERAL("drive/root/Slash / in file 1.txt")); |
| 590 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath1); | 622 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath1); |
| 591 ASSERT_FALSE(entry.get()); | 623 ASSERT_FALSE(entry.get()); |
| 592 | 624 |
| 593 const base::FilePath kFilePath2 = base::FilePath::FromUTF8Unsafe( | 625 const base::FilePath kFilePath2 = base::FilePath::FromUTF8Unsafe( |
| 594 "drive/Slash \xE2\x88\x95 in file 1.txt"); | 626 "drive/root/Slash \xE2\x88\x95 in file 1.txt"); |
| 595 entry = GetEntryInfoByPathSync(kFilePath2); | 627 entry = GetEntryInfoByPathSync(kFilePath2); |
| 596 ASSERT_TRUE(entry.get()); | 628 ASSERT_TRUE(entry.get()); |
| 597 EXPECT_EQ("file:slash_file_resource_id", entry->resource_id()); | 629 EXPECT_EQ("file:slash_file_resource_id", entry->resource_id()); |
| 598 | 630 |
| 599 const base::FilePath kFilePath3 = base::FilePath::FromUTF8Unsafe( | 631 const base::FilePath kFilePath3 = base::FilePath::FromUTF8Unsafe( |
| 600 "drive/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt"); | 632 "drive/root/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt"); |
| 601 entry = GetEntryInfoByPathSync(kFilePath3); | 633 entry = GetEntryInfoByPathSync(kFilePath3); |
| 602 ASSERT_TRUE(entry.get()); | 634 ASSERT_TRUE(entry.get()); |
| 603 EXPECT_EQ("file:slash_subdir_file", entry->resource_id()); | 635 EXPECT_EQ("file:slash_subdir_file", entry->resource_id()); |
| 604 } | 636 } |
| 605 | 637 |
| 606 TEST_F(DriveFileSystemTest, SearchEncodedFileNamesLoadingRoot) { | 638 TEST_F(DriveFileSystemTest, SearchEncodedFileNamesLoadingRoot) { |
| 607 ASSERT_TRUE(LoadRootFeedDocument()); | 639 ASSERT_TRUE(LoadRootFeedDocument()); |
| 608 | 640 |
| 609 const base::FilePath kFilePath1 = base::FilePath( | 641 const base::FilePath kFilePath1 = base::FilePath( |
| 610 FILE_PATH_LITERAL("drive/Slash / in file 1.txt")); | 642 FILE_PATH_LITERAL("drive/root/Slash / in file 1.txt")); |
| 611 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath1); | 643 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath1); |
| 612 ASSERT_FALSE(entry.get()); | 644 ASSERT_FALSE(entry.get()); |
| 613 | 645 |
| 614 const base::FilePath kFilePath2 = base::FilePath::FromUTF8Unsafe( | 646 const base::FilePath kFilePath2 = base::FilePath::FromUTF8Unsafe( |
| 615 "drive/Slash \xE2\x88\x95 in file 1.txt"); | 647 "drive/root/Slash \xE2\x88\x95 in file 1.txt"); |
| 616 entry = GetEntryInfoByPathSync(kFilePath2); | 648 entry = GetEntryInfoByPathSync(kFilePath2); |
| 617 ASSERT_TRUE(entry.get()); | 649 ASSERT_TRUE(entry.get()); |
| 618 EXPECT_EQ("file:slash_file_resource_id", entry->resource_id()); | 650 EXPECT_EQ("file:slash_file_resource_id", entry->resource_id()); |
| 619 | 651 |
| 620 const base::FilePath kFilePath3 = base::FilePath::FromUTF8Unsafe( | 652 const base::FilePath kFilePath3 = base::FilePath::FromUTF8Unsafe( |
| 621 "drive/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt"); | 653 "drive/root/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt"); |
| 622 entry = GetEntryInfoByPathSync(kFilePath3); | 654 entry = GetEntryInfoByPathSync(kFilePath3); |
| 623 ASSERT_TRUE(entry.get()); | 655 ASSERT_TRUE(entry.get()); |
| 624 EXPECT_EQ("file:slash_subdir_file", entry->resource_id()); | 656 EXPECT_EQ("file:slash_subdir_file", entry->resource_id()); |
| 625 } | 657 } |
| 626 | 658 |
| 627 TEST_F(DriveFileSystemTest, SearchDuplicateNames) { | 659 TEST_F(DriveFileSystemTest, SearchDuplicateNames) { |
| 628 ASSERT_TRUE(LoadRootFeedDocument()); | 660 ASSERT_TRUE(LoadRootFeedDocument()); |
| 629 | 661 |
| 630 const base::FilePath kFilePath1 = base::FilePath( | 662 const base::FilePath kFilePath1 = base::FilePath( |
| 631 FILE_PATH_LITERAL("drive/Duplicate Name.txt")); | 663 FILE_PATH_LITERAL("drive/root/Duplicate Name.txt")); |
| 632 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath1); | 664 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath1); |
| 633 ASSERT_TRUE(entry.get()); | 665 ASSERT_TRUE(entry.get()); |
| 634 const std::string resource_id1 = entry->resource_id(); | 666 const std::string resource_id1 = entry->resource_id(); |
| 635 | 667 |
| 636 const base::FilePath kFilePath2 = base::FilePath( | 668 const base::FilePath kFilePath2 = base::FilePath( |
| 637 FILE_PATH_LITERAL("drive/Duplicate Name (2).txt")); | 669 FILE_PATH_LITERAL("drive/root/Duplicate Name (2).txt")); |
| 638 entry = GetEntryInfoByPathSync(kFilePath2); | 670 entry = GetEntryInfoByPathSync(kFilePath2); |
| 639 ASSERT_TRUE(entry.get()); | 671 ASSERT_TRUE(entry.get()); |
| 640 const std::string resource_id2 = entry->resource_id(); | 672 const std::string resource_id2 = entry->resource_id(); |
| 641 | 673 |
| 642 // The entries are de-duped non-deterministically, so we shouldn't rely on the | 674 // The entries are de-duped non-deterministically, so we shouldn't rely on the |
| 643 // names matching specific resource ids. | 675 // names matching specific resource ids. |
| 644 const std::string file3_resource_id = "file:3_file_resource_id"; | 676 const std::string file3_resource_id = "file:3_file_resource_id"; |
| 645 const std::string file4_resource_id = "file:4_file_resource_id"; | 677 const std::string file4_resource_id = "file:4_file_resource_id"; |
| 646 EXPECT_TRUE(file3_resource_id == resource_id1 || | 678 EXPECT_TRUE(file3_resource_id == resource_id1 || |
| 647 file3_resource_id == resource_id2); | 679 file3_resource_id == resource_id2); |
| 648 EXPECT_TRUE(file4_resource_id == resource_id1 || | 680 EXPECT_TRUE(file4_resource_id == resource_id1 || |
| 649 file4_resource_id == resource_id2); | 681 file4_resource_id == resource_id2); |
| 650 } | 682 } |
| 651 | 683 |
| 652 TEST_F(DriveFileSystemTest, SearchExistingDirectory) { | 684 TEST_F(DriveFileSystemTest, SearchExistingDirectory) { |
| 653 ASSERT_TRUE(LoadRootFeedDocument()); | 685 ASSERT_TRUE(LoadRootFeedDocument()); |
| 654 | 686 |
| 655 const base::FilePath kFilePath = base::FilePath( | 687 const base::FilePath kFilePath = base::FilePath( |
| 656 FILE_PATH_LITERAL("drive/Directory 1")); | 688 FILE_PATH_LITERAL("drive/root/Directory 1")); |
| 657 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); | 689 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); |
| 658 ASSERT_TRUE(entry.get()); | 690 ASSERT_TRUE(entry.get()); |
| 659 ASSERT_EQ("folder:1_folder_resource_id", entry->resource_id()); | 691 ASSERT_EQ("folder:1_folder_resource_id", entry->resource_id()); |
| 660 | 692 |
| 661 // The changestamp should be propagated to the directory. | 693 // The changestamp should be propagated to the directory. |
| 662 EXPECT_EQ(fake_drive_service_->largest_changestamp(), | 694 EXPECT_EQ(fake_drive_service_->largest_changestamp(), |
| 663 entry->directory_specific_info().changestamp()); | 695 entry->directory_specific_info().changestamp()); |
| 664 } | 696 } |
| 665 | 697 |
| 666 TEST_F(DriveFileSystemTest, SearchInSubdir) { | 698 TEST_F(DriveFileSystemTest, SearchInSubdir) { |
| 667 ASSERT_TRUE(LoadRootFeedDocument()); | 699 ASSERT_TRUE(LoadRootFeedDocument()); |
| 668 | 700 |
| 669 const base::FilePath kFilePath = base::FilePath( | 701 const base::FilePath kFilePath = base::FilePath( |
| 670 FILE_PATH_LITERAL("drive/Directory 1/SubDirectory File 1.txt")); | 702 FILE_PATH_LITERAL("drive/root/Directory 1/SubDirectory File 1.txt")); |
| 671 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); | 703 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); |
| 672 ASSERT_TRUE(entry.get()); | 704 ASSERT_TRUE(entry.get()); |
| 673 ASSERT_EQ("file:subdirectory_file_1_id", entry->resource_id()); | 705 ASSERT_EQ("file:subdirectory_file_1_id", entry->resource_id()); |
| 674 } | 706 } |
| 675 | 707 |
| 676 // Check the reconstruction of the directory structure from only the root feed. | 708 // Check the reconstruction of the directory structure from only the root feed. |
| 677 TEST_F(DriveFileSystemTest, SearchInSubSubdir) { | 709 TEST_F(DriveFileSystemTest, SearchInSubSubdir) { |
| 678 ASSERT_TRUE(LoadRootFeedDocument()); | 710 ASSERT_TRUE(LoadRootFeedDocument()); |
| 679 | 711 |
| 680 const base::FilePath kFilePath = base::FilePath( | 712 const base::FilePath kFilePath = base::FilePath( |
| 681 FILE_PATH_LITERAL("drive/Directory 1/Sub Directory Folder/" | 713 FILE_PATH_LITERAL("drive/root/Directory 1/Sub Directory Folder/" |
| 682 "Sub Sub Directory Folder")); | 714 "Sub Sub Directory Folder")); |
| 683 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); | 715 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath); |
| 684 ASSERT_TRUE(entry.get()); | 716 ASSERT_TRUE(entry.get()); |
| 685 ASSERT_EQ("folder:sub_sub_directory_folder_id", entry->resource_id()); | 717 ASSERT_EQ("folder:sub_sub_directory_folder_id", entry->resource_id()); |
| 686 } | 718 } |
| 687 | 719 |
| 688 TEST_F(DriveFileSystemTest, ReadDirectoryByPath_Root) { | 720 TEST_F(DriveFileSystemTest, ReadDirectoryByPath_Root) { |
| 689 // The root directory will be loaded that triggers the event. | |
| 690 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 721 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 691 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 722 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 692 | 723 |
| 693 // ReadDirectoryByPath() should kick off the resource list loading. | 724 // ReadDirectoryByPath() should kick off the resource list loading. |
| 694 scoped_ptr<DriveEntryProtoVector> entries( | 725 scoped_ptr<DriveEntryProtoVector> entries( |
| 695 ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive"))); | 726 ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive/root"))); |
| 696 // The root directory should be read correctly. | 727 // The root directory should be read correctly. |
| 697 ASSERT_TRUE(entries.get()); | 728 ASSERT_TRUE(entries.get()); |
| 698 EXPECT_EQ(8U, entries->size()); | 729 EXPECT_EQ(8U, entries->size()); |
| 699 } | 730 } |
| 700 | 731 |
| 701 TEST_F(DriveFileSystemTest, ReadDirectoryByPath_NonRootDirectory) { | 732 TEST_F(DriveFileSystemTest, ReadDirectoryByPath_NonRootDirectory) { |
| 702 // ReadDirectoryByPath() should kick off the resource list loading. | 733 // ReadDirectoryByPath() should kick off the resource list loading. |
| 703 scoped_ptr<DriveEntryProtoVector> entries( | 734 scoped_ptr<DriveEntryProtoVector> entries( |
| 704 ReadDirectoryByPathSync( | 735 ReadDirectoryByPathSync( |
| 705 base::FilePath::FromUTF8Unsafe("drive/Directory 1"))); | 736 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"))); |
| 706 // The non root directory should also be read correctly. | 737 // The non root directory should also be read correctly. |
| 707 // There was a bug (crbug.com/181487), which broke this behavior. | 738 // There was a bug (crbug.com/181487), which broke this behavior. |
| 708 // Make sure this is fixed. | 739 // Make sure this is fixed. |
| 709 ASSERT_TRUE(entries.get()); | 740 ASSERT_TRUE(entries.get()); |
| 710 EXPECT_EQ(3U, entries->size()); | 741 EXPECT_EQ(3U, entries->size()); |
| 711 } | 742 } |
| 712 | 743 |
| 713 TEST_F(DriveFileSystemTest, FilePathTests) { | 744 TEST_F(DriveFileSystemTest, FilePathTests) { |
| 714 ASSERT_TRUE(LoadRootFeedDocument()); | 745 ASSERT_TRUE(LoadRootFeedDocument()); |
| 715 | 746 |
| 716 EXPECT_TRUE( | 747 EXPECT_TRUE( |
| 717 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/File 1.txt")))); | 748 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/root/File 1.txt")))); |
| 718 EXPECT_TRUE( | 749 EXPECT_TRUE( |
| 719 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/Directory 1")))); | 750 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1")))); |
| 720 EXPECT_TRUE(EntryExists( | 751 EXPECT_TRUE(EntryExists(base::FilePath( |
| 721 base::FilePath( | 752 FILE_PATH_LITERAL("drive/root/Directory 1/SubDirectory File 1.txt")))); |
| 722 FILE_PATH_LITERAL("drive/Directory 1/SubDirectory File 1.txt")))); | |
| 723 } | 753 } |
| 724 | 754 |
| 725 TEST_F(DriveFileSystemTest, ChangeFeed_AddAndDeleteFileInRoot) { | 755 TEST_F(DriveFileSystemTest, ChangeFeed_AddAndDeleteFileInRoot) { |
| 726 ASSERT_TRUE(LoadRootFeedDocument()); | 756 ASSERT_TRUE(LoadRootFeedDocument()); |
| 727 | 757 |
| 728 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 758 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 729 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(2); | 759 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(2); |
| 730 | 760 |
| 731 ASSERT_TRUE(LoadChangeFeed("chromeos/gdata/delta_file_added_in_root.json")); | 761 ASSERT_TRUE(LoadChangeFeed("chromeos/gdata/delta_file_added_in_root.json")); |
| 732 EXPECT_TRUE( | 762 EXPECT_TRUE(EntryExists( |
| 733 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/Added file.gdoc")))); | 763 base::FilePath(FILE_PATH_LITERAL("drive/root/Added file.gdoc")))); |
| 734 | 764 |
| 735 ASSERT_TRUE(LoadChangeFeed("chromeos/gdata/delta_file_deleted_in_root.json")); | 765 ASSERT_TRUE(LoadChangeFeed("chromeos/gdata/delta_file_deleted_in_root.json")); |
| 736 EXPECT_FALSE( | 766 EXPECT_FALSE(EntryExists( |
| 737 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/Added file.gdoc")))); | 767 base::FilePath(FILE_PATH_LITERAL("drive/root/Added file.gdoc")))); |
| 738 } | 768 } |
| 739 | 769 |
| 740 | 770 |
| 741 TEST_F(DriveFileSystemTest, ChangeFeed_AddAndDeleteFileFromExistingDirectory) { | 771 TEST_F(DriveFileSystemTest, ChangeFeed_AddAndDeleteFileFromExistingDirectory) { |
| 742 ASSERT_TRUE(LoadRootFeedDocument()); | 772 ASSERT_TRUE(LoadRootFeedDocument()); |
| 743 | 773 |
| 744 EXPECT_TRUE( | 774 EXPECT_TRUE( |
| 745 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/Directory 1")))); | 775 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1")))); |
| 746 | 776 |
| 747 // Add file to an existing directory. | 777 // Add file to an existing directory. |
| 748 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 778 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 749 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 779 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 750 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 780 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 751 Eq(base::FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); | 781 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) |
| 782 .Times(1); |
| 752 ASSERT_TRUE( | 783 ASSERT_TRUE( |
| 753 LoadChangeFeed("chromeos/gdata/delta_file_added_in_directory.json")); | 784 LoadChangeFeed("chromeos/gdata/delta_file_added_in_directory.json")); |
| 754 EXPECT_TRUE(EntryExists(base::FilePath( | 785 EXPECT_TRUE(EntryExists(base::FilePath( |
| 755 FILE_PATH_LITERAL("drive/Directory 1/Added file.gdoc")))); | 786 FILE_PATH_LITERAL("drive/root/Directory 1/Added file.gdoc")))); |
| 756 | 787 |
| 757 // Remove that file from the directory. | 788 // Remove that file from the directory. |
| 758 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 789 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 759 Eq(base::FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); | 790 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) |
| 791 .Times(1); |
| 760 ASSERT_TRUE( | 792 ASSERT_TRUE( |
| 761 LoadChangeFeed("chromeos/gdata/delta_file_deleted_in_directory.json")); | 793 LoadChangeFeed("chromeos/gdata/delta_file_deleted_in_directory.json")); |
| 762 EXPECT_TRUE( | 794 EXPECT_TRUE( |
| 763 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/Directory 1")))); | 795 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1")))); |
| 764 EXPECT_FALSE(EntryExists(base::FilePath( | 796 EXPECT_FALSE(EntryExists(base::FilePath( |
| 765 FILE_PATH_LITERAL("drive/Directory 1/Added file.gdoc")))); | 797 FILE_PATH_LITERAL("drive/root/Directory 1/Added file.gdoc")))); |
| 766 } | 798 } |
| 767 | 799 |
| 768 TEST_F(DriveFileSystemTest, ChangeFeed_AddFileToNewDirectory) { | 800 TEST_F(DriveFileSystemTest, ChangeFeed_AddFileToNewDirectory) { |
| 769 ASSERT_TRUE(LoadRootFeedDocument()); | 801 ASSERT_TRUE(LoadRootFeedDocument()); |
| 770 // Add file to a new directory. | 802 // Add file to a new directory. |
| 771 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 803 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 772 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 804 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 773 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 805 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 774 Eq(base::FilePath(FILE_PATH_LITERAL("drive/New Directory"))))).Times(1); | 806 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/New Directory"))))) |
| 807 .Times(1); |
| 775 | 808 |
| 776 ASSERT_TRUE( | 809 ASSERT_TRUE( |
| 777 LoadChangeFeed("chromeos/gdata/delta_file_added_in_new_directory.json")); | 810 LoadChangeFeed("chromeos/gdata/delta_file_added_in_new_directory.json")); |
| 778 | 811 |
| 779 EXPECT_TRUE( | 812 EXPECT_TRUE( |
| 780 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/New Directory")))); | 813 EntryExists(base::FilePath( |
| 814 FILE_PATH_LITERAL("drive/root/New Directory")))); |
| 781 EXPECT_TRUE(EntryExists(base::FilePath( | 815 EXPECT_TRUE(EntryExists(base::FilePath( |
| 782 FILE_PATH_LITERAL("drive/New Directory/File in new dir.gdoc")))); | 816 FILE_PATH_LITERAL("drive/root/New Directory/File in new dir.gdoc")))); |
| 783 } | 817 } |
| 784 | 818 |
| 785 TEST_F(DriveFileSystemTest, ChangeFeed_AddFileToNewButDeletedDirectory) { | 819 TEST_F(DriveFileSystemTest, ChangeFeed_AddFileToNewButDeletedDirectory) { |
| 786 ASSERT_TRUE(LoadRootFeedDocument()); | 820 ASSERT_TRUE(LoadRootFeedDocument()); |
| 787 | 821 |
| 788 // This feed contains the following updates: | 822 // This feed contains the following updates: |
| 789 // 1) A new PDF file is added to a new directory | 823 // 1) A new PDF file is added to a new directory |
| 790 // 2) but the new directory is marked "deleted" (i.e. moved to Trash) | 824 // 2) but the new directory is marked "deleted" (i.e. moved to Trash) |
| 791 // Hence, the PDF file should be just ignored. | 825 // Hence, the PDF file should be just ignored. |
| 792 ASSERT_TRUE(LoadChangeFeed( | 826 ASSERT_TRUE(LoadChangeFeed( |
| 793 "chromeos/gdata/delta_file_added_in_new_but_deleted_directory.json")); | 827 "chromeos/gdata/delta_file_added_in_new_but_deleted_directory.json")); |
| 794 } | 828 } |
| 795 | 829 |
| 796 TEST_F(DriveFileSystemTest, ChangeFeed_DirectoryMovedFromRootToDirectory) { | 830 TEST_F(DriveFileSystemTest, ChangeFeed_DirectoryMovedFromRootToDirectory) { |
| 797 ASSERT_TRUE(LoadRootFeedDocument()); | 831 ASSERT_TRUE(LoadRootFeedDocument()); |
| 798 | 832 |
| 799 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 833 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 800 "drive/Directory 2")))); | 834 "drive/root/Directory 2")))); |
| 801 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 835 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 802 "drive/Directory 1")))); | 836 "drive/root/Directory 1")))); |
| 803 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 837 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 804 "drive/Directory 1/SubDirectory File 1.txt")))); | 838 "drive/root/Directory 1/SubDirectory File 1.txt")))); |
| 805 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 839 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 806 "drive/Directory 1/Sub Directory Folder")))); | 840 "drive/root/Directory 1/Sub Directory Folder")))); |
| 807 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 841 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 808 "drive/Directory 1/Sub Directory Folder/Sub Sub Directory Folder")))); | 842 "drive/root/Directory 1/Sub Directory Folder/" |
| 843 "Sub Sub Directory Folder")))); |
| 809 | 844 |
| 810 // This will move "Directory 1" from "drive/" to "drive/Directory 2/". | 845 // This will move "Directory 1" from "drive/root/" to |
| 846 // "drive/root/Directory 2/". |
| 811 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 847 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 812 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 848 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 813 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 849 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 814 Eq(base::FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); | 850 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) |
| 851 .Times(1); |
| 815 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 852 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 816 Eq(base::FilePath(FILE_PATH_LITERAL("drive/Directory 2"))))).Times(1); | 853 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 2"))))) |
| 854 .Times(1); |
| 817 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 855 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 818 Eq(base::FilePath(FILE_PATH_LITERAL("drive/Directory 2/Directory 1"))))) | 856 Eq(base::FilePath( |
| 819 .Times(1); | 857 FILE_PATH_LITERAL("drive/root/Directory 2/Directory 1"))))).Times(1); |
| 820 ASSERT_TRUE(LoadChangeFeed( | 858 ASSERT_TRUE(LoadChangeFeed( |
| 821 "chromeos/gdata/delta_dir_moved_from_root_to_directory.json")); | 859 "chromeos/gdata/delta_dir_moved_from_root_to_directory.json")); |
| 822 | 860 |
| 823 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 861 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 824 "drive/Directory 2")))); | 862 "drive/root/Directory 2")))); |
| 825 EXPECT_FALSE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 863 EXPECT_FALSE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 826 "drive/Directory 1")))); | 864 "drive/root/Directory 1")))); |
| 827 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 865 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 828 "drive/Directory 2/Directory 1")))); | 866 "drive/root/Directory 2/Directory 1")))); |
| 829 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 867 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 830 "drive/Directory 2/Directory 1/SubDirectory File 1.txt")))); | 868 "drive/root/Directory 2/Directory 1/SubDirectory File 1.txt")))); |
| 831 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 869 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 832 "drive/Directory 2/Directory 1/Sub Directory Folder")))); | 870 "drive/root/Directory 2/Directory 1/Sub Directory Folder")))); |
| 833 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 871 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 834 "drive/Directory 2/Directory 1/Sub Directory Folder/" | 872 "drive/root/Directory 2/Directory 1/Sub Directory Folder/" |
| 835 "Sub Sub Directory Folder")))); | 873 "Sub Sub Directory Folder")))); |
| 836 } | 874 } |
| 837 | 875 |
| 838 TEST_F(DriveFileSystemTest, ChangeFeed_FileMovedFromDirectoryToRoot) { | 876 TEST_F(DriveFileSystemTest, ChangeFeed_FileMovedFromDirectoryToRoot) { |
| 839 ASSERT_TRUE(LoadRootFeedDocument()); | 877 ASSERT_TRUE(LoadRootFeedDocument()); |
| 840 | 878 |
| 841 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 879 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 842 "drive/Directory 1")))); | 880 "drive/root/Directory 1")))); |
| 843 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 881 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 844 "drive/Directory 1/Sub Directory Folder")))); | 882 "drive/root/Directory 1/Sub Directory Folder")))); |
| 845 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 883 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 846 "drive/Directory 1/Sub Directory Folder/Sub Sub Directory Folder")))); | 884 "drive/root/Directory 1/Sub Directory Folder/" |
| 885 "Sub Sub Directory Folder")))); |
| 847 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 886 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 848 "drive/Directory 1/SubDirectory File 1.txt")))); | 887 "drive/root/Directory 1/SubDirectory File 1.txt")))); |
| 849 | 888 |
| 850 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 889 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 851 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 890 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 852 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 891 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 853 Eq(base::FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); | 892 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) |
| 893 .Times(1); |
| 854 ASSERT_TRUE(LoadChangeFeed( | 894 ASSERT_TRUE(LoadChangeFeed( |
| 855 "chromeos/gdata/delta_file_moved_from_directory_to_root.json")); | 895 "chromeos/gdata/delta_file_moved_from_directory_to_root.json")); |
| 856 | 896 |
| 857 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 897 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 858 "drive/Directory 1")))); | 898 "drive/root/Directory 1")))); |
| 859 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 899 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 860 "drive/Directory 1/Sub Directory Folder")))); | 900 "drive/root/Directory 1/Sub Directory Folder")))); |
| 861 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 901 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 862 "drive/Directory 1/Sub Directory Folder/Sub Sub Directory Folder")))); | 902 "drive/root/Directory 1/Sub Directory Folder/" |
| 903 "Sub Sub Directory Folder")))); |
| 863 EXPECT_FALSE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 904 EXPECT_FALSE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 864 "drive/Directory 1/SubDirectory File 1.txt")))); | 905 "drive/root/Directory 1/SubDirectory File 1.txt")))); |
| 865 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 906 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 866 "drive/SubDirectory File 1.txt")))); | 907 "drive/root/SubDirectory File 1.txt")))); |
| 867 } | 908 } |
| 868 | 909 |
| 869 TEST_F(DriveFileSystemTest, ChangeFeed_FileRenamedInDirectory) { | 910 TEST_F(DriveFileSystemTest, ChangeFeed_FileRenamedInDirectory) { |
| 870 ASSERT_TRUE(LoadRootFeedDocument()); | 911 ASSERT_TRUE(LoadRootFeedDocument()); |
| 871 | 912 |
| 872 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 913 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 873 "drive/Directory 1")))); | 914 "drive/root/Directory 1")))); |
| 874 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 915 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 875 "drive/Directory 1/SubDirectory File 1.txt")))); | 916 "drive/root/Directory 1/SubDirectory File 1.txt")))); |
| 876 | 917 |
| 877 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 918 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 878 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 919 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 879 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 920 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 880 Eq(base::FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); | 921 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) |
| 922 .Times(1); |
| 881 ASSERT_TRUE(LoadChangeFeed( | 923 ASSERT_TRUE(LoadChangeFeed( |
| 882 "chromeos/gdata/delta_file_renamed_in_directory.json")); | 924 "chromeos/gdata/delta_file_renamed_in_directory.json")); |
| 883 | 925 |
| 884 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 926 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 885 "drive/Directory 1")))); | 927 "drive/root/Directory 1")))); |
| 886 EXPECT_FALSE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 928 EXPECT_FALSE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 887 "drive/Directory 1/SubDirectory File 1.txt")))); | 929 "drive/root/Directory 1/SubDirectory File 1.txt")))); |
| 888 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 930 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
| 889 "drive/Directory 1/New SubDirectory File 1.txt")))); | 931 "drive/root/Directory 1/New SubDirectory File 1.txt")))); |
| 890 } | 932 } |
| 891 | 933 |
| 892 TEST_F(DriveFileSystemTest, CachedFeedLoading) { | 934 TEST_F(DriveFileSystemTest, CachedFeedLoading) { |
| 893 ASSERT_TRUE(SaveTestFileSystem(USE_OLD_TIMESTAMP)); | 935 ASSERT_TRUE(SaveTestFileSystem(USE_OLD_TIMESTAMP)); |
| 894 // Tests that cached data can be loaded even if the server is not reachable. | 936 // Tests that cached data can be loaded even if the server is not reachable. |
| 895 fake_drive_service_->set_offline(true); | 937 fake_drive_service_->set_offline(true); |
| 896 | 938 |
| 897 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/File1")))); | 939 EXPECT_TRUE(EntryExists(base::FilePath( |
| 898 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/Dir1")))); | 940 FILE_PATH_LITERAL("drive/root/File1")))); |
| 941 EXPECT_TRUE(EntryExists(base::FilePath( |
| 942 FILE_PATH_LITERAL("drive/root/Dir1")))); |
| 899 EXPECT_TRUE( | 943 EXPECT_TRUE( |
| 900 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/Dir1/File2")))); | 944 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/root/Dir1/File2")))); |
| 901 EXPECT_TRUE( | 945 EXPECT_TRUE(EntryExists(base::FilePath( |
| 902 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/Dir1/SubDir2")))); | 946 FILE_PATH_LITERAL("drive/root/Dir1/SubDir2")))); |
| 903 EXPECT_TRUE(EntryExists( | 947 EXPECT_TRUE(EntryExists( |
| 904 base::FilePath(FILE_PATH_LITERAL("drive/Dir1/SubDir2/File3")))); | 948 base::FilePath(FILE_PATH_LITERAL("drive/root/Dir1/SubDir2/File3")))); |
| 905 } | 949 } |
| 906 | 950 |
| 907 TEST_F(DriveFileSystemTest, CachedFeedLoadingThenServerFeedLoading) { | 951 TEST_F(DriveFileSystemTest, CachedFeedLoadingThenServerFeedLoading) { |
| 908 ASSERT_TRUE(SaveTestFileSystem(USE_SERVER_TIMESTAMP)); | 952 ASSERT_TRUE(SaveTestFileSystem(USE_SERVER_TIMESTAMP)); |
| 909 | 953 |
| 910 // Kicks loading of cached file system and query for server update. | 954 // Kicks loading of cached file system and query for server update. |
| 911 EXPECT_TRUE(ReadDirectoryByPathSync(util::GetDriveMyDriveRootPath())); | 955 EXPECT_TRUE(ReadDirectoryByPathSync(util::GetDriveMyDriveRootPath())); |
| 912 | 956 |
| 913 // SaveTestFileSystem and "account_metadata.json" have the same changestamp, | 957 // SaveTestFileSystem and "account_metadata.json" have the same changestamp, |
| 914 // so no request for new feeds (i.e., call to GetResourceList) should happen. | 958 // so no request for new feeds (i.e., call to GetResourceList) should happen. |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 951 EXPECT_EQ(1, fake_drive_service_->resource_list_load_count()); | 995 EXPECT_EQ(1, fake_drive_service_->resource_list_load_count()); |
| 952 } | 996 } |
| 953 | 997 |
| 954 TEST_F(DriveFileSystemTest, TransferFileFromLocalToRemote_RegularFile) { | 998 TEST_F(DriveFileSystemTest, TransferFileFromLocalToRemote_RegularFile) { |
| 955 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); | 999 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); |
| 956 | 1000 |
| 957 ASSERT_TRUE(LoadRootFeedDocument()); | 1001 ASSERT_TRUE(LoadRootFeedDocument()); |
| 958 | 1002 |
| 959 // We'll add a file to the Drive root directory. | 1003 // We'll add a file to the Drive root directory. |
| 960 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1004 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 961 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 1005 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 962 | 1006 |
| 963 // Prepare a local file. | 1007 // Prepare a local file. |
| 964 base::ScopedTempDir temp_dir; | 1008 base::ScopedTempDir temp_dir; |
| 965 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 1009 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 966 const base::FilePath local_src_file_path = | 1010 const base::FilePath local_src_file_path = |
| 967 temp_dir.path().AppendASCII("local.txt"); | 1011 temp_dir.path().AppendASCII("local.txt"); |
| 968 const std::string kContent = "hello"; | 1012 const std::string kContent = "hello"; |
| 969 file_util::WriteFile(local_src_file_path, kContent.data(), kContent.size()); | 1013 file_util::WriteFile(local_src_file_path, kContent.data(), kContent.size()); |
| 970 | 1014 |
| 971 // Confirm that the remote file does not exist. | 1015 // Confirm that the remote file does not exist. |
| 972 const base::FilePath remote_dest_file_path( | 1016 const base::FilePath remote_dest_file_path( |
| 973 FILE_PATH_LITERAL("drive/remote.txt")); | 1017 FILE_PATH_LITERAL("drive/root/remote.txt")); |
| 974 EXPECT_FALSE(EntryExists(remote_dest_file_path)); | 1018 EXPECT_FALSE(EntryExists(remote_dest_file_path)); |
| 975 | 1019 |
| 976 // Transfer the local file to Drive. | 1020 // Transfer the local file to Drive. |
| 977 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 1021 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 978 file_system_->TransferFileFromLocalToRemote( | 1022 file_system_->TransferFileFromLocalToRemote( |
| 979 local_src_file_path, | 1023 local_src_file_path, |
| 980 remote_dest_file_path, | 1024 remote_dest_file_path, |
| 981 google_apis::test_util::CreateCopyResultCallback(&error)); | 1025 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 982 google_apis::test_util::RunBlockingPoolTask(); | 1026 google_apis::test_util::RunBlockingPoolTask(); |
| 983 | 1027 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 999 const std::string kEditUrl = | 1043 const std::string kEditUrl = |
| 1000 "https://3_document_self_link/document:5_document_resource_id"; | 1044 "https://3_document_self_link/document:5_document_resource_id"; |
| 1001 const std::string kResourceId = "document:5_document_resource_id"; | 1045 const std::string kResourceId = "document:5_document_resource_id"; |
| 1002 const std::string kContent = | 1046 const std::string kContent = |
| 1003 base::StringPrintf("{\"url\": \"%s\", \"resource_id\": \"%s\"}", | 1047 base::StringPrintf("{\"url\": \"%s\", \"resource_id\": \"%s\"}", |
| 1004 kEditUrl.c_str(), kResourceId.c_str()); | 1048 kEditUrl.c_str(), kResourceId.c_str()); |
| 1005 file_util::WriteFile(local_src_file_path, kContent.data(), kContent.size()); | 1049 file_util::WriteFile(local_src_file_path, kContent.data(), kContent.size()); |
| 1006 | 1050 |
| 1007 // Confirm that the remote file does not exist. | 1051 // Confirm that the remote file does not exist. |
| 1008 const base::FilePath remote_dest_file_path( | 1052 const base::FilePath remote_dest_file_path( |
| 1009 FILE_PATH_LITERAL("drive/Directory 1/Document 1.gdoc")); | 1053 FILE_PATH_LITERAL("drive/root/Directory 1/Document 1.gdoc")); |
| 1010 EXPECT_FALSE(EntryExists(remote_dest_file_path)); | 1054 EXPECT_FALSE(EntryExists(remote_dest_file_path)); |
| 1011 | 1055 |
| 1012 // We'll add a file to the Drive root and then move to "Directory 1". | 1056 // We'll add a file to the Drive root and then move to "Directory 1". |
| 1013 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1057 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1014 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 1058 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 1015 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1059 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1016 Eq(base::FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); | 1060 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) |
| 1061 .Times(1); |
| 1017 | 1062 |
| 1018 // We'll copy a hosted document using CopyHostedDocument. | 1063 // We'll copy a hosted document using CopyHostedDocument. |
| 1019 // ".gdoc" suffix should be stripped when copying. | 1064 // ".gdoc" suffix should be stripped when copying. |
| 1020 scoped_ptr<base::Value> value = | 1065 scoped_ptr<base::Value> value = |
| 1021 google_apis::test_util::LoadJSONFile( | 1066 google_apis::test_util::LoadJSONFile( |
| 1022 "chromeos/gdata/uploaded_document.json"); | 1067 "chromeos/gdata/uploaded_document.json"); |
| 1023 scoped_ptr<google_apis::ResourceEntry> resource_entry = | 1068 scoped_ptr<google_apis::ResourceEntry> resource_entry = |
| 1024 google_apis::ResourceEntry::ExtractAndParse(*value); | 1069 google_apis::ResourceEntry::ExtractAndParse(*value); |
| 1025 | 1070 |
| 1026 | 1071 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1037 // Now the remote file should exist. | 1082 // Now the remote file should exist. |
| 1038 EXPECT_TRUE(EntryExists(remote_dest_file_path)); | 1083 EXPECT_TRUE(EntryExists(remote_dest_file_path)); |
| 1039 } | 1084 } |
| 1040 | 1085 |
| 1041 TEST_F(DriveFileSystemTest, TransferFileFromRemoteToLocal_RegularFile) { | 1086 TEST_F(DriveFileSystemTest, TransferFileFromRemoteToLocal_RegularFile) { |
| 1042 ASSERT_TRUE(LoadRootFeedDocument()); | 1087 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1043 | 1088 |
| 1044 // The transfered file is cached and the change of "offline available" | 1089 // The transfered file is cached and the change of "offline available" |
| 1045 // attribute is notified. | 1090 // attribute is notified. |
| 1046 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1091 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1047 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 1092 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 1048 | 1093 |
| 1049 base::ScopedTempDir temp_dir; | 1094 base::ScopedTempDir temp_dir; |
| 1050 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 1095 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 1051 base::FilePath local_dest_file_path = | 1096 base::FilePath local_dest_file_path = |
| 1052 temp_dir.path().AppendASCII("local_copy.txt"); | 1097 temp_dir.path().AppendASCII("local_copy.txt"); |
| 1053 | 1098 |
| 1054 base::FilePath remote_src_file_path(FILE_PATH_LITERAL("drive/File 1.txt")); | 1099 base::FilePath remote_src_file_path( |
| 1100 FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1055 scoped_ptr<DriveEntryProto> file = GetEntryInfoByPathSync( | 1101 scoped_ptr<DriveEntryProto> file = GetEntryInfoByPathSync( |
| 1056 remote_src_file_path); | 1102 remote_src_file_path); |
| 1057 const int64 file_size = file->file_info().size(); | 1103 const int64 file_size = file->file_info().size(); |
| 1058 | 1104 |
| 1059 // Pretend we have enough space. | 1105 // Pretend we have enough space. |
| 1060 fake_free_disk_space_getter_->set_fake_free_disk_space( | 1106 fake_free_disk_space_getter_->set_fake_free_disk_space( |
| 1061 file_size + kMinFreeSpace); | 1107 file_size + kMinFreeSpace); |
| 1062 | 1108 |
| 1063 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 1109 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 1064 file_system_->TransferFileFromRemoteToLocal( | 1110 file_system_->TransferFileFromRemoteToLocal( |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1090 } | 1136 } |
| 1091 | 1137 |
| 1092 TEST_F(DriveFileSystemTest, TransferFileFromRemoteToLocal_HostedDocument) { | 1138 TEST_F(DriveFileSystemTest, TransferFileFromRemoteToLocal_HostedDocument) { |
| 1093 ASSERT_TRUE(LoadRootFeedDocument()); | 1139 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1094 | 1140 |
| 1095 base::ScopedTempDir temp_dir; | 1141 base::ScopedTempDir temp_dir; |
| 1096 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 1142 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 1097 base::FilePath local_dest_file_path = | 1143 base::FilePath local_dest_file_path = |
| 1098 temp_dir.path().AppendASCII("local_copy.txt"); | 1144 temp_dir.path().AppendASCII("local_copy.txt"); |
| 1099 base::FilePath remote_src_file_path( | 1145 base::FilePath remote_src_file_path( |
| 1100 FILE_PATH_LITERAL("drive/Document 1.gdoc")); | 1146 FILE_PATH_LITERAL("drive/root/Document 1.gdoc")); |
| 1101 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 1147 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 1102 file_system_->TransferFileFromRemoteToLocal( | 1148 file_system_->TransferFileFromRemoteToLocal( |
| 1103 remote_src_file_path, | 1149 remote_src_file_path, |
| 1104 local_dest_file_path, | 1150 local_dest_file_path, |
| 1105 google_apis::test_util::CreateCopyResultCallback(&error)); | 1151 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1106 google_apis::test_util::RunBlockingPoolTask(); | 1152 google_apis::test_util::RunBlockingPoolTask(); |
| 1107 | 1153 |
| 1108 EXPECT_EQ(DRIVE_FILE_OK, error); | 1154 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1109 | 1155 |
| 1110 scoped_ptr<DriveEntryProto> entry_proto = GetEntryInfoByPathSync( | 1156 scoped_ptr<DriveEntryProto> entry_proto = GetEntryInfoByPathSync( |
| 1111 remote_src_file_path); | 1157 remote_src_file_path); |
| 1112 ASSERT_TRUE(entry_proto.get()); | 1158 ASSERT_TRUE(entry_proto.get()); |
| 1113 VerifyHostedDocumentJSONFile(*entry_proto, local_dest_file_path); | 1159 VerifyHostedDocumentJSONFile(*entry_proto, local_dest_file_path); |
| 1114 } | 1160 } |
| 1115 | 1161 |
| 1116 TEST_F(DriveFileSystemTest, CopyNotExistingFile) { | 1162 TEST_F(DriveFileSystemTest, CopyNotExistingFile) { |
| 1117 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/Dummy file.txt")); | 1163 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/root/Dummy file.txt")); |
| 1118 base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/Test.log")); | 1164 base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/root/Test.log")); |
| 1119 | 1165 |
| 1120 ASSERT_TRUE(LoadRootFeedDocument()); | 1166 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1121 | 1167 |
| 1122 EXPECT_FALSE(EntryExists(src_file_path)); | 1168 EXPECT_FALSE(EntryExists(src_file_path)); |
| 1123 | 1169 |
| 1124 DriveFileError error = DRIVE_FILE_OK; | 1170 DriveFileError error = DRIVE_FILE_OK; |
| 1125 file_system_->Copy( | 1171 file_system_->Copy( |
| 1126 src_file_path, | 1172 src_file_path, |
| 1127 dest_file_path, | 1173 dest_file_path, |
| 1128 google_apis::test_util::CreateCopyResultCallback(&error)); | 1174 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1129 google_apis::test_util::RunBlockingPoolTask(); | 1175 google_apis::test_util::RunBlockingPoolTask(); |
| 1130 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); | 1176 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| 1131 | 1177 |
| 1132 EXPECT_FALSE(EntryExists(src_file_path)); | 1178 EXPECT_FALSE(EntryExists(src_file_path)); |
| 1133 EXPECT_FALSE(EntryExists(dest_file_path)); | 1179 EXPECT_FALSE(EntryExists(dest_file_path)); |
| 1134 } | 1180 } |
| 1135 | 1181 |
| 1136 TEST_F(DriveFileSystemTest, CopyFileToNonExistingDirectory) { | 1182 TEST_F(DriveFileSystemTest, CopyFileToNonExistingDirectory) { |
| 1137 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/File 1.txt")); | 1183 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1138 base::FilePath dest_parent_path(FILE_PATH_LITERAL("drive/Dummy")); | 1184 base::FilePath dest_parent_path(FILE_PATH_LITERAL("drive/root/Dummy")); |
| 1139 base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/Dummy/Test.log")); | 1185 base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/root/Dummy/Test.log")); |
| 1140 | 1186 |
| 1141 ASSERT_TRUE(LoadRootFeedDocument()); | 1187 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1142 | 1188 |
| 1143 ASSERT_TRUE(EntryExists(src_file_path)); | 1189 ASSERT_TRUE(EntryExists(src_file_path)); |
| 1144 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( | 1190 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( |
| 1145 src_file_path); | 1191 src_file_path); |
| 1146 ASSERT_TRUE(src_entry_proto.get()); | 1192 ASSERT_TRUE(src_entry_proto.get()); |
| 1147 std::string src_file_path_resource_id = | 1193 std::string src_file_path_resource_id = |
| 1148 src_entry_proto->resource_id(); | 1194 src_entry_proto->resource_id(); |
| 1149 EXPECT_FALSE(src_entry_proto->edit_url().empty()); | 1195 EXPECT_FALSE(src_entry_proto->edit_url().empty()); |
| 1150 | 1196 |
| 1151 EXPECT_FALSE(EntryExists(dest_parent_path)); | 1197 EXPECT_FALSE(EntryExists(dest_parent_path)); |
| 1152 | 1198 |
| 1153 DriveFileError error = DRIVE_FILE_OK; | 1199 DriveFileError error = DRIVE_FILE_OK; |
| 1154 file_system_->Move( | 1200 file_system_->Move( |
| 1155 src_file_path, | 1201 src_file_path, |
| 1156 dest_file_path, | 1202 dest_file_path, |
| 1157 google_apis::test_util::CreateCopyResultCallback(&error)); | 1203 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1158 google_apis::test_util::RunBlockingPoolTask(); | 1204 google_apis::test_util::RunBlockingPoolTask(); |
| 1159 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); | 1205 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| 1160 | 1206 |
| 1161 EXPECT_TRUE(EntryExists(src_file_path)); | 1207 EXPECT_TRUE(EntryExists(src_file_path)); |
| 1162 EXPECT_FALSE(EntryExists(dest_parent_path)); | 1208 EXPECT_FALSE(EntryExists(dest_parent_path)); |
| 1163 EXPECT_FALSE(EntryExists(dest_file_path)); | 1209 EXPECT_FALSE(EntryExists(dest_file_path)); |
| 1164 } | 1210 } |
| 1165 | 1211 |
| 1166 // Test the case where the parent of |dest_file_path| is an existing file, | 1212 // Test the case where the parent of |dest_file_path| is an existing file, |
| 1167 // not a directory. | 1213 // not a directory. |
| 1168 TEST_F(DriveFileSystemTest, CopyFileToInvalidPath) { | 1214 TEST_F(DriveFileSystemTest, CopyFileToInvalidPath) { |
| 1169 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/Document 1.gdoc")); | 1215 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/root/Document 1.gdoc")); |
| 1170 base::FilePath dest_parent_path( | 1216 base::FilePath dest_parent_path( |
| 1171 FILE_PATH_LITERAL("drive/Duplicate Name.txt")); | 1217 FILE_PATH_LITERAL("drive/root/Duplicate Name.txt")); |
| 1172 base::FilePath dest_file_path(FILE_PATH_LITERAL( | 1218 base::FilePath dest_file_path(FILE_PATH_LITERAL( |
| 1173 "drive/Duplicate Name.txt/Document 1.gdoc")); | 1219 "drive/root/Duplicate Name.txt/Document 1.gdoc")); |
| 1174 | 1220 |
| 1175 ASSERT_TRUE(LoadRootFeedDocument()); | 1221 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1176 | 1222 |
| 1177 ASSERT_TRUE(EntryExists(src_file_path)); | 1223 ASSERT_TRUE(EntryExists(src_file_path)); |
| 1178 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( | 1224 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( |
| 1179 src_file_path); | 1225 src_file_path); |
| 1180 ASSERT_TRUE(src_entry_proto.get()); | 1226 ASSERT_TRUE(src_entry_proto.get()); |
| 1181 std::string src_file_resource_id = | 1227 std::string src_file_resource_id = |
| 1182 src_entry_proto->resource_id(); | 1228 src_entry_proto->resource_id(); |
| 1183 EXPECT_FALSE(src_entry_proto->edit_url().empty()); | 1229 EXPECT_FALSE(src_entry_proto->edit_url().empty()); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1197 | 1243 |
| 1198 EXPECT_TRUE(EntryExists(src_file_path)); | 1244 EXPECT_TRUE(EntryExists(src_file_path)); |
| 1199 EXPECT_TRUE(EntryExists(src_file_path)); | 1245 EXPECT_TRUE(EntryExists(src_file_path)); |
| 1200 EXPECT_TRUE(EntryExists(dest_parent_path)); | 1246 EXPECT_TRUE(EntryExists(dest_parent_path)); |
| 1201 | 1247 |
| 1202 EXPECT_FALSE(EntryExists(dest_file_path)); | 1248 EXPECT_FALSE(EntryExists(dest_file_path)); |
| 1203 } | 1249 } |
| 1204 | 1250 |
| 1205 TEST_F(DriveFileSystemTest, RenameFile) { | 1251 TEST_F(DriveFileSystemTest, RenameFile) { |
| 1206 const base::FilePath src_file_path( | 1252 const base::FilePath src_file_path( |
| 1207 FILE_PATH_LITERAL("drive/Directory 1/SubDirectory File 1.txt")); | 1253 FILE_PATH_LITERAL("drive/root/Directory 1/SubDirectory File 1.txt")); |
| 1208 const base::FilePath src_parent_path(FILE_PATH_LITERAL("drive/Directory 1")); | 1254 const base::FilePath src_parent_path( |
| 1255 FILE_PATH_LITERAL("drive/root/Directory 1")); |
| 1209 const base::FilePath dest_file_path( | 1256 const base::FilePath dest_file_path( |
| 1210 FILE_PATH_LITERAL("drive/Directory 1/Test.log")); | 1257 FILE_PATH_LITERAL("drive/root/Directory 1/Test.log")); |
| 1211 | 1258 |
| 1212 ASSERT_TRUE(LoadRootFeedDocument()); | 1259 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1213 | 1260 |
| 1214 ASSERT_TRUE(EntryExists(src_file_path)); | 1261 ASSERT_TRUE(EntryExists(src_file_path)); |
| 1215 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( | 1262 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( |
| 1216 src_file_path); | 1263 src_file_path); |
| 1217 ASSERT_TRUE(src_entry_proto.get()); | 1264 ASSERT_TRUE(src_entry_proto.get()); |
| 1218 std::string src_file_resource_id = | 1265 std::string src_file_resource_id = |
| 1219 src_entry_proto->resource_id(); | 1266 src_entry_proto->resource_id(); |
| 1220 | 1267 |
| 1221 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1268 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1222 Eq(base::FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); | 1269 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) |
| 1270 .Times(1); |
| 1223 | 1271 |
| 1224 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 1272 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 1225 file_system_->Move( | 1273 file_system_->Move( |
| 1226 src_file_path, | 1274 src_file_path, |
| 1227 dest_file_path, | 1275 dest_file_path, |
| 1228 google_apis::test_util::CreateCopyResultCallback(&error)); | 1276 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1229 google_apis::test_util::RunBlockingPoolTask(); | 1277 google_apis::test_util::RunBlockingPoolTask(); |
| 1230 EXPECT_EQ(DRIVE_FILE_OK, error); | 1278 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1231 | 1279 |
| 1232 EXPECT_FALSE(EntryExists(src_file_path)); | 1280 EXPECT_FALSE(EntryExists(src_file_path)); |
| 1233 EXPECT_TRUE(EntryExists(dest_file_path)); | 1281 EXPECT_TRUE(EntryExists(dest_file_path)); |
| 1234 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path)); | 1282 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path)); |
| 1235 } | 1283 } |
| 1236 | 1284 |
| 1237 TEST_F(DriveFileSystemTest, MoveFileFromRootToSubDirectory) { | 1285 TEST_F(DriveFileSystemTest, MoveFileFromRootToSubDirectory) { |
| 1238 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/File 1.txt")); | 1286 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1239 base::FilePath dest_parent_path(FILE_PATH_LITERAL("drive/Directory 1")); | 1287 base::FilePath dest_parent_path(FILE_PATH_LITERAL("drive/root/Directory 1")); |
| 1240 base::FilePath dest_file_path( | 1288 base::FilePath dest_file_path( |
| 1241 FILE_PATH_LITERAL("drive/Directory 1/Test.log")); | 1289 FILE_PATH_LITERAL("drive/root/Directory 1/Test.log")); |
| 1242 | 1290 |
| 1243 ASSERT_TRUE(LoadRootFeedDocument()); | 1291 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1244 | 1292 |
| 1245 ASSERT_TRUE(EntryExists(src_file_path)); | 1293 ASSERT_TRUE(EntryExists(src_file_path)); |
| 1246 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( | 1294 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( |
| 1247 src_file_path); | 1295 src_file_path); |
| 1248 ASSERT_TRUE(src_entry_proto.get()); | 1296 ASSERT_TRUE(src_entry_proto.get()); |
| 1249 std::string src_file_resource_id = | 1297 std::string src_file_resource_id = |
| 1250 src_entry_proto->resource_id(); | 1298 src_entry_proto->resource_id(); |
| 1251 EXPECT_FALSE(src_entry_proto->edit_url().empty()); | 1299 EXPECT_FALSE(src_entry_proto->edit_url().empty()); |
| 1252 | 1300 |
| 1253 ASSERT_TRUE(EntryExists(dest_parent_path)); | 1301 ASSERT_TRUE(EntryExists(dest_parent_path)); |
| 1254 scoped_ptr<DriveEntryProto> dest_parent_proto = GetEntryInfoByPathSync( | 1302 scoped_ptr<DriveEntryProto> dest_parent_proto = GetEntryInfoByPathSync( |
| 1255 dest_parent_path); | 1303 dest_parent_path); |
| 1256 ASSERT_TRUE(dest_parent_proto.get()); | 1304 ASSERT_TRUE(dest_parent_proto.get()); |
| 1257 ASSERT_TRUE(dest_parent_proto->file_info().is_directory()); | 1305 ASSERT_TRUE(dest_parent_proto->file_info().is_directory()); |
| 1258 EXPECT_FALSE(dest_parent_proto->download_url().empty()); | 1306 EXPECT_FALSE(dest_parent_proto->download_url().empty()); |
| 1259 | 1307 |
| 1260 // Expect notification for both source and destination directories. | 1308 // Expect notification for both source and destination directories. |
| 1261 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1309 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1262 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 1310 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 1263 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1311 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1264 Eq(base::FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); | 1312 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) |
| 1313 .Times(1); |
| 1265 | 1314 |
| 1266 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 1315 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 1267 file_system_->Move( | 1316 file_system_->Move( |
| 1268 src_file_path, | 1317 src_file_path, |
| 1269 dest_file_path, | 1318 dest_file_path, |
| 1270 google_apis::test_util::CreateCopyResultCallback(&error)); | 1319 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1271 google_apis::test_util::RunBlockingPoolTask(); | 1320 google_apis::test_util::RunBlockingPoolTask(); |
| 1272 EXPECT_EQ(DRIVE_FILE_OK, error); | 1321 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1273 | 1322 |
| 1274 EXPECT_FALSE(EntryExists(src_file_path)); | 1323 EXPECT_FALSE(EntryExists(src_file_path)); |
| 1275 EXPECT_TRUE(EntryExists(dest_file_path)); | 1324 EXPECT_TRUE(EntryExists(dest_file_path)); |
| 1276 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path)); | 1325 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path)); |
| 1277 } | 1326 } |
| 1278 | 1327 |
| 1279 TEST_F(DriveFileSystemTest, MoveFileFromSubDirectoryToRoot) { | 1328 TEST_F(DriveFileSystemTest, MoveFileFromSubDirectoryToRoot) { |
| 1280 base::FilePath src_parent_path(FILE_PATH_LITERAL("drive/Directory 1")); | 1329 base::FilePath src_parent_path(FILE_PATH_LITERAL("drive/root/Directory 1")); |
| 1281 base::FilePath src_file_path( | 1330 base::FilePath src_file_path( |
| 1282 FILE_PATH_LITERAL("drive/Directory 1/SubDirectory File 1.txt")); | 1331 FILE_PATH_LITERAL("drive/root/Directory 1/SubDirectory File 1.txt")); |
| 1283 base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/Test.log")); | 1332 base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/root/Test.log")); |
| 1284 | 1333 |
| 1285 ASSERT_TRUE(LoadRootFeedDocument()); | 1334 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1286 | 1335 |
| 1287 ASSERT_TRUE(EntryExists(src_file_path)); | 1336 ASSERT_TRUE(EntryExists(src_file_path)); |
| 1288 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( | 1337 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( |
| 1289 src_file_path); | 1338 src_file_path); |
| 1290 ASSERT_TRUE(src_entry_proto.get()); | 1339 ASSERT_TRUE(src_entry_proto.get()); |
| 1291 std::string src_file_resource_id = | 1340 std::string src_file_resource_id = |
| 1292 src_entry_proto->resource_id(); | 1341 src_entry_proto->resource_id(); |
| 1293 EXPECT_FALSE(src_entry_proto->edit_url().empty()); | 1342 EXPECT_FALSE(src_entry_proto->edit_url().empty()); |
| 1294 | 1343 |
| 1295 ASSERT_TRUE(EntryExists(src_parent_path)); | 1344 ASSERT_TRUE(EntryExists(src_parent_path)); |
| 1296 scoped_ptr<DriveEntryProto> src_parent_proto = GetEntryInfoByPathSync( | 1345 scoped_ptr<DriveEntryProto> src_parent_proto = GetEntryInfoByPathSync( |
| 1297 src_parent_path); | 1346 src_parent_path); |
| 1298 ASSERT_TRUE(src_parent_proto.get()); | 1347 ASSERT_TRUE(src_parent_proto.get()); |
| 1299 ASSERT_TRUE(src_parent_proto->file_info().is_directory()); | 1348 ASSERT_TRUE(src_parent_proto->file_info().is_directory()); |
| 1300 EXPECT_FALSE(src_parent_proto->download_url().empty()); | 1349 EXPECT_FALSE(src_parent_proto->download_url().empty()); |
| 1301 | 1350 |
| 1302 // Expect notification for both source and destination directories. | 1351 // Expect notification for both source and destination directories. |
| 1303 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1352 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1304 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 1353 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 1305 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1354 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1306 Eq(base::FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); | 1355 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) |
| 1356 .Times(1); |
| 1307 | 1357 |
| 1308 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 1358 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 1309 file_system_->Move( | 1359 file_system_->Move( |
| 1310 src_file_path, | 1360 src_file_path, |
| 1311 dest_file_path, | 1361 dest_file_path, |
| 1312 google_apis::test_util::CreateCopyResultCallback(&error)); | 1362 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1313 google_apis::test_util::RunBlockingPoolTask(); | 1363 google_apis::test_util::RunBlockingPoolTask(); |
| 1314 EXPECT_EQ(DRIVE_FILE_OK, error); | 1364 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1315 | 1365 |
| 1316 EXPECT_FALSE(EntryExists(src_file_path)); | 1366 EXPECT_FALSE(EntryExists(src_file_path)); |
| 1317 ASSERT_TRUE(EntryExists(dest_file_path)); | 1367 ASSERT_TRUE(EntryExists(dest_file_path)); |
| 1318 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path)); | 1368 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path)); |
| 1319 } | 1369 } |
| 1320 | 1370 |
| 1321 TEST_F(DriveFileSystemTest, MoveFileBetweenSubDirectories) { | 1371 TEST_F(DriveFileSystemTest, MoveFileBetweenSubDirectories) { |
| 1322 base::FilePath src_parent_path(FILE_PATH_LITERAL("drive/Directory 1")); | 1372 base::FilePath src_parent_path(FILE_PATH_LITERAL("drive/root/Directory 1")); |
| 1323 base::FilePath src_file_path( | 1373 base::FilePath src_file_path( |
| 1324 FILE_PATH_LITERAL("drive/Directory 1/SubDirectory File 1.txt")); | 1374 FILE_PATH_LITERAL("drive/root/Directory 1/SubDirectory File 1.txt")); |
| 1325 base::FilePath dest_parent_path(FILE_PATH_LITERAL("drive/New Folder 1")); | 1375 base::FilePath dest_parent_path(FILE_PATH_LITERAL("drive/root/New Folder 1")); |
| 1326 base::FilePath dest_file_path( | 1376 base::FilePath dest_file_path( |
| 1327 FILE_PATH_LITERAL("drive/New Folder 1/Test.log")); | 1377 FILE_PATH_LITERAL("drive/root/New Folder 1/Test.log")); |
| 1328 base::FilePath interim_file_path(FILE_PATH_LITERAL("drive/Test.log")); | 1378 base::FilePath interim_file_path(FILE_PATH_LITERAL("drive/root/Test.log")); |
| 1329 | 1379 |
| 1330 ASSERT_TRUE(LoadRootFeedDocument()); | 1380 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1331 | 1381 |
| 1332 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1382 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1333 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 1383 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 1334 | 1384 |
| 1335 AddDirectoryFromFile(dest_parent_path, | 1385 AddDirectoryFromFile(dest_parent_path, |
| 1336 "chromeos/gdata/directory_entry_atom.json"); | 1386 "chromeos/gdata/directory_entry_atom.json"); |
| 1337 | 1387 |
| 1338 ASSERT_TRUE(EntryExists(src_file_path)); | 1388 ASSERT_TRUE(EntryExists(src_file_path)); |
| 1339 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( | 1389 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( |
| 1340 src_file_path); | 1390 src_file_path); |
| 1341 ASSERT_TRUE(src_entry_proto.get()); | 1391 ASSERT_TRUE(src_entry_proto.get()); |
| 1342 std::string src_file_resource_id = | 1392 std::string src_file_resource_id = |
| 1343 src_entry_proto->resource_id(); | 1393 src_entry_proto->resource_id(); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1354 scoped_ptr<DriveEntryProto> dest_parent_proto = GetEntryInfoByPathSync( | 1404 scoped_ptr<DriveEntryProto> dest_parent_proto = GetEntryInfoByPathSync( |
| 1355 dest_parent_path); | 1405 dest_parent_path); |
| 1356 ASSERT_TRUE(dest_parent_proto.get()); | 1406 ASSERT_TRUE(dest_parent_proto.get()); |
| 1357 ASSERT_TRUE(dest_parent_proto->file_info().is_directory()); | 1407 ASSERT_TRUE(dest_parent_proto->file_info().is_directory()); |
| 1358 EXPECT_FALSE(dest_parent_proto->download_url().empty()); | 1408 EXPECT_FALSE(dest_parent_proto->download_url().empty()); |
| 1359 | 1409 |
| 1360 EXPECT_FALSE(EntryExists(interim_file_path)); | 1410 EXPECT_FALSE(EntryExists(interim_file_path)); |
| 1361 | 1411 |
| 1362 // Expect notification for both source and destination directories. | 1412 // Expect notification for both source and destination directories. |
| 1363 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1413 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1364 Eq(base::FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); | 1414 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) |
| 1415 .Times(1); |
| 1365 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1416 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1366 Eq(base::FilePath(FILE_PATH_LITERAL("drive/New Folder 1"))))).Times(1); | 1417 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/New Folder 1"))))) |
| 1418 .Times(1); |
| 1367 | 1419 |
| 1368 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 1420 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 1369 file_system_->Move( | 1421 file_system_->Move( |
| 1370 src_file_path, | 1422 src_file_path, |
| 1371 dest_file_path, | 1423 dest_file_path, |
| 1372 google_apis::test_util::CreateCopyResultCallback(&error)); | 1424 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1373 google_apis::test_util::RunBlockingPoolTask(); | 1425 google_apis::test_util::RunBlockingPoolTask(); |
| 1374 EXPECT_EQ(DRIVE_FILE_OK, error); | 1426 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1375 | 1427 |
| 1376 EXPECT_FALSE(EntryExists(src_file_path)); | 1428 EXPECT_FALSE(EntryExists(src_file_path)); |
| 1377 EXPECT_FALSE(EntryExists(interim_file_path)); | 1429 EXPECT_FALSE(EntryExists(interim_file_path)); |
| 1378 | 1430 |
| 1379 EXPECT_FALSE(EntryExists(src_file_path)); | 1431 EXPECT_FALSE(EntryExists(src_file_path)); |
| 1380 EXPECT_TRUE(EntryExists(dest_file_path)); | 1432 EXPECT_TRUE(EntryExists(dest_file_path)); |
| 1381 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path)); | 1433 EXPECT_EQ(src_file_resource_id, GetResourceIdByPath(dest_file_path)); |
| 1382 } | 1434 } |
| 1383 | 1435 |
| 1384 TEST_F(DriveFileSystemTest, MoveNotExistingFile) { | 1436 TEST_F(DriveFileSystemTest, MoveNotExistingFile) { |
| 1385 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/Dummy file.txt")); | 1437 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/root/Dummy file.txt")); |
| 1386 base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/Test.log")); | 1438 base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/root/Test.log")); |
| 1387 | 1439 |
| 1388 ASSERT_TRUE(LoadRootFeedDocument()); | 1440 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1389 | 1441 |
| 1390 EXPECT_FALSE(EntryExists(src_file_path)); | 1442 EXPECT_FALSE(EntryExists(src_file_path)); |
| 1391 | 1443 |
| 1392 DriveFileError error = DRIVE_FILE_OK; | 1444 DriveFileError error = DRIVE_FILE_OK; |
| 1393 file_system_->Move( | 1445 file_system_->Move( |
| 1394 src_file_path, | 1446 src_file_path, |
| 1395 dest_file_path, | 1447 dest_file_path, |
| 1396 google_apis::test_util::CreateCopyResultCallback(&error)); | 1448 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1397 google_apis::test_util::RunBlockingPoolTask(); | 1449 google_apis::test_util::RunBlockingPoolTask(); |
| 1398 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); | 1450 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| 1399 | 1451 |
| 1400 EXPECT_FALSE(EntryExists(src_file_path)); | 1452 EXPECT_FALSE(EntryExists(src_file_path)); |
| 1401 EXPECT_FALSE(EntryExists(dest_file_path)); | 1453 EXPECT_FALSE(EntryExists(dest_file_path)); |
| 1402 } | 1454 } |
| 1403 | 1455 |
| 1404 TEST_F(DriveFileSystemTest, MoveFileToNonExistingDirectory) { | 1456 TEST_F(DriveFileSystemTest, MoveFileToNonExistingDirectory) { |
| 1405 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/File 1.txt")); | 1457 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1406 base::FilePath dest_parent_path(FILE_PATH_LITERAL("drive/Dummy")); | 1458 base::FilePath dest_parent_path(FILE_PATH_LITERAL("drive/root/Dummy")); |
| 1407 base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/Dummy/Test.log")); | 1459 base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/root/Dummy/Test.log")); |
| 1408 | 1460 |
| 1409 ASSERT_TRUE(LoadRootFeedDocument()); | 1461 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1410 | 1462 |
| 1411 ASSERT_TRUE(EntryExists(src_file_path)); | 1463 ASSERT_TRUE(EntryExists(src_file_path)); |
| 1412 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( | 1464 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( |
| 1413 src_file_path); | 1465 src_file_path); |
| 1414 ASSERT_TRUE(src_entry_proto.get()); | 1466 ASSERT_TRUE(src_entry_proto.get()); |
| 1415 std::string src_file_resource_id = | 1467 std::string src_file_resource_id = |
| 1416 src_entry_proto->resource_id(); | 1468 src_entry_proto->resource_id(); |
| 1417 EXPECT_FALSE(src_entry_proto->edit_url().empty()); | 1469 EXPECT_FALSE(src_entry_proto->edit_url().empty()); |
| 1418 | 1470 |
| 1419 EXPECT_FALSE(EntryExists(dest_parent_path)); | 1471 EXPECT_FALSE(EntryExists(dest_parent_path)); |
| 1420 | 1472 |
| 1421 DriveFileError error = DRIVE_FILE_OK; | 1473 DriveFileError error = DRIVE_FILE_OK; |
| 1422 file_system_->Move( | 1474 file_system_->Move( |
| 1423 src_file_path, | 1475 src_file_path, |
| 1424 dest_file_path, | 1476 dest_file_path, |
| 1425 google_apis::test_util::CreateCopyResultCallback(&error)); | 1477 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1426 google_apis::test_util::RunBlockingPoolTask(); | 1478 google_apis::test_util::RunBlockingPoolTask(); |
| 1427 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); | 1479 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| 1428 | 1480 |
| 1429 EXPECT_FALSE(EntryExists(dest_parent_path)); | 1481 EXPECT_FALSE(EntryExists(dest_parent_path)); |
| 1430 EXPECT_FALSE(EntryExists(dest_file_path)); | 1482 EXPECT_FALSE(EntryExists(dest_file_path)); |
| 1431 } | 1483 } |
| 1432 | 1484 |
| 1433 // Test the case where the parent of |dest_file_path| is a existing file, | 1485 // Test the case where the parent of |dest_file_path| is a existing file, |
| 1434 // not a directory. | 1486 // not a directory. |
| 1435 TEST_F(DriveFileSystemTest, MoveFileToInvalidPath) { | 1487 TEST_F(DriveFileSystemTest, MoveFileToInvalidPath) { |
| 1436 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/File 1.txt")); | 1488 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1437 base::FilePath dest_parent_path( | 1489 base::FilePath dest_parent_path( |
| 1438 FILE_PATH_LITERAL("drive/Duplicate Name.txt")); | 1490 FILE_PATH_LITERAL("drive/root/Duplicate Name.txt")); |
| 1439 base::FilePath dest_file_path(FILE_PATH_LITERAL( | 1491 base::FilePath dest_file_path(FILE_PATH_LITERAL( |
| 1440 "drive/Duplicate Name.txt/Test.log")); | 1492 "drive/root/Duplicate Name.txt/Test.log")); |
| 1441 | 1493 |
| 1442 ASSERT_TRUE(LoadRootFeedDocument()); | 1494 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1443 | 1495 |
| 1444 ASSERT_TRUE(EntryExists(src_file_path)); | 1496 ASSERT_TRUE(EntryExists(src_file_path)); |
| 1445 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( | 1497 scoped_ptr<DriveEntryProto> src_entry_proto = GetEntryInfoByPathSync( |
| 1446 src_file_path); | 1498 src_file_path); |
| 1447 ASSERT_TRUE(src_entry_proto.get()); | 1499 ASSERT_TRUE(src_entry_proto.get()); |
| 1448 std::string src_file_resource_id = | 1500 std::string src_file_resource_id = |
| 1449 src_entry_proto->resource_id(); | 1501 src_entry_proto->resource_id(); |
| 1450 EXPECT_FALSE(src_entry_proto->edit_url().empty()); | 1502 EXPECT_FALSE(src_entry_proto->edit_url().empty()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1463 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_A_DIRECTORY, error); | 1515 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_A_DIRECTORY, error); |
| 1464 | 1516 |
| 1465 EXPECT_TRUE(EntryExists(src_file_path)); | 1517 EXPECT_TRUE(EntryExists(src_file_path)); |
| 1466 EXPECT_TRUE(EntryExists(dest_parent_path)); | 1518 EXPECT_TRUE(EntryExists(dest_parent_path)); |
| 1467 EXPECT_FALSE(EntryExists(dest_file_path)); | 1519 EXPECT_FALSE(EntryExists(dest_file_path)); |
| 1468 } | 1520 } |
| 1469 | 1521 |
| 1470 TEST_F(DriveFileSystemTest, RemoveEntries) { | 1522 TEST_F(DriveFileSystemTest, RemoveEntries) { |
| 1471 ASSERT_TRUE(LoadRootFeedDocument()); | 1523 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1472 | 1524 |
| 1473 base::FilePath nonexisting_file(FILE_PATH_LITERAL("drive/Dummy file.txt")); | 1525 base::FilePath nonexisting_file( |
| 1474 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); | 1526 FILE_PATH_LITERAL("drive/root/Dummy file.txt")); |
| 1475 base::FilePath dir_in_root(FILE_PATH_LITERAL("drive/Directory 1")); | 1527 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1528 base::FilePath dir_in_root(FILE_PATH_LITERAL("drive/root/Directory 1")); |
| 1476 base::FilePath file_in_subdir( | 1529 base::FilePath file_in_subdir( |
| 1477 FILE_PATH_LITERAL("drive/Directory 1/SubDirectory File 1.txt")); | 1530 FILE_PATH_LITERAL("drive/root/Directory 1/SubDirectory File 1.txt")); |
| 1478 | 1531 |
| 1479 ASSERT_TRUE(EntryExists(file_in_root)); | 1532 ASSERT_TRUE(EntryExists(file_in_root)); |
| 1480 scoped_ptr<DriveEntryProto> file_in_root_proto = GetEntryInfoByPathSync( | 1533 scoped_ptr<DriveEntryProto> file_in_root_proto = GetEntryInfoByPathSync( |
| 1481 file_in_root); | 1534 file_in_root); |
| 1482 ASSERT_TRUE(file_in_root_proto.get()); | 1535 ASSERT_TRUE(file_in_root_proto.get()); |
| 1483 | 1536 |
| 1484 ASSERT_TRUE(EntryExists(dir_in_root)); | 1537 ASSERT_TRUE(EntryExists(dir_in_root)); |
| 1485 scoped_ptr<DriveEntryProto> dir_in_root_proto = GetEntryInfoByPathSync( | 1538 scoped_ptr<DriveEntryProto> dir_in_root_proto = GetEntryInfoByPathSync( |
| 1486 dir_in_root); | 1539 dir_in_root); |
| 1487 ASSERT_TRUE(dir_in_root_proto.get()); | 1540 ASSERT_TRUE(dir_in_root_proto.get()); |
| 1488 ASSERT_TRUE(dir_in_root_proto->file_info().is_directory()); | 1541 ASSERT_TRUE(dir_in_root_proto->file_info().is_directory()); |
| 1489 | 1542 |
| 1490 ASSERT_TRUE(EntryExists(file_in_subdir)); | 1543 ASSERT_TRUE(EntryExists(file_in_subdir)); |
| 1491 scoped_ptr<DriveEntryProto> file_in_subdir_proto = GetEntryInfoByPathSync( | 1544 scoped_ptr<DriveEntryProto> file_in_subdir_proto = GetEntryInfoByPathSync( |
| 1492 file_in_subdir); | 1545 file_in_subdir); |
| 1493 ASSERT_TRUE(file_in_subdir_proto.get()); | 1546 ASSERT_TRUE(file_in_subdir_proto.get()); |
| 1494 | 1547 |
| 1495 // Once for file in root and once for file... | 1548 // Once for file in root and once for file... |
| 1496 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1549 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1497 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(2); | 1550 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(2); |
| 1498 | 1551 |
| 1499 // Remove first file in root. | 1552 // Remove first file in root. |
| 1500 EXPECT_TRUE(RemoveEntry(file_in_root)); | 1553 EXPECT_TRUE(RemoveEntry(file_in_root)); |
| 1501 EXPECT_FALSE(EntryExists(file_in_root)); | 1554 EXPECT_FALSE(EntryExists(file_in_root)); |
| 1502 EXPECT_TRUE(EntryExists(dir_in_root)); | 1555 EXPECT_TRUE(EntryExists(dir_in_root)); |
| 1503 EXPECT_TRUE(EntryExists(file_in_subdir)); | 1556 EXPECT_TRUE(EntryExists(file_in_subdir)); |
| 1504 | 1557 |
| 1505 // Remove directory. | 1558 // Remove directory. |
| 1506 EXPECT_TRUE(RemoveEntry(dir_in_root)); | 1559 EXPECT_TRUE(RemoveEntry(dir_in_root)); |
| 1507 EXPECT_FALSE(EntryExists(file_in_root)); | 1560 EXPECT_FALSE(EntryExists(file_in_root)); |
| 1508 EXPECT_FALSE(EntryExists(dir_in_root)); | 1561 EXPECT_FALSE(EntryExists(dir_in_root)); |
| 1509 EXPECT_FALSE(EntryExists(file_in_subdir)); | 1562 EXPECT_FALSE(EntryExists(file_in_subdir)); |
| 1510 | 1563 |
| 1511 // Try removing file in already removed subdirectory. | 1564 // Try removing file in already removed subdirectory. |
| 1512 EXPECT_FALSE(RemoveEntry(file_in_subdir)); | 1565 EXPECT_FALSE(RemoveEntry(file_in_subdir)); |
| 1513 | 1566 |
| 1514 // Try removing non-existing file. | 1567 // Try removing non-existing file. |
| 1515 EXPECT_FALSE(RemoveEntry(nonexisting_file)); | 1568 EXPECT_FALSE(RemoveEntry(nonexisting_file)); |
| 1516 | 1569 |
| 1517 // Try removing root file element. | 1570 // Try removing root file element. |
| 1518 EXPECT_FALSE(RemoveEntry(base::FilePath(FILE_PATH_LITERAL("drive")))); | 1571 EXPECT_FALSE(RemoveEntry(base::FilePath(FILE_PATH_LITERAL("drive/root")))); |
| 1519 | 1572 |
| 1520 // Need this to ensure OnDirectoryChanged() is run. | 1573 // Need this to ensure OnDirectoryChanged() is run. |
| 1521 google_apis::test_util::RunBlockingPoolTask(); | 1574 google_apis::test_util::RunBlockingPoolTask(); |
| 1522 } | 1575 } |
| 1523 | 1576 |
| 1524 TEST_F(DriveFileSystemTest, CreateDirectory) { | 1577 TEST_F(DriveFileSystemTest, CreateDirectory) { |
| 1525 ASSERT_TRUE(LoadRootFeedDocument()); | 1578 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1526 | 1579 |
| 1527 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1580 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1528 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 1581 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 1529 | 1582 |
| 1530 // Create directory in root. | 1583 // Create directory in root. |
| 1531 base::FilePath dir_path(FILE_PATH_LITERAL("drive/New Folder 1")); | 1584 base::FilePath dir_path(FILE_PATH_LITERAL("drive/root/New Folder 1")); |
| 1532 EXPECT_FALSE(EntryExists(dir_path)); | 1585 EXPECT_FALSE(EntryExists(dir_path)); |
| 1533 AddDirectoryFromFile(dir_path, "chromeos/gdata/directory_entry_atom.json"); | 1586 AddDirectoryFromFile(dir_path, "chromeos/gdata/directory_entry_atom.json"); |
| 1534 EXPECT_TRUE(EntryExists(dir_path)); | 1587 EXPECT_TRUE(EntryExists(dir_path)); |
| 1535 | 1588 |
| 1536 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1589 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1537 Eq(base::FilePath(FILE_PATH_LITERAL("drive/New Folder 1"))))).Times(1); | 1590 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/New Folder 1"))))) |
| 1591 .Times(1); |
| 1538 | 1592 |
| 1539 // Create directory in a sub directory. | 1593 // Create directory in a sub directory. |
| 1540 base::FilePath subdir_path( | 1594 base::FilePath subdir_path( |
| 1541 FILE_PATH_LITERAL("drive/New Folder 1/New Folder 2")); | 1595 FILE_PATH_LITERAL("drive/root/New Folder 1/New Folder 2")); |
| 1542 EXPECT_FALSE(EntryExists(subdir_path)); | 1596 EXPECT_FALSE(EntryExists(subdir_path)); |
| 1543 AddDirectoryFromFile(subdir_path, | 1597 AddDirectoryFromFile(subdir_path, |
| 1544 "chromeos/gdata/directory_entry_atom2.json"); | 1598 "chromeos/gdata/directory_entry_atom2.json"); |
| 1545 EXPECT_TRUE(EntryExists(subdir_path)); | 1599 EXPECT_TRUE(EntryExists(subdir_path)); |
| 1546 } | 1600 } |
| 1547 | 1601 |
| 1548 // Create a directory through the document service | 1602 // Create a directory through the document service |
| 1549 TEST_F(DriveFileSystemTest, CreateDirectoryWithService) { | 1603 TEST_F(DriveFileSystemTest, CreateDirectoryWithService) { |
| 1550 ASSERT_TRUE(LoadRootFeedDocument()); | 1604 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1551 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1605 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1552 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 1606 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 1553 | 1607 |
| 1554 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 1608 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 1555 file_system_->CreateDirectory( | 1609 file_system_->CreateDirectory( |
| 1556 base::FilePath(FILE_PATH_LITERAL("drive/Sample Directory Title")), | 1610 base::FilePath(FILE_PATH_LITERAL("drive/root/Sample Directory Title")), |
| 1557 false, // is_exclusive | 1611 false, // is_exclusive |
| 1558 true, // is_recursive | 1612 true, // is_recursive |
| 1559 google_apis::test_util::CreateCopyResultCallback(&error)); | 1613 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1560 google_apis::test_util::RunBlockingPoolTask(); | 1614 google_apis::test_util::RunBlockingPoolTask(); |
| 1561 | 1615 |
| 1562 EXPECT_EQ(DRIVE_FILE_OK, error); | 1616 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1563 } | 1617 } |
| 1564 | 1618 |
| 1565 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_EnoughSpace) { | 1619 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_EnoughSpace) { |
| 1566 ASSERT_TRUE(LoadRootFeedDocument()); | 1620 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1567 | 1621 |
| 1568 // The transfered file is cached and the change of "offline available" | 1622 // The transfered file is cached and the change of "offline available" |
| 1569 // attribute is notified. | 1623 // attribute is notified. |
| 1570 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1624 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1571 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 1625 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 1572 | 1626 |
| 1573 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); | 1627 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1574 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); | 1628 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); |
| 1575 const int64 file_size = entry_proto->file_info().size(); | 1629 const int64 file_size = entry_proto->file_info().size(); |
| 1576 | 1630 |
| 1577 // Pretend we have enough space. | 1631 // Pretend we have enough space. |
| 1578 fake_free_disk_space_getter_->set_fake_free_disk_space( | 1632 fake_free_disk_space_getter_->set_fake_free_disk_space( |
| 1579 file_size + kMinFreeSpace); | 1633 file_size + kMinFreeSpace); |
| 1580 | 1634 |
| 1581 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 1635 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 1582 base::FilePath file_path; | 1636 base::FilePath file_path; |
| 1583 std::string mime_type; | 1637 std::string mime_type; |
| 1584 DriveFileType file_type; | 1638 DriveFileType file_type; |
| 1585 file_system_->GetFileByPath(file_in_root, | 1639 file_system_->GetFileByPath(file_in_root, |
| 1586 google_apis::test_util::CreateCopyResultCallback( | 1640 google_apis::test_util::CreateCopyResultCallback( |
| 1587 &error, &file_path, &mime_type, &file_type)); | 1641 &error, &file_path, &mime_type, &file_type)); |
| 1588 google_apis::test_util::RunBlockingPoolTask(); | 1642 google_apis::test_util::RunBlockingPoolTask(); |
| 1589 | 1643 |
| 1590 EXPECT_EQ(DRIVE_FILE_OK, error); | 1644 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1591 EXPECT_EQ(REGULAR_FILE, file_type); | 1645 EXPECT_EQ(REGULAR_FILE, file_type); |
| 1592 } | 1646 } |
| 1593 | 1647 |
| 1594 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_NoSpaceAtAll) { | 1648 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_NoSpaceAtAll) { |
| 1595 ASSERT_TRUE(LoadRootFeedDocument()); | 1649 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1596 | 1650 |
| 1597 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); | 1651 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1598 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); | 1652 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); |
| 1599 | 1653 |
| 1600 // Pretend we have no space at all. | 1654 // Pretend we have no space at all. |
| 1601 fake_free_disk_space_getter_->set_fake_free_disk_space(0); | 1655 fake_free_disk_space_getter_->set_fake_free_disk_space(0); |
| 1602 | 1656 |
| 1603 DriveFileError error = DRIVE_FILE_OK; | 1657 DriveFileError error = DRIVE_FILE_OK; |
| 1604 base::FilePath file_path; | 1658 base::FilePath file_path; |
| 1605 std::string mime_type; | 1659 std::string mime_type; |
| 1606 DriveFileType file_type; | 1660 DriveFileType file_type; |
| 1607 file_system_->GetFileByPath(file_in_root, | 1661 file_system_->GetFileByPath(file_in_root, |
| 1608 google_apis::test_util::CreateCopyResultCallback( | 1662 google_apis::test_util::CreateCopyResultCallback( |
| 1609 &error, &file_path, &mime_type, &file_type)); | 1663 &error, &file_path, &mime_type, &file_type)); |
| 1610 google_apis::test_util::RunBlockingPoolTask(); | 1664 google_apis::test_util::RunBlockingPoolTask(); |
| 1611 | 1665 |
| 1612 EXPECT_EQ(DRIVE_FILE_ERROR_NO_SPACE, error); | 1666 EXPECT_EQ(DRIVE_FILE_ERROR_NO_SPACE, error); |
| 1613 } | 1667 } |
| 1614 | 1668 |
| 1615 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_NoEnoughSpaceButCanFreeUp) { | 1669 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_NoEnoughSpaceButCanFreeUp) { |
| 1616 ASSERT_TRUE(LoadRootFeedDocument()); | 1670 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1617 | 1671 |
| 1618 // The transfered file is cached and the change of "offline available" | 1672 // The transfered file is cached and the change of "offline available" |
| 1619 // attribute is notified. | 1673 // attribute is notified. |
| 1620 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1674 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1621 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 1675 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 1622 | 1676 |
| 1623 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); | 1677 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1624 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); | 1678 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); |
| 1625 const int64 file_size = entry_proto->file_info().size(); | 1679 const int64 file_size = entry_proto->file_info().size(); |
| 1626 | 1680 |
| 1627 // Pretend we have no space first (checked before downloading a file), | 1681 // Pretend we have no space first (checked before downloading a file), |
| 1628 // but then start reporting we have space. This is to emulate that | 1682 // but then start reporting we have space. This is to emulate that |
| 1629 // the disk space was freed up by removing temporary files. | 1683 // the disk space was freed up by removing temporary files. |
| 1630 fake_free_disk_space_getter_->set_fake_free_disk_space( | 1684 fake_free_disk_space_getter_->set_fake_free_disk_space( |
| 1631 file_size + kMinFreeSpace); | 1685 file_size + kMinFreeSpace); |
| 1632 fake_free_disk_space_getter_->set_fake_free_disk_space(0); | 1686 fake_free_disk_space_getter_->set_fake_free_disk_space(0); |
| 1633 fake_free_disk_space_getter_->set_fake_free_disk_space( | 1687 fake_free_disk_space_getter_->set_fake_free_disk_space( |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1663 EXPECT_EQ(DRIVE_FILE_OK, error); | 1717 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1664 EXPECT_EQ(REGULAR_FILE, file_type); | 1718 EXPECT_EQ(REGULAR_FILE, file_type); |
| 1665 | 1719 |
| 1666 // The cache entry should be removed in order to free up space. | 1720 // The cache entry should be removed in order to free up space. |
| 1667 ASSERT_FALSE(CacheEntryExists("<resource_id>", "<md5>")); | 1721 ASSERT_FALSE(CacheEntryExists("<resource_id>", "<md5>")); |
| 1668 } | 1722 } |
| 1669 | 1723 |
| 1670 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_EnoughSpaceButBecomeFull) { | 1724 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_EnoughSpaceButBecomeFull) { |
| 1671 ASSERT_TRUE(LoadRootFeedDocument()); | 1725 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1672 | 1726 |
| 1673 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); | 1727 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1674 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); | 1728 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); |
| 1675 const int64 file_size = entry_proto->file_info().size(); | 1729 const int64 file_size = entry_proto->file_info().size(); |
| 1676 | 1730 |
| 1677 // Pretend we have enough space first (checked before downloading a file), | 1731 // Pretend we have enough space first (checked before downloading a file), |
| 1678 // but then start reporting we have not enough space. This is to emulate that | 1732 // but then start reporting we have not enough space. This is to emulate that |
| 1679 // the disk space becomes full after the file is downloaded for some reason | 1733 // the disk space becomes full after the file is downloaded for some reason |
| 1680 // (ex. the actual file was larger than the expected size). | 1734 // (ex. the actual file was larger than the expected size). |
| 1681 fake_free_disk_space_getter_->set_fake_free_disk_space( | 1735 fake_free_disk_space_getter_->set_fake_free_disk_space( |
| 1682 file_size + kMinFreeSpace); | 1736 file_size + kMinFreeSpace); |
| 1683 fake_free_disk_space_getter_->set_fake_free_disk_space(kMinFreeSpace - 1); | 1737 fake_free_disk_space_getter_->set_fake_free_disk_space(kMinFreeSpace - 1); |
| 1684 fake_free_disk_space_getter_->set_fake_free_disk_space(kMinFreeSpace - 1); | 1738 fake_free_disk_space_getter_->set_fake_free_disk_space(kMinFreeSpace - 1); |
| 1685 | 1739 |
| 1686 DriveFileError error = DRIVE_FILE_OK; | 1740 DriveFileError error = DRIVE_FILE_OK; |
| 1687 base::FilePath file_path; | 1741 base::FilePath file_path; |
| 1688 std::string mime_type; | 1742 std::string mime_type; |
| 1689 DriveFileType file_type; | 1743 DriveFileType file_type; |
| 1690 file_system_->GetFileByPath(file_in_root, | 1744 file_system_->GetFileByPath(file_in_root, |
| 1691 google_apis::test_util::CreateCopyResultCallback( | 1745 google_apis::test_util::CreateCopyResultCallback( |
| 1692 &error, &file_path, &mime_type, &file_type)); | 1746 &error, &file_path, &mime_type, &file_type)); |
| 1693 google_apis::test_util::RunBlockingPoolTask(); | 1747 google_apis::test_util::RunBlockingPoolTask(); |
| 1694 | 1748 |
| 1695 EXPECT_EQ(DRIVE_FILE_ERROR_NO_SPACE, error); | 1749 EXPECT_EQ(DRIVE_FILE_ERROR_NO_SPACE, error); |
| 1696 } | 1750 } |
| 1697 | 1751 |
| 1698 TEST_F(DriveFileSystemTest, GetFileByPath_FromCache) { | 1752 TEST_F(DriveFileSystemTest, GetFileByPath_FromCache) { |
| 1699 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); | 1753 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); |
| 1700 | 1754 |
| 1701 ASSERT_TRUE(LoadRootFeedDocument()); | 1755 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1702 | 1756 |
| 1703 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); | 1757 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1704 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); | 1758 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); |
| 1705 | 1759 |
| 1706 // Store something as cached version of this file. | 1760 // Store something as cached version of this file. |
| 1707 DriveFileError error = DRIVE_FILE_OK; | 1761 DriveFileError error = DRIVE_FILE_OK; |
| 1708 cache_->Store(entry_proto->resource_id(), | 1762 cache_->Store(entry_proto->resource_id(), |
| 1709 entry_proto->file_specific_info().file_md5(), | 1763 entry_proto->file_specific_info().file_md5(), |
| 1710 google_apis::test_util::GetTestFilePath( | 1764 google_apis::test_util::GetTestFilePath( |
| 1711 "chromeos/gdata/root_feed.json"), | 1765 "chromeos/gdata/root_feed.json"), |
| 1712 DriveCache::FILE_OPERATION_COPY, | 1766 DriveCache::FILE_OPERATION_COPY, |
| 1713 google_apis::test_util::CreateCopyResultCallback(&error)); | 1767 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1714 google_apis::test_util::RunBlockingPoolTask(); | 1768 google_apis::test_util::RunBlockingPoolTask(); |
| 1715 EXPECT_EQ(DRIVE_FILE_OK, error); | 1769 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1716 | 1770 |
| 1717 base::FilePath file_path; | 1771 base::FilePath file_path; |
| 1718 std::string mime_type; | 1772 std::string mime_type; |
| 1719 DriveFileType file_type; | 1773 DriveFileType file_type; |
| 1720 file_system_->GetFileByPath(file_in_root, | 1774 file_system_->GetFileByPath(file_in_root, |
| 1721 google_apis::test_util::CreateCopyResultCallback( | 1775 google_apis::test_util::CreateCopyResultCallback( |
| 1722 &error, &file_path, &mime_type, &file_type)); | 1776 &error, &file_path, &mime_type, &file_type)); |
| 1723 google_apis::test_util::RunBlockingPoolTask(); | 1777 google_apis::test_util::RunBlockingPoolTask(); |
| 1724 | 1778 |
| 1725 EXPECT_EQ(DRIVE_FILE_OK, error); | 1779 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1726 EXPECT_EQ(REGULAR_FILE, file_type); | 1780 EXPECT_EQ(REGULAR_FILE, file_type); |
| 1727 } | 1781 } |
| 1728 | 1782 |
| 1729 TEST_F(DriveFileSystemTest, GetFileByPath_HostedDocument) { | 1783 TEST_F(DriveFileSystemTest, GetFileByPath_HostedDocument) { |
| 1730 ASSERT_TRUE(LoadRootFeedDocument()); | 1784 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1731 | 1785 |
| 1732 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/Document 1.gdoc")); | 1786 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/Document 1.gdoc")); |
| 1733 scoped_ptr<DriveEntryProto> src_entry_proto = | 1787 scoped_ptr<DriveEntryProto> src_entry_proto = |
| 1734 GetEntryInfoByPathSync(file_in_root); | 1788 GetEntryInfoByPathSync(file_in_root); |
| 1735 ASSERT_TRUE(src_entry_proto.get()); | 1789 ASSERT_TRUE(src_entry_proto.get()); |
| 1736 | 1790 |
| 1737 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 1791 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 1738 base::FilePath file_path; | 1792 base::FilePath file_path; |
| 1739 std::string mime_type; | 1793 std::string mime_type; |
| 1740 DriveFileType file_type; | 1794 DriveFileType file_type; |
| 1741 file_system_->GetFileByPath(file_in_root, | 1795 file_system_->GetFileByPath(file_in_root, |
| 1742 google_apis::test_util::CreateCopyResultCallback( | 1796 google_apis::test_util::CreateCopyResultCallback( |
| 1743 &error, &file_path, &mime_type, &file_type)); | 1797 &error, &file_path, &mime_type, &file_type)); |
| 1744 google_apis::test_util::RunBlockingPoolTask(); | 1798 google_apis::test_util::RunBlockingPoolTask(); |
| 1745 | 1799 |
| 1746 EXPECT_EQ(HOSTED_DOCUMENT, file_type); | 1800 EXPECT_EQ(HOSTED_DOCUMENT, file_type); |
| 1747 EXPECT_FALSE(file_path.empty()); | 1801 EXPECT_FALSE(file_path.empty()); |
| 1748 | 1802 |
| 1749 ASSERT_TRUE(src_entry_proto.get()); | 1803 ASSERT_TRUE(src_entry_proto.get()); |
| 1750 VerifyHostedDocumentJSONFile(*src_entry_proto, file_path); | 1804 VerifyHostedDocumentJSONFile(*src_entry_proto, file_path); |
| 1751 } | 1805 } |
| 1752 | 1806 |
| 1753 TEST_F(DriveFileSystemTest, GetFileByResourceId) { | 1807 TEST_F(DriveFileSystemTest, GetFileByResourceId) { |
| 1754 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); | 1808 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); |
| 1755 | 1809 |
| 1756 // The transfered file is cached and the change of "offline available" | 1810 // The transfered file is cached and the change of "offline available" |
| 1757 // attribute is notified. | 1811 // attribute is notified. |
| 1758 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1812 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 1759 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 1813 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 1760 | 1814 |
| 1761 ASSERT_TRUE(LoadRootFeedDocument()); | 1815 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1762 | 1816 |
| 1763 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); | 1817 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1764 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); | 1818 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); |
| 1765 | 1819 |
| 1766 DriveFileError error = DRIVE_FILE_OK; | 1820 DriveFileError error = DRIVE_FILE_OK; |
| 1767 base::FilePath file_path; | 1821 base::FilePath file_path; |
| 1768 std::string mime_type; | 1822 std::string mime_type; |
| 1769 DriveFileType file_type; | 1823 DriveFileType file_type; |
| 1770 file_system_->GetFileByResourceId( | 1824 file_system_->GetFileByResourceId( |
| 1771 entry_proto->resource_id(), | 1825 entry_proto->resource_id(), |
| 1772 DriveClientContext(USER_INITIATED), | 1826 DriveClientContext(USER_INITIATED), |
| 1773 google_apis::test_util::CreateCopyResultCallback( | 1827 google_apis::test_util::CreateCopyResultCallback( |
| 1774 &error, &file_path, &mime_type, &file_type), | 1828 &error, &file_path, &mime_type, &file_type), |
| 1775 google_apis::GetContentCallback()); | 1829 google_apis::GetContentCallback()); |
| 1776 google_apis::test_util::RunBlockingPoolTask(); | 1830 google_apis::test_util::RunBlockingPoolTask(); |
| 1777 | 1831 |
| 1778 EXPECT_EQ(DRIVE_FILE_OK, error); | 1832 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1779 EXPECT_EQ(REGULAR_FILE, file_type); | 1833 EXPECT_EQ(REGULAR_FILE, file_type); |
| 1780 } | 1834 } |
| 1781 | 1835 |
| 1782 TEST_F(DriveFileSystemTest, CancelGetFile) { | 1836 TEST_F(DriveFileSystemTest, CancelGetFile) { |
| 1783 base::FilePath cancel_file_path(FILE_PATH_LITERAL("drive/File 1.txt")); | 1837 base::FilePath cancel_file_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1784 file_system_->CancelGetFile(cancel_file_path); | 1838 file_system_->CancelGetFile(cancel_file_path); |
| 1785 EXPECT_EQ(cancel_file_path, fake_drive_service_->last_cancelled_file()); | 1839 EXPECT_EQ(cancel_file_path, fake_drive_service_->last_cancelled_file()); |
| 1786 } | 1840 } |
| 1787 | 1841 |
| 1788 TEST_F(DriveFileSystemTest, GetFileByResourceId_FromCache) { | 1842 TEST_F(DriveFileSystemTest, GetFileByResourceId_FromCache) { |
| 1789 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); | 1843 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); |
| 1790 | 1844 |
| 1791 ASSERT_TRUE(LoadRootFeedDocument()); | 1845 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1792 | 1846 |
| 1793 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); | 1847 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1794 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); | 1848 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); |
| 1795 | 1849 |
| 1796 // Store something as cached version of this file. | 1850 // Store something as cached version of this file. |
| 1797 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 1851 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 1798 cache_->Store(entry_proto->resource_id(), | 1852 cache_->Store(entry_proto->resource_id(), |
| 1799 entry_proto->file_specific_info().file_md5(), | 1853 entry_proto->file_specific_info().file_md5(), |
| 1800 google_apis::test_util::GetTestFilePath( | 1854 google_apis::test_util::GetTestFilePath( |
| 1801 "chromeos/gdata/root_feed.json"), | 1855 "chromeos/gdata/root_feed.json"), |
| 1802 DriveCache::FILE_OPERATION_COPY, | 1856 DriveCache::FILE_OPERATION_COPY, |
| 1803 google_apis::test_util::CreateCopyResultCallback(&error)); | 1857 google_apis::test_util::CreateCopyResultCallback(&error)); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1822 EXPECT_EQ(DRIVE_FILE_OK, error); | 1876 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1823 EXPECT_EQ(REGULAR_FILE, file_type); | 1877 EXPECT_EQ(REGULAR_FILE, file_type); |
| 1824 } | 1878 } |
| 1825 | 1879 |
| 1826 TEST_F(DriveFileSystemTest, UpdateFileByResourceId_PersistentFile) { | 1880 TEST_F(DriveFileSystemTest, UpdateFileByResourceId_PersistentFile) { |
| 1827 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); | 1881 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); |
| 1828 | 1882 |
| 1829 ASSERT_TRUE(LoadRootFeedDocument()); | 1883 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1830 | 1884 |
| 1831 // This is a file defined in root_feed.json. | 1885 // This is a file defined in root_feed.json. |
| 1832 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/File 1.txt")); | 1886 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 1833 const std::string kResourceId("file:2_file_resource_id"); | 1887 const std::string kResourceId("file:2_file_resource_id"); |
| 1834 const std::string kMd5("3b4382ebefec6e743578c76bbd0575ce"); | 1888 const std::string kMd5("3b4382ebefec6e743578c76bbd0575ce"); |
| 1835 | 1889 |
| 1836 // Pin the file so it'll be store in "persistent" directory. | 1890 // Pin the file so it'll be store in "persistent" directory. |
| 1837 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(kResourceId, kMd5)).Times(1); | 1891 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(kResourceId, kMd5)).Times(1); |
| 1838 DriveFileError error = DRIVE_FILE_OK; | 1892 DriveFileError error = DRIVE_FILE_OK; |
| 1839 cache_->Pin(kResourceId, kMd5, | 1893 cache_->Pin(kResourceId, kMd5, |
| 1840 google_apis::test_util::CreateCopyResultCallback(&error)); | 1894 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1841 google_apis::test_util::RunBlockingPoolTask(); | 1895 google_apis::test_util::RunBlockingPoolTask(); |
| 1842 EXPECT_EQ(DRIVE_FILE_OK, error); | 1896 EXPECT_EQ(DRIVE_FILE_OK, error); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1866 EXPECT_EQ(DRIVE_FILE_OK, error); | 1920 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1867 | 1921 |
| 1868 // We'll notify the directory change to the observer upon completion. | 1922 // We'll notify the directory change to the observer upon completion. |
| 1869 EXPECT_CALL(*mock_directory_observer_, | 1923 EXPECT_CALL(*mock_directory_observer_, |
| 1870 OnDirectoryChanged(Eq(util::GetDriveMyDriveRootPath()))) | 1924 OnDirectoryChanged(Eq(util::GetDriveMyDriveRootPath()))) |
| 1871 .Times(1); | 1925 .Times(1); |
| 1872 | 1926 |
| 1873 // Check the number of files in the root directory. We'll compare the | 1927 // Check the number of files in the root directory. We'll compare the |
| 1874 // number after updating a file. | 1928 // number after updating a file. |
| 1875 scoped_ptr<DriveEntryProtoVector> root_directory_entries( | 1929 scoped_ptr<DriveEntryProtoVector> root_directory_entries( |
| 1876 ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive"))); | 1930 ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive/root"))); |
| 1877 ASSERT_TRUE(root_directory_entries.get()); | 1931 ASSERT_TRUE(root_directory_entries.get()); |
| 1878 const int num_files_in_root = CountFiles(*root_directory_entries); | 1932 const int num_files_in_root = CountFiles(*root_directory_entries); |
| 1879 | 1933 |
| 1880 // The callback will be called upon completion of | 1934 // The callback will be called upon completion of |
| 1881 // UpdateFileByResourceId(). | 1935 // UpdateFileByResourceId(). |
| 1882 file_system_->UpdateFileByResourceId( | 1936 file_system_->UpdateFileByResourceId( |
| 1883 kResourceId, | 1937 kResourceId, |
| 1884 DriveClientContext(USER_INITIATED), | 1938 DriveClientContext(USER_INITIATED), |
| 1885 google_apis::test_util::CreateCopyResultCallback(&error)); | 1939 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1886 google_apis::test_util::RunBlockingPoolTask(); | 1940 google_apis::test_util::RunBlockingPoolTask(); |
| 1887 EXPECT_EQ(DRIVE_FILE_OK, error); | 1941 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1888 | 1942 |
| 1889 // Make sure that the number of files did not change (i.e. we updated an | 1943 // Make sure that the number of files did not change (i.e. we updated an |
| 1890 // existing file, rather than adding a new file. The number of files | 1944 // existing file, rather than adding a new file. The number of files |
| 1891 // increases if we don't handle the file update right). | 1945 // increases if we don't handle the file update right). |
| 1892 EXPECT_EQ(num_files_in_root, CountFiles(*root_directory_entries)); | 1946 EXPECT_EQ(num_files_in_root, CountFiles(*root_directory_entries)); |
| 1893 } | 1947 } |
| 1894 | 1948 |
| 1895 TEST_F(DriveFileSystemTest, UpdateFileByResourceId_NonexistentFile) { | 1949 TEST_F(DriveFileSystemTest, UpdateFileByResourceId_NonexistentFile) { |
| 1896 ASSERT_TRUE(LoadRootFeedDocument()); | 1950 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1897 | 1951 |
| 1898 // This is nonexistent in root_feed.json. | 1952 // This is nonexistent in root_feed.json. |
| 1899 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/Nonexistent.txt")); | 1953 const base::FilePath kFilePath( |
| 1954 FILE_PATH_LITERAL("drive/root/Nonexistent.txt")); |
| 1900 const std::string kResourceId("file:nonexistent_resource_id"); | 1955 const std::string kResourceId("file:nonexistent_resource_id"); |
| 1901 const std::string kMd5("nonexistent_md5"); | 1956 const std::string kMd5("nonexistent_md5"); |
| 1902 | 1957 |
| 1903 // The callback will be called upon completion of | 1958 // The callback will be called upon completion of |
| 1904 // UpdateFileByResourceId(). | 1959 // UpdateFileByResourceId(). |
| 1905 DriveFileError error = DRIVE_FILE_OK; | 1960 DriveFileError error = DRIVE_FILE_OK; |
| 1906 file_system_->UpdateFileByResourceId( | 1961 file_system_->UpdateFileByResourceId( |
| 1907 kResourceId, | 1962 kResourceId, |
| 1908 DriveClientContext(USER_INITIATED), | 1963 DriveClientContext(USER_INITIATED), |
| 1909 google_apis::test_util::CreateCopyResultCallback(&error)); | 1964 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1910 google_apis::test_util::RunBlockingPoolTask(); | 1965 google_apis::test_util::RunBlockingPoolTask(); |
| 1911 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); | 1966 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| 1912 } | 1967 } |
| 1913 | 1968 |
| 1914 TEST_F(DriveFileSystemTest, ContentSearch) { | 1969 TEST_F(DriveFileSystemTest, ContentSearch) { |
| 1915 ASSERT_TRUE(LoadRootFeedDocument()); | 1970 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1916 | 1971 |
| 1917 const SearchResultPair kExpectedResults[] = { | 1972 const SearchResultPair kExpectedResults[] = { |
| 1918 { "drive/Directory 1/Sub Directory Folder/Sub Sub Directory Folder", | 1973 { "drive/root/Directory 1/Sub Directory Folder/Sub Sub Directory Folder", |
| 1919 true }, | 1974 true }, |
| 1920 { "drive/Directory 1/Sub Directory Folder", true }, | 1975 { "drive/root/Directory 1/Sub Directory Folder", true }, |
| 1921 { "drive/Directory 1/SubDirectory File 1.txt", false }, | 1976 { "drive/root/Directory 1/SubDirectory File 1.txt", false }, |
| 1922 { "drive/Directory 1", true }, | 1977 { "drive/root/Directory 1", true }, |
| 1923 { "drive/Directory 2", true }, | 1978 { "drive/root/Directory 2", true }, |
| 1924 }; | 1979 }; |
| 1925 | 1980 |
| 1926 SearchCallback callback = base::Bind(&DriveSearchCallback, | 1981 SearchCallback callback = base::Bind(&DriveSearchCallback, |
| 1927 &message_loop_, | 1982 &message_loop_, |
| 1928 kExpectedResults, ARRAYSIZE_UNSAFE(kExpectedResults), | 1983 kExpectedResults, ARRAYSIZE_UNSAFE(kExpectedResults), |
| 1929 GURL()); | 1984 GURL()); |
| 1930 | 1985 |
| 1931 file_system_->Search("Directory", GURL(), callback); | 1986 file_system_->Search("Directory", GURL(), callback); |
| 1932 message_loop_.Run(); // Wait to get our result. | 1987 message_loop_.Run(); // Wait to get our result. |
| 1933 } | 1988 } |
| 1934 | 1989 |
| 1935 TEST_F(DriveFileSystemTest, ContentSearchWithNewEntry) { | 1990 TEST_F(DriveFileSystemTest, ContentSearchWithNewEntry) { |
| 1936 ASSERT_TRUE(LoadRootFeedDocument()); | 1991 ASSERT_TRUE(LoadRootFeedDocument()); |
| 1937 | 1992 |
| 1938 // Create a new directory in the drive service. | 1993 // Create a new directory in the drive service. |
| 1939 google_apis::GDataErrorCode error = google_apis::GDATA_OTHER_ERROR; | 1994 google_apis::GDataErrorCode error = google_apis::GDATA_OTHER_ERROR; |
| 1940 scoped_ptr<google_apis::ResourceEntry> resource_entry; | 1995 scoped_ptr<google_apis::ResourceEntry> resource_entry; |
| 1941 fake_drive_service_->AddNewDirectory( | 1996 fake_drive_service_->AddNewDirectory( |
| 1942 fake_drive_service_->GetRootResourceId(), // Add to the root directory. | 1997 fake_drive_service_->GetRootResourceId(), // Add to the root directory. |
| 1943 "New Directory 1!", | 1998 "New Directory 1!", |
| 1944 google_apis::test_util::CreateCopyResultCallback( | 1999 google_apis::test_util::CreateCopyResultCallback( |
| 1945 &error, &resource_entry)); | 2000 &error, &resource_entry)); |
| 1946 message_loop_.RunUntilIdle(); | 2001 message_loop_.RunUntilIdle(); |
| 1947 | 2002 |
| 1948 // As the result of the first Search(), only entries in the current file | 2003 // As the result of the first Search(), only entries in the current file |
| 1949 // system snapshot are expected to be returned (i.e. "New Directory 1!" | 2004 // system snapshot are expected to be returned (i.e. "New Directory 1!" |
| 1950 // shouldn't be included in the search result even though it matches | 2005 // shouldn't be included in the search result even though it matches |
| 1951 // "Directory 1". | 2006 // "Directory 1". |
| 1952 const SearchResultPair kExpectedResults[] = { | 2007 const SearchResultPair kExpectedResults[] = { |
| 1953 { "drive/Directory 1", true } | 2008 { "drive/root/Directory 1", true } |
| 1954 }; | 2009 }; |
| 1955 | 2010 |
| 1956 // At the same time, unknown entry should trigger delta feed request. | 2011 // At the same time, unknown entry should trigger delta feed request. |
| 1957 // This will cause notification to directory observers (e.g., File Browser) | 2012 // This will cause notification to directory observers (e.g., File Browser) |
| 1958 // so that they can request search again. | 2013 // so that they can request search again. |
| 1959 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(_)) | 2014 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(_)) |
| 1960 .Times(AtLeast(1)); | 2015 .Times(AtLeast(1)); |
| 1961 | 2016 |
| 1962 SearchCallback callback = base::Bind(&DriveSearchCallback, | 2017 SearchCallback callback = base::Bind(&DriveSearchCallback, |
| 1963 &message_loop_, | 2018 &message_loop_, |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2008 google_apis::test_util::RunBlockingPoolTask(); | 2063 google_apis::test_util::RunBlockingPoolTask(); |
| 2009 EXPECT_EQ(DRIVE_FILE_OK, error); | 2064 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 2010 } | 2065 } |
| 2011 | 2066 |
| 2012 TEST_F(DriveFileSystemTest, OpenAndCloseFile) { | 2067 TEST_F(DriveFileSystemTest, OpenAndCloseFile) { |
| 2013 ASSERT_TRUE(LoadRootFeedDocument()); | 2068 ASSERT_TRUE(LoadRootFeedDocument()); |
| 2014 | 2069 |
| 2015 // The transfered file is cached and the change of "offline available" | 2070 // The transfered file is cached and the change of "offline available" |
| 2016 // attribute is notified. | 2071 // attribute is notified. |
| 2017 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 2072 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| 2018 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 2073 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
| 2019 | 2074 |
| 2020 const base::FilePath kFileInRoot(FILE_PATH_LITERAL("drive/File 1.txt")); | 2075 const base::FilePath kFileInRoot(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 2021 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(kFileInRoot)); | 2076 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(kFileInRoot)); |
| 2022 const int64 file_size = entry_proto->file_info().size(); | 2077 const int64 file_size = entry_proto->file_info().size(); |
| 2023 const std::string& file_resource_id = | 2078 const std::string& file_resource_id = |
| 2024 entry_proto->resource_id(); | 2079 entry_proto->resource_id(); |
| 2025 const std::string& file_md5 = entry_proto->file_specific_info().file_md5(); | 2080 const std::string& file_md5 = entry_proto->file_specific_info().file_md5(); |
| 2026 | 2081 |
| 2027 // A dirty file is created on close. | 2082 // A dirty file is created on close. |
| 2028 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(file_resource_id)) | 2083 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(file_resource_id)) |
| 2029 .Times(1); | 2084 .Times(1); |
| 2030 | 2085 |
| 2031 // Pretend we have enough space. | 2086 // Pretend we have enough space. |
| 2032 fake_free_disk_space_getter_->set_fake_free_disk_space( | 2087 fake_free_disk_space_getter_->set_fake_free_disk_space( |
| 2033 file_size + kMinFreeSpace); | 2088 file_size + kMinFreeSpace); |
| 2034 | 2089 |
| 2035 // Open kFileInRoot ("drive/File 1.txt"). | 2090 // Open kFileInRoot ("drive/root/File 1.txt"). |
| 2036 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 2091 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 2037 base::FilePath file_path; | 2092 base::FilePath file_path; |
| 2038 file_system_->OpenFile( | 2093 file_system_->OpenFile( |
| 2039 kFileInRoot, | 2094 kFileInRoot, |
| 2040 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); | 2095 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); |
| 2041 google_apis::test_util::RunBlockingPoolTask(); | 2096 google_apis::test_util::RunBlockingPoolTask(); |
| 2042 const base::FilePath opened_file_path = file_path; | 2097 const base::FilePath opened_file_path = file_path; |
| 2043 | 2098 |
| 2044 // Verify that the file was properly opened. | 2099 // Verify that the file was properly opened. |
| 2045 EXPECT_EQ(DRIVE_FILE_OK, error); | 2100 EXPECT_EQ(DRIVE_FILE_OK, error); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2068 EXPECT_TRUE(cache_entry.is_persistent()); | 2123 EXPECT_TRUE(cache_entry.is_persistent()); |
| 2069 | 2124 |
| 2070 base::FilePath cache_file_path; | 2125 base::FilePath cache_file_path; |
| 2071 cache_->GetFile(file_resource_id, file_md5, | 2126 cache_->GetFile(file_resource_id, file_md5, |
| 2072 google_apis::test_util::CreateCopyResultCallback( | 2127 google_apis::test_util::CreateCopyResultCallback( |
| 2073 &error, &cache_file_path)); | 2128 &error, &cache_file_path)); |
| 2074 google_apis::test_util::RunBlockingPoolTask(); | 2129 google_apis::test_util::RunBlockingPoolTask(); |
| 2075 EXPECT_EQ(DRIVE_FILE_OK, error); | 2130 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 2076 EXPECT_EQ(cache_file_path, opened_file_path); | 2131 EXPECT_EQ(cache_file_path, opened_file_path); |
| 2077 | 2132 |
| 2078 // Close kFileInRoot ("drive/File 1.txt"). | 2133 // Close kFileInRoot ("drive/root/File 1.txt"). |
| 2079 file_system_->CloseFile( | 2134 file_system_->CloseFile( |
| 2080 kFileInRoot, | 2135 kFileInRoot, |
| 2081 google_apis::test_util::CreateCopyResultCallback(&error)); | 2136 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 2082 google_apis::test_util::RunBlockingPoolTask(); | 2137 google_apis::test_util::RunBlockingPoolTask(); |
| 2083 | 2138 |
| 2084 // Verify that the file was properly closed. | 2139 // Verify that the file was properly closed. |
| 2085 EXPECT_EQ(DRIVE_FILE_OK, error); | 2140 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 2086 | 2141 |
| 2087 // Verify that the cache state was changed as expected. | 2142 // Verify that the cache state was changed as expected. |
| 2088 EXPECT_TRUE(GetCacheEntryFromOriginThread(file_resource_id, file_md5, | 2143 EXPECT_TRUE(GetCacheEntryFromOriginThread(file_resource_id, file_md5, |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2121 | 2176 |
| 2122 // An app for foo.exe should now be found, as the registry was loaded. | 2177 // An app for foo.exe should now be found, as the registry was loaded. |
| 2123 drive_webapps_registry_->GetWebAppsForFile( | 2178 drive_webapps_registry_->GetWebAppsForFile( |
| 2124 base::FilePath(FILE_PATH_LITERAL("foo.exe")), | 2179 base::FilePath(FILE_PATH_LITERAL("foo.exe")), |
| 2125 "" /* mime_type */, | 2180 "" /* mime_type */, |
| 2126 &apps); | 2181 &apps); |
| 2127 EXPECT_EQ(1U, apps.size()); | 2182 EXPECT_EQ(1U, apps.size()); |
| 2128 } | 2183 } |
| 2129 | 2184 |
| 2130 } // namespace drive | 2185 } // namespace drive |
| OLD | NEW |