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/file_system.h" | 5 #include "chrome/browser/chromeos/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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 | 44 |
45 const int64 kLotsOfSpace = internal::kMinFreeSpace * 10; | 45 const int64 kLotsOfSpace = internal::kMinFreeSpace * 10; |
46 | 46 |
47 struct SearchResultPair { | 47 struct SearchResultPair { |
48 const char* path; | 48 const char* path; |
49 const bool is_directory; | 49 const bool is_directory; |
50 }; | 50 }; |
51 | 51 |
52 // Callback to FileSystem::Search used in ContentSearch tests. | 52 // Callback to FileSystem::Search used in ContentSearch tests. |
53 // Verifies returned vector of results and next feed url. | 53 // Verifies returned vector of results and next feed url. |
54 void DriveSearchCallback( | 54 void VerifySearchResult( |
55 MessageLoop* message_loop, | 55 MessageLoop* message_loop, |
56 const SearchResultPair* expected_results, | 56 const SearchResultPair* expected_results, |
57 size_t expected_results_size, | 57 size_t expected_results_size, |
58 const GURL& expected_next_feed, | 58 const GURL& expected_next_feed, |
59 FileError error, | 59 FileError error, |
60 const GURL& next_feed, | 60 const GURL& next_feed, |
61 scoped_ptr<std::vector<SearchResultInfo> > results) { | 61 scoped_ptr<std::vector<SearchResultInfo> > results) { |
62 ASSERT_TRUE(results); | 62 ASSERT_TRUE(results); |
63 ASSERT_EQ(expected_results_size, results->size()); | 63 ASSERT_EQ(expected_results_size, results->size()); |
64 | 64 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 | 104 |
105 void AppendContent(std::vector<std::string>* buffer, | 105 void AppendContent(std::vector<std::string>* buffer, |
106 google_apis::GDataErrorCode error, | 106 google_apis::GDataErrorCode error, |
107 scoped_ptr<std::string> content) { | 107 scoped_ptr<std::string> content) { |
108 DCHECK_EQ(error, google_apis::HTTP_SUCCESS); | 108 DCHECK_EQ(error, google_apis::HTTP_SUCCESS); |
109 buffer->push_back(*content); | 109 buffer->push_back(*content); |
110 } | 110 } |
111 | 111 |
112 } // namespace | 112 } // namespace |
113 | 113 |
114 class DriveFileSystemTest : public testing::Test { | 114 class FileSystemTest : public testing::Test { |
115 protected: | 115 protected: |
116 DriveFileSystemTest() | 116 FileSystemTest() |
117 : ui_thread_(content::BrowserThread::UI, &message_loop_), | 117 : ui_thread_(content::BrowserThread::UI, &message_loop_), |
118 // |root_feed_changestamp_| should be set to the largest changestamp in | 118 // |root_feed_changestamp_| should be set to the largest changestamp in |
119 // about resource feed. But we fake it by some non-zero positive | 119 // about resource feed. But we fake it by some non-zero positive |
120 // increasing value. See |LoadFeed()|. | 120 // increasing value. See |LoadFeed()|. |
121 root_feed_changestamp_(1) { | 121 root_feed_changestamp_(1) { |
122 } | 122 } |
123 | 123 |
124 virtual void SetUp() OVERRIDE { | 124 virtual void SetUp() OVERRIDE { |
125 profile_.reset(new TestingProfile); | 125 profile_.reset(new TestingProfile); |
126 | 126 |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 scoped_ptr<JobScheduler> scheduler_; | 444 scoped_ptr<JobScheduler> scheduler_; |
445 scoped_ptr<internal::ResourceMetadata, test_util::DestroyHelperForTests> | 445 scoped_ptr<internal::ResourceMetadata, test_util::DestroyHelperForTests> |
446 resource_metadata_; | 446 resource_metadata_; |
447 scoped_ptr<FakeFreeDiskSpaceGetter> fake_free_disk_space_getter_; | 447 scoped_ptr<FakeFreeDiskSpaceGetter> fake_free_disk_space_getter_; |
448 scoped_ptr<StrictMock<MockCacheObserver> > mock_cache_observer_; | 448 scoped_ptr<StrictMock<MockCacheObserver> > mock_cache_observer_; |
449 scoped_ptr<StrictMock<MockDirectoryChangeObserver> > mock_directory_observer_; | 449 scoped_ptr<StrictMock<MockDirectoryChangeObserver> > mock_directory_observer_; |
450 | 450 |
451 int root_feed_changestamp_; | 451 int root_feed_changestamp_; |
452 }; | 452 }; |
453 | 453 |
454 TEST_F(DriveFileSystemTest, DuplicatedAsyncInitialization) { | 454 TEST_F(FileSystemTest, DuplicatedAsyncInitialization) { |
455 // "Fast fetch" will fire an OnirectoryChanged event. | 455 // "Fast fetch" will fire an OnirectoryChanged event. |
456 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 456 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
457 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 457 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); |
458 | 458 |
459 int counter = 0; | 459 int counter = 0; |
460 const GetResourceEntryCallback& callback = base::Bind( | 460 const GetResourceEntryCallback& callback = base::Bind( |
461 &AsyncInitializationCallback, &counter, 2, &message_loop_); | 461 &AsyncInitializationCallback, &counter, 2, &message_loop_); |
462 | 462 |
463 file_system_->GetResourceEntryByPath( | 463 file_system_->GetResourceEntryByPath( |
464 base::FilePath(FILE_PATH_LITERAL("drive/root")), callback); | 464 base::FilePath(FILE_PATH_LITERAL("drive/root")), callback); |
465 file_system_->GetResourceEntryByPath( | 465 file_system_->GetResourceEntryByPath( |
466 base::FilePath(FILE_PATH_LITERAL("drive/root")), callback); | 466 base::FilePath(FILE_PATH_LITERAL("drive/root")), callback); |
467 message_loop_.Run(); // Wait to get our result | 467 message_loop_.Run(); // Wait to get our result |
468 EXPECT_EQ(2, counter); | 468 EXPECT_EQ(2, counter); |
469 | 469 |
470 // Although GetResourceEntryByPath() was called twice, the resource list | 470 // Although GetResourceEntryByPath() was called twice, the resource list |
471 // should only be loaded once. In the past, there was a bug that caused | 471 // should only be loaded once. In the past, there was a bug that caused |
472 // it to be loaded twice. | 472 // it to be loaded twice. |
473 EXPECT_EQ(1, fake_drive_service_->resource_list_load_count()); | 473 EXPECT_EQ(1, fake_drive_service_->resource_list_load_count()); |
474 // See the comment in GetMyDriveRoot test case why this is 2. | 474 // See the comment in GetMyDriveRoot test case why this is 2. |
475 EXPECT_EQ(2, fake_drive_service_->about_resource_load_count()); | 475 EXPECT_EQ(2, fake_drive_service_->about_resource_load_count()); |
476 } | 476 } |
477 | 477 |
478 TEST_F(DriveFileSystemTest, GetGrandRootEntry) { | 478 TEST_F(FileSystemTest, GetGrandRootEntry) { |
479 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive")); | 479 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive")); |
480 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); | 480 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); |
481 ASSERT_TRUE(entry); | 481 ASSERT_TRUE(entry); |
482 EXPECT_EQ(util::kDriveGrandRootSpecialResourceId, entry->resource_id()); | 482 EXPECT_EQ(util::kDriveGrandRootSpecialResourceId, entry->resource_id()); |
483 | 483 |
484 // Getting the grand root entry should not cause the resource load to happen. | 484 // Getting the grand root entry should not cause the resource load to happen. |
485 EXPECT_EQ(0, fake_drive_service_->about_resource_load_count()); | 485 EXPECT_EQ(0, fake_drive_service_->about_resource_load_count()); |
486 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count()); | 486 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count()); |
487 } | 487 } |
488 | 488 |
489 TEST_F(DriveFileSystemTest, GetOtherDirEntry) { | 489 TEST_F(FileSystemTest, GetOtherDirEntry) { |
490 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/other")); | 490 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/other")); |
491 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); | 491 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); |
492 ASSERT_TRUE(entry); | 492 ASSERT_TRUE(entry); |
493 EXPECT_EQ(util::kDriveOtherDirSpecialResourceId, entry->resource_id()); | 493 EXPECT_EQ(util::kDriveOtherDirSpecialResourceId, entry->resource_id()); |
494 | 494 |
495 // Getting the "other" directory entry should not cause the resource load to | 495 // Getting the "other" directory entry should not cause the resource load to |
496 // happen. | 496 // happen. |
497 EXPECT_EQ(0, fake_drive_service_->about_resource_load_count()); | 497 EXPECT_EQ(0, fake_drive_service_->about_resource_load_count()); |
498 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count()); | 498 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count()); |
499 } | 499 } |
500 | 500 |
501 TEST_F(DriveFileSystemTest, GetMyDriveRoot) { | 501 TEST_F(FileSystemTest, GetMyDriveRoot) { |
502 // "Fast fetch" will fire an OnirectoryChanged event. | 502 // "Fast fetch" will fire an OnirectoryChanged event. |
503 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 503 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
504 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 504 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); |
505 | 505 |
506 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root")); | 506 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root")); |
507 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); | 507 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); |
508 ASSERT_TRUE(entry); | 508 ASSERT_TRUE(entry); |
509 EXPECT_EQ(fake_drive_service_->GetRootResourceId(), entry->resource_id()); | 509 EXPECT_EQ(fake_drive_service_->GetRootResourceId(), entry->resource_id()); |
510 | 510 |
511 // Absence of "drive/root" in the local metadata triggers the "fast fetch" | 511 // Absence of "drive/root" in the local metadata triggers the "fast fetch" |
512 // of "drive" directory. Fetch of "drive" grand root directory has a special | 512 // of "drive" directory. Fetch of "drive" grand root directory has a special |
513 // implementation. Instead of normal GetResourceListInDirectory(), it is | 513 // implementation. Instead of normal GetResourceListInDirectory(), it is |
514 // emulated by calling GetAboutResource() so that the resource_id of | 514 // emulated by calling GetAboutResource() so that the resource_id of |
515 // "drive/root" is listed. | 515 // "drive/root" is listed. |
516 // Together with the normal GetAboutResource() call to retrieve the largest | 516 // Together with the normal GetAboutResource() call to retrieve the largest |
517 // changestamp, the method is called twice. | 517 // changestamp, the method is called twice. |
518 EXPECT_EQ(2, fake_drive_service_->about_resource_load_count()); | 518 EXPECT_EQ(2, fake_drive_service_->about_resource_load_count()); |
519 | 519 |
520 // After "fast fetch" is done, full resource list is fetched. | 520 // After "fast fetch" is done, full resource list is fetched. |
521 EXPECT_EQ(1, fake_drive_service_->resource_list_load_count()); | 521 EXPECT_EQ(1, fake_drive_service_->resource_list_load_count()); |
522 } | 522 } |
523 | 523 |
524 TEST_F(DriveFileSystemTest, GetExistingFile) { | 524 TEST_F(FileSystemTest, GetExistingFile) { |
525 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 525 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
526 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); | 526 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); |
527 ASSERT_TRUE(entry); | 527 ASSERT_TRUE(entry); |
528 EXPECT_EQ("file:2_file_resource_id", entry->resource_id()); | 528 EXPECT_EQ("file:2_file_resource_id", entry->resource_id()); |
529 | 529 |
530 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count()); | 530 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count()); |
531 EXPECT_EQ(1, fake_drive_service_->resource_list_load_count()); | 531 EXPECT_EQ(1, fake_drive_service_->resource_list_load_count()); |
532 } | 532 } |
533 | 533 |
534 TEST_F(DriveFileSystemTest, GetExistingDocument) { | 534 TEST_F(FileSystemTest, GetExistingDocument) { |
535 const base::FilePath kFilePath( | 535 const base::FilePath kFilePath( |
536 FILE_PATH_LITERAL("drive/root/Document 1 excludeDir-test.gdoc")); | 536 FILE_PATH_LITERAL("drive/root/Document 1 excludeDir-test.gdoc")); |
537 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); | 537 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); |
538 ASSERT_TRUE(entry); | 538 ASSERT_TRUE(entry); |
539 EXPECT_EQ("document:5_document_resource_id", entry->resource_id()); | 539 EXPECT_EQ("document:5_document_resource_id", entry->resource_id()); |
540 } | 540 } |
541 | 541 |
542 TEST_F(DriveFileSystemTest, GetNonExistingFile) { | 542 TEST_F(FileSystemTest, GetNonExistingFile) { |
543 const base::FilePath kFilePath( | 543 const base::FilePath kFilePath( |
544 FILE_PATH_LITERAL("drive/root/nonexisting.file")); | 544 FILE_PATH_LITERAL("drive/root/nonexisting.file")); |
545 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); | 545 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); |
546 EXPECT_FALSE(entry); | 546 EXPECT_FALSE(entry); |
547 } | 547 } |
548 | 548 |
549 TEST_F(DriveFileSystemTest, GetEncodedFileNames) { | 549 TEST_F(FileSystemTest, GetEncodedFileNames) { |
550 const base::FilePath kFilePath1( | 550 const base::FilePath kFilePath1( |
551 FILE_PATH_LITERAL("drive/root/Slash / in file 1.txt")); | 551 FILE_PATH_LITERAL("drive/root/Slash / in file 1.txt")); |
552 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath1); | 552 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath1); |
553 ASSERT_FALSE(entry); | 553 ASSERT_FALSE(entry); |
554 | 554 |
555 const base::FilePath kFilePath2 = base::FilePath::FromUTF8Unsafe( | 555 const base::FilePath kFilePath2 = base::FilePath::FromUTF8Unsafe( |
556 "drive/root/Slash \xE2\x88\x95 in file 1.txt"); | 556 "drive/root/Slash \xE2\x88\x95 in file 1.txt"); |
557 entry = GetResourceEntryByPathSync(kFilePath2); | 557 entry = GetResourceEntryByPathSync(kFilePath2); |
558 ASSERT_TRUE(entry); | 558 ASSERT_TRUE(entry); |
559 EXPECT_EQ("file:slash_file_resource_id", entry->resource_id()); | 559 EXPECT_EQ("file:slash_file_resource_id", entry->resource_id()); |
560 | 560 |
561 const base::FilePath kFilePath3 = base::FilePath::FromUTF8Unsafe( | 561 const base::FilePath kFilePath3 = base::FilePath::FromUTF8Unsafe( |
562 "drive/root/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt"); | 562 "drive/root/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt"); |
563 entry = GetResourceEntryByPathSync(kFilePath3); | 563 entry = GetResourceEntryByPathSync(kFilePath3); |
564 ASSERT_TRUE(entry); | 564 ASSERT_TRUE(entry); |
565 EXPECT_EQ("file:slash_subdir_file", entry->resource_id()); | 565 EXPECT_EQ("file:slash_subdir_file", entry->resource_id()); |
566 } | 566 } |
567 | 567 |
568 TEST_F(DriveFileSystemTest, GetDuplicateNames) { | 568 TEST_F(FileSystemTest, GetDuplicateNames) { |
569 const base::FilePath kFilePath1( | 569 const base::FilePath kFilePath1( |
570 FILE_PATH_LITERAL("drive/root/Duplicate Name.txt")); | 570 FILE_PATH_LITERAL("drive/root/Duplicate Name.txt")); |
571 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath1); | 571 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath1); |
572 ASSERT_TRUE(entry); | 572 ASSERT_TRUE(entry); |
573 const std::string resource_id1 = entry->resource_id(); | 573 const std::string resource_id1 = entry->resource_id(); |
574 | 574 |
575 const base::FilePath kFilePath2( | 575 const base::FilePath kFilePath2( |
576 FILE_PATH_LITERAL("drive/root/Duplicate Name (2).txt")); | 576 FILE_PATH_LITERAL("drive/root/Duplicate Name (2).txt")); |
577 entry = GetResourceEntryByPathSync(kFilePath2); | 577 entry = GetResourceEntryByPathSync(kFilePath2); |
578 ASSERT_TRUE(entry); | 578 ASSERT_TRUE(entry); |
579 const std::string resource_id2 = entry->resource_id(); | 579 const std::string resource_id2 = entry->resource_id(); |
580 | 580 |
581 // The entries are de-duped non-deterministically, so we shouldn't rely on the | 581 // The entries are de-duped non-deterministically, so we shouldn't rely on the |
582 // names matching specific resource ids. | 582 // names matching specific resource ids. |
583 const std::string file3_resource_id = "file:3_file_resource_id"; | 583 const std::string file3_resource_id = "file:3_file_resource_id"; |
584 const std::string file4_resource_id = "file:4_file_resource_id"; | 584 const std::string file4_resource_id = "file:4_file_resource_id"; |
585 EXPECT_TRUE(file3_resource_id == resource_id1 || | 585 EXPECT_TRUE(file3_resource_id == resource_id1 || |
586 file3_resource_id == resource_id2); | 586 file3_resource_id == resource_id2); |
587 EXPECT_TRUE(file4_resource_id == resource_id1 || | 587 EXPECT_TRUE(file4_resource_id == resource_id1 || |
588 file4_resource_id == resource_id2); | 588 file4_resource_id == resource_id2); |
589 } | 589 } |
590 | 590 |
591 TEST_F(DriveFileSystemTest, GetExistingDirectory) { | 591 TEST_F(FileSystemTest, GetExistingDirectory) { |
592 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/Directory 1")); | 592 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/Directory 1")); |
593 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); | 593 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); |
594 ASSERT_TRUE(entry); | 594 ASSERT_TRUE(entry); |
595 ASSERT_EQ("folder:1_folder_resource_id", entry->resource_id()); | 595 ASSERT_EQ("folder:1_folder_resource_id", entry->resource_id()); |
596 | 596 |
597 // The changestamp should be propagated to the directory. | 597 // The changestamp should be propagated to the directory. |
598 EXPECT_EQ(fake_drive_service_->largest_changestamp(), | 598 EXPECT_EQ(fake_drive_service_->largest_changestamp(), |
599 entry->directory_specific_info().changestamp()); | 599 entry->directory_specific_info().changestamp()); |
600 } | 600 } |
601 | 601 |
602 TEST_F(DriveFileSystemTest, GetInSubSubdir) { | 602 TEST_F(FileSystemTest, GetInSubSubdir) { |
603 const base::FilePath kFilePath( | 603 const base::FilePath kFilePath( |
604 FILE_PATH_LITERAL("drive/root/Directory 1/Sub Directory Folder/" | 604 FILE_PATH_LITERAL("drive/root/Directory 1/Sub Directory Folder/" |
605 "Sub Sub Directory Folder")); | 605 "Sub Sub Directory Folder")); |
606 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); | 606 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); |
607 ASSERT_TRUE(entry); | 607 ASSERT_TRUE(entry); |
608 ASSERT_EQ("folder:sub_sub_directory_folder_id", entry->resource_id()); | 608 ASSERT_EQ("folder:sub_sub_directory_folder_id", entry->resource_id()); |
609 } | 609 } |
610 | 610 |
611 TEST_F(DriveFileSystemTest, GetOrphanFile) { | 611 TEST_F(FileSystemTest, GetOrphanFile) { |
612 const base::FilePath kFilePath( | 612 const base::FilePath kFilePath( |
613 FILE_PATH_LITERAL("drive/other/Orphan File 1.txt")); | 613 FILE_PATH_LITERAL("drive/other/Orphan File 1.txt")); |
614 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); | 614 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync(kFilePath); |
615 ASSERT_TRUE(entry); | 615 ASSERT_TRUE(entry); |
616 EXPECT_EQ("file:1_orphanfile_resource_id", entry->resource_id()); | 616 EXPECT_EQ("file:1_orphanfile_resource_id", entry->resource_id()); |
617 } | 617 } |
618 | 618 |
619 TEST_F(DriveFileSystemTest, ReadDirectoryByPath_Root) { | 619 TEST_F(FileSystemTest, ReadDirectoryByPath_Root) { |
620 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 620 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
621 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); | 621 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1); |
622 | 622 |
623 // ReadDirectoryByPath() should kick off the resource list loading. | 623 // ReadDirectoryByPath() should kick off the resource list loading. |
624 scoped_ptr<ResourceEntryVector> entries( | 624 scoped_ptr<ResourceEntryVector> entries( |
625 ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive"))); | 625 ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive"))); |
626 // The root directory should be read correctly. | 626 // The root directory should be read correctly. |
627 ASSERT_TRUE(entries); | 627 ASSERT_TRUE(entries); |
628 ASSERT_EQ(2U, entries->size()); | 628 ASSERT_EQ(2U, entries->size()); |
629 | 629 |
630 // The found two directories should be /drive/root and /drive/other. | 630 // The found two directories should be /drive/root and /drive/other. |
631 bool found_other = false; | 631 bool found_other = false; |
632 bool found_my_drive = false; | 632 bool found_my_drive = false; |
633 for (size_t i = 0; i < entries->size(); ++i) { | 633 for (size_t i = 0; i < entries->size(); ++i) { |
634 const base::FilePath title = | 634 const base::FilePath title = |
635 base::FilePath::FromUTF8Unsafe((*entries)[i].title()); | 635 base::FilePath::FromUTF8Unsafe((*entries)[i].title()); |
636 if (title == base::FilePath(util::kDriveOtherDirName)) { | 636 if (title == base::FilePath(util::kDriveOtherDirName)) { |
637 found_other = true; | 637 found_other = true; |
638 } else if (title == base::FilePath(util::kDriveMyDriveRootDirName)) { | 638 } else if (title == base::FilePath(util::kDriveMyDriveRootDirName)) { |
639 found_my_drive = true; | 639 found_my_drive = true; |
640 } | 640 } |
641 } | 641 } |
642 | 642 |
643 EXPECT_TRUE(found_other); | 643 EXPECT_TRUE(found_other); |
644 EXPECT_TRUE(found_my_drive); | 644 EXPECT_TRUE(found_my_drive); |
645 } | 645 } |
646 | 646 |
647 TEST_F(DriveFileSystemTest, ReadDirectoryByPath_NonRootDirectory) { | 647 TEST_F(FileSystemTest, ReadDirectoryByPath_NonRootDirectory) { |
648 // ReadDirectoryByPath() should kick off the resource list loading. | 648 // ReadDirectoryByPath() should kick off the resource list loading. |
649 scoped_ptr<ResourceEntryVector> entries( | 649 scoped_ptr<ResourceEntryVector> entries( |
650 ReadDirectoryByPathSync( | 650 ReadDirectoryByPathSync( |
651 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"))); | 651 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"))); |
652 // The non root directory should also be read correctly. | 652 // The non root directory should also be read correctly. |
653 // There was a bug (crbug.com/181487), which broke this behavior. | 653 // There was a bug (crbug.com/181487), which broke this behavior. |
654 // Make sure this is fixed. | 654 // Make sure this is fixed. |
655 ASSERT_TRUE(entries); | 655 ASSERT_TRUE(entries); |
656 EXPECT_EQ(3U, entries->size()); | 656 EXPECT_EQ(3U, entries->size()); |
657 } | 657 } |
658 | 658 |
659 TEST_F(DriveFileSystemTest, ChangeFeed_AddAndDeleteFileInRoot) { | 659 TEST_F(FileSystemTest, ChangeFeed_AddAndDeleteFileInRoot) { |
660 ASSERT_TRUE(LoadRootFeedDocument()); | 660 ASSERT_TRUE(LoadRootFeedDocument()); |
661 | 661 |
662 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 662 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
663 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(2); | 663 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(2); |
664 | 664 |
665 ASSERT_TRUE(LoadChangeFeed("chromeos/gdata/delta_file_added_in_root.json")); | 665 ASSERT_TRUE(LoadChangeFeed("chromeos/gdata/delta_file_added_in_root.json")); |
666 EXPECT_TRUE(EntryExists( | 666 EXPECT_TRUE(EntryExists( |
667 base::FilePath(FILE_PATH_LITERAL("drive/root/Added file.gdoc")))); | 667 base::FilePath(FILE_PATH_LITERAL("drive/root/Added file.gdoc")))); |
668 | 668 |
669 ASSERT_TRUE(LoadChangeFeed("chromeos/gdata/delta_file_deleted_in_root.json")); | 669 ASSERT_TRUE(LoadChangeFeed("chromeos/gdata/delta_file_deleted_in_root.json")); |
670 EXPECT_FALSE(EntryExists( | 670 EXPECT_FALSE(EntryExists( |
671 base::FilePath(FILE_PATH_LITERAL("drive/root/Added file.gdoc")))); | 671 base::FilePath(FILE_PATH_LITERAL("drive/root/Added file.gdoc")))); |
672 } | 672 } |
673 | 673 |
674 TEST_F(DriveFileSystemTest, ChangeFeed_AddAndDeleteFileFromExistingDirectory) { | 674 TEST_F(FileSystemTest, ChangeFeed_AddAndDeleteFileFromExistingDirectory) { |
675 ASSERT_TRUE(LoadRootFeedDocument()); | 675 ASSERT_TRUE(LoadRootFeedDocument()); |
676 | 676 |
677 EXPECT_TRUE( | 677 EXPECT_TRUE( |
678 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1")))); | 678 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1")))); |
679 | 679 |
680 // Add file to an existing directory. | 680 // Add file to an existing directory. |
681 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 681 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
682 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); | 682 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
683 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 683 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
684 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) | 684 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) |
685 .Times(1); | 685 .Times(1); |
686 ASSERT_TRUE( | 686 ASSERT_TRUE( |
687 LoadChangeFeed("chromeos/gdata/delta_file_added_in_directory.json")); | 687 LoadChangeFeed("chromeos/gdata/delta_file_added_in_directory.json")); |
688 EXPECT_TRUE(EntryExists(base::FilePath( | 688 EXPECT_TRUE(EntryExists(base::FilePath( |
689 FILE_PATH_LITERAL("drive/root/Directory 1/Added file.gdoc")))); | 689 FILE_PATH_LITERAL("drive/root/Directory 1/Added file.gdoc")))); |
690 | 690 |
691 // Remove that file from the directory. | 691 // Remove that file from the directory. |
692 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 692 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
693 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) | 693 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) |
694 .Times(1); | 694 .Times(1); |
695 ASSERT_TRUE( | 695 ASSERT_TRUE( |
696 LoadChangeFeed("chromeos/gdata/delta_file_deleted_in_directory.json")); | 696 LoadChangeFeed("chromeos/gdata/delta_file_deleted_in_directory.json")); |
697 EXPECT_TRUE( | 697 EXPECT_TRUE( |
698 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1")))); | 698 EntryExists(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1")))); |
699 EXPECT_FALSE(EntryExists(base::FilePath( | 699 EXPECT_FALSE(EntryExists(base::FilePath( |
700 FILE_PATH_LITERAL("drive/root/Directory 1/Added file.gdoc")))); | 700 FILE_PATH_LITERAL("drive/root/Directory 1/Added file.gdoc")))); |
701 } | 701 } |
702 | 702 |
703 TEST_F(DriveFileSystemTest, ChangeFeed_AddFileToNewDirectory) { | 703 TEST_F(FileSystemTest, ChangeFeed_AddFileToNewDirectory) { |
704 ASSERT_TRUE(LoadRootFeedDocument()); | 704 ASSERT_TRUE(LoadRootFeedDocument()); |
705 // Add file to a new directory. | 705 // Add file to a new directory. |
706 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 706 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
707 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); | 707 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
708 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 708 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
709 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/New Directory"))))) | 709 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/New Directory"))))) |
710 .Times(1); | 710 .Times(1); |
711 | 711 |
712 ASSERT_TRUE( | 712 ASSERT_TRUE( |
713 LoadChangeFeed("chromeos/gdata/delta_file_added_in_new_directory.json")); | 713 LoadChangeFeed("chromeos/gdata/delta_file_added_in_new_directory.json")); |
714 | 714 |
715 EXPECT_TRUE( | 715 EXPECT_TRUE( |
716 EntryExists(base::FilePath( | 716 EntryExists(base::FilePath( |
717 FILE_PATH_LITERAL("drive/root/New Directory")))); | 717 FILE_PATH_LITERAL("drive/root/New Directory")))); |
718 EXPECT_TRUE(EntryExists(base::FilePath( | 718 EXPECT_TRUE(EntryExists(base::FilePath( |
719 FILE_PATH_LITERAL("drive/root/New Directory/File in new dir.gdoc")))); | 719 FILE_PATH_LITERAL("drive/root/New Directory/File in new dir.gdoc")))); |
720 } | 720 } |
721 | 721 |
722 TEST_F(DriveFileSystemTest, ChangeFeed_AddFileToNewButDeletedDirectory) { | 722 TEST_F(FileSystemTest, ChangeFeed_AddFileToNewButDeletedDirectory) { |
723 ASSERT_TRUE(LoadRootFeedDocument()); | 723 ASSERT_TRUE(LoadRootFeedDocument()); |
724 | 724 |
725 // This feed contains the following updates: | 725 // This feed contains the following updates: |
726 // 1) A new PDF file is added to a new directory | 726 // 1) A new PDF file is added to a new directory |
727 // 2) but the new directory is marked "deleted" (i.e. moved to Trash) | 727 // 2) but the new directory is marked "deleted" (i.e. moved to Trash) |
728 // Hence, the PDF file should be just ignored. | 728 // Hence, the PDF file should be just ignored. |
729 ASSERT_TRUE(LoadChangeFeed( | 729 ASSERT_TRUE(LoadChangeFeed( |
730 "chromeos/gdata/delta_file_added_in_new_but_deleted_directory.json")); | 730 "chromeos/gdata/delta_file_added_in_new_but_deleted_directory.json")); |
731 } | 731 } |
732 | 732 |
733 TEST_F(DriveFileSystemTest, ChangeFeed_DirectoryMovedFromRootToDirectory) { | 733 TEST_F(FileSystemTest, ChangeFeed_DirectoryMovedFromRootToDirectory) { |
734 ASSERT_TRUE(LoadRootFeedDocument()); | 734 ASSERT_TRUE(LoadRootFeedDocument()); |
735 | 735 |
736 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 736 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
737 "drive/root/Directory 2 excludeDir-test")))); | 737 "drive/root/Directory 2 excludeDir-test")))); |
738 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 738 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
739 "drive/root/Directory 1")))); | 739 "drive/root/Directory 1")))); |
740 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 740 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
741 "drive/root/Directory 1/SubDirectory File 1.txt")))); | 741 "drive/root/Directory 1/SubDirectory File 1.txt")))); |
742 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 742 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
743 "drive/root/Directory 1/Sub Directory Folder")))); | 743 "drive/root/Directory 1/Sub Directory Folder")))); |
(...skipping 27 matching lines...) Expand all Loading... |
771 "drive/root/Directory 2 excludeDir-test/Directory 1/" | 771 "drive/root/Directory 2 excludeDir-test/Directory 1/" |
772 "SubDirectory File 1.txt")))); | 772 "SubDirectory File 1.txt")))); |
773 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 773 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
774 "drive/root/Directory 2 excludeDir-test/Directory 1/" | 774 "drive/root/Directory 2 excludeDir-test/Directory 1/" |
775 "Sub Directory Folder")))); | 775 "Sub Directory Folder")))); |
776 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 776 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
777 "drive/root/Directory 2 excludeDir-test/Directory 1/Sub Directory Folder/" | 777 "drive/root/Directory 2 excludeDir-test/Directory 1/Sub Directory Folder/" |
778 "Sub Sub Directory Folder")))); | 778 "Sub Sub Directory Folder")))); |
779 } | 779 } |
780 | 780 |
781 TEST_F(DriveFileSystemTest, ChangeFeed_FileMovedFromDirectoryToRoot) { | 781 TEST_F(FileSystemTest, ChangeFeed_FileMovedFromDirectoryToRoot) { |
782 ASSERT_TRUE(LoadRootFeedDocument()); | 782 ASSERT_TRUE(LoadRootFeedDocument()); |
783 | 783 |
784 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 784 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
785 "drive/root/Directory 1")))); | 785 "drive/root/Directory 1")))); |
786 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 786 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
787 "drive/root/Directory 1/Sub Directory Folder")))); | 787 "drive/root/Directory 1/Sub Directory Folder")))); |
788 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 788 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
789 "drive/root/Directory 1/Sub Directory Folder/" | 789 "drive/root/Directory 1/Sub Directory Folder/" |
790 "Sub Sub Directory Folder")))); | 790 "Sub Sub Directory Folder")))); |
791 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 791 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
(...skipping 13 matching lines...) Expand all Loading... |
805 "drive/root/Directory 1/Sub Directory Folder")))); | 805 "drive/root/Directory 1/Sub Directory Folder")))); |
806 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 806 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
807 "drive/root/Directory 1/Sub Directory Folder/" | 807 "drive/root/Directory 1/Sub Directory Folder/" |
808 "Sub Sub Directory Folder")))); | 808 "Sub Sub Directory Folder")))); |
809 EXPECT_FALSE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 809 EXPECT_FALSE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
810 "drive/root/Directory 1/SubDirectory File 1.txt")))); | 810 "drive/root/Directory 1/SubDirectory File 1.txt")))); |
811 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 811 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
812 "drive/root/SubDirectory File 1.txt")))); | 812 "drive/root/SubDirectory File 1.txt")))); |
813 } | 813 } |
814 | 814 |
815 TEST_F(DriveFileSystemTest, ChangeFeed_FileRenamedInDirectory) { | 815 TEST_F(FileSystemTest, ChangeFeed_FileRenamedInDirectory) { |
816 ASSERT_TRUE(LoadRootFeedDocument()); | 816 ASSERT_TRUE(LoadRootFeedDocument()); |
817 | 817 |
818 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 818 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
819 "drive/root/Directory 1")))); | 819 "drive/root/Directory 1")))); |
820 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 820 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
821 "drive/root/Directory 1/SubDirectory File 1.txt")))); | 821 "drive/root/Directory 1/SubDirectory File 1.txt")))); |
822 | 822 |
823 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 823 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
824 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); | 824 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
825 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 825 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
826 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) | 826 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/Directory 1"))))) |
827 .Times(1); | 827 .Times(1); |
828 ASSERT_TRUE(LoadChangeFeed( | 828 ASSERT_TRUE(LoadChangeFeed( |
829 "chromeos/gdata/delta_file_renamed_in_directory.json")); | 829 "chromeos/gdata/delta_file_renamed_in_directory.json")); |
830 | 830 |
831 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 831 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
832 "drive/root/Directory 1")))); | 832 "drive/root/Directory 1")))); |
833 EXPECT_FALSE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 833 EXPECT_FALSE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
834 "drive/root/Directory 1/SubDirectory File 1.txt")))); | 834 "drive/root/Directory 1/SubDirectory File 1.txt")))); |
835 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( | 835 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( |
836 "drive/root/Directory 1/New SubDirectory File 1.txt")))); | 836 "drive/root/Directory 1/New SubDirectory File 1.txt")))); |
837 } | 837 } |
838 | 838 |
839 TEST_F(DriveFileSystemTest, CachedFeedLoadingThenServerFeedLoading) { | 839 TEST_F(FileSystemTest, CachedFeedLoadingThenServerFeedLoading) { |
840 ASSERT_TRUE(SetUpTestFileSystem(USE_SERVER_TIMESTAMP)); | 840 ASSERT_TRUE(SetUpTestFileSystem(USE_SERVER_TIMESTAMP)); |
841 | 841 |
842 // Kicks loading of cached file system and query for server update. | 842 // Kicks loading of cached file system and query for server update. |
843 EXPECT_TRUE(ReadDirectoryByPathSync(util::GetDriveMyDriveRootPath())); | 843 EXPECT_TRUE(ReadDirectoryByPathSync(util::GetDriveMyDriveRootPath())); |
844 | 844 |
845 // SetUpTestFileSystem and "account_metadata.json" have the same changestamp, | 845 // SetUpTestFileSystem and "account_metadata.json" have the same changestamp, |
846 // so no request for new feeds (i.e., call to GetResourceList) should happen. | 846 // so no request for new feeds (i.e., call to GetResourceList) should happen. |
847 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count()); | 847 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count()); |
848 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count()); | 848 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count()); |
849 | 849 |
850 // Since the file system has verified that it holds the latest snapshot, | 850 // Since the file system has verified that it holds the latest snapshot, |
851 // it should change its state to "loaded", which admits periodic refresh. | 851 // it should change its state to "loaded", which admits periodic refresh. |
852 // To test it, call CheckForUpdates and verify it does try to check updates. | 852 // To test it, call CheckForUpdates and verify it does try to check updates. |
853 file_system_->CheckForUpdates(); | 853 file_system_->CheckForUpdates(); |
854 google_apis::test_util::RunBlockingPoolTask(); | 854 google_apis::test_util::RunBlockingPoolTask(); |
855 EXPECT_EQ(2, fake_drive_service_->about_resource_load_count()); | 855 EXPECT_EQ(2, fake_drive_service_->about_resource_load_count()); |
856 } | 856 } |
857 | 857 |
858 TEST_F(DriveFileSystemTest, OfflineCachedFeedLoading) { | 858 TEST_F(FileSystemTest, OfflineCachedFeedLoading) { |
859 ASSERT_TRUE(SetUpTestFileSystem(USE_OLD_TIMESTAMP)); | 859 ASSERT_TRUE(SetUpTestFileSystem(USE_OLD_TIMESTAMP)); |
860 | 860 |
861 // Make GetResourceList fail for simulating offline situation. This will leave | 861 // Make GetResourceList fail for simulating offline situation. This will leave |
862 // the file system "loaded from cache, but not synced with server" state. | 862 // the file system "loaded from cache, but not synced with server" state. |
863 fake_drive_service_->set_offline(true); | 863 fake_drive_service_->set_offline(true); |
864 | 864 |
865 // Kicks loading of cached file system and query for server update. | 865 // Kicks loading of cached file system and query for server update. |
866 EXPECT_TRUE(ReadDirectoryByPathSync(util::GetDriveMyDriveRootPath())); | 866 EXPECT_TRUE(ReadDirectoryByPathSync(util::GetDriveMyDriveRootPath())); |
867 // Loading of about resource should not happen as it's offline. | 867 // Loading of about resource should not happen as it's offline. |
868 EXPECT_EQ(0, fake_drive_service_->about_resource_load_count()); | 868 EXPECT_EQ(0, fake_drive_service_->about_resource_load_count()); |
(...skipping 18 matching lines...) Expand all Loading... |
887 | 887 |
888 file_system_->CheckForUpdates(); | 888 file_system_->CheckForUpdates(); |
889 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(_)) | 889 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(_)) |
890 .Times(AtLeast(1)); | 890 .Times(AtLeast(1)); |
891 | 891 |
892 google_apis::test_util::RunBlockingPoolTask(); | 892 google_apis::test_util::RunBlockingPoolTask(); |
893 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count()); | 893 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count()); |
894 EXPECT_EQ(1, fake_drive_service_->change_list_load_count()); | 894 EXPECT_EQ(1, fake_drive_service_->change_list_load_count()); |
895 } | 895 } |
896 | 896 |
897 TEST_F(DriveFileSystemTest, ReadDirectoryWhileRefreshing) { | 897 TEST_F(FileSystemTest, ReadDirectoryWhileRefreshing) { |
898 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(_)) | 898 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(_)) |
899 .Times(AtLeast(1)); | 899 .Times(AtLeast(1)); |
900 | 900 |
901 // Enter the "refreshing" state so the fast fetch will be performed. | 901 // Enter the "refreshing" state so the fast fetch will be performed. |
902 ASSERT_TRUE(SetUpTestFileSystem(USE_OLD_TIMESTAMP)); | 902 ASSERT_TRUE(SetUpTestFileSystem(USE_OLD_TIMESTAMP)); |
903 file_system_->CheckForUpdates(); | 903 file_system_->CheckForUpdates(); |
904 | 904 |
905 // The list of resources in "drive/root/Dir1" should be fetched. | 905 // The list of resources in "drive/root/Dir1" should be fetched. |
906 EXPECT_TRUE(ReadDirectoryByPathSync(base::FilePath( | 906 EXPECT_TRUE(ReadDirectoryByPathSync(base::FilePath( |
907 FILE_PATH_LITERAL("drive/root/Dir1")))); | 907 FILE_PATH_LITERAL("drive/root/Dir1")))); |
908 EXPECT_EQ(1, fake_drive_service_->directory_load_count()); | 908 EXPECT_EQ(1, fake_drive_service_->directory_load_count()); |
909 } | 909 } |
910 | 910 |
911 TEST_F(DriveFileSystemTest, GetResourceEntryExistingWhileRefreshing) { | 911 TEST_F(FileSystemTest, GetResourceEntryExistingWhileRefreshing) { |
912 // Enter the "refreshing" state. | 912 // Enter the "refreshing" state. |
913 ASSERT_TRUE(SetUpTestFileSystem(USE_OLD_TIMESTAMP)); | 913 ASSERT_TRUE(SetUpTestFileSystem(USE_OLD_TIMESTAMP)); |
914 file_system_->CheckForUpdates(); | 914 file_system_->CheckForUpdates(); |
915 | 915 |
916 // If an entry is already found in local metadata, no directory fetch happens. | 916 // If an entry is already found in local metadata, no directory fetch happens. |
917 EXPECT_TRUE(GetResourceEntryByPathSync(base::FilePath( | 917 EXPECT_TRUE(GetResourceEntryByPathSync(base::FilePath( |
918 FILE_PATH_LITERAL("drive/root/Dir1/File2")))); | 918 FILE_PATH_LITERAL("drive/root/Dir1/File2")))); |
919 EXPECT_EQ(0, fake_drive_service_->directory_load_count()); | 919 EXPECT_EQ(0, fake_drive_service_->directory_load_count()); |
920 } | 920 } |
921 | 921 |
922 TEST_F(DriveFileSystemTest, GetResourceEntryNonExistentWhileRefreshing) { | 922 TEST_F(FileSystemTest, GetResourceEntryNonExistentWhileRefreshing) { |
923 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(_)) | 923 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(_)) |
924 .Times(AtLeast(1)); | 924 .Times(AtLeast(1)); |
925 | 925 |
926 // Enter the "refreshing" state so the fast fetch will be performed. | 926 // Enter the "refreshing" state so the fast fetch will be performed. |
927 ASSERT_TRUE(SetUpTestFileSystem(USE_OLD_TIMESTAMP)); | 927 ASSERT_TRUE(SetUpTestFileSystem(USE_OLD_TIMESTAMP)); |
928 file_system_->CheckForUpdates(); | 928 file_system_->CheckForUpdates(); |
929 | 929 |
930 // If an entry is not found, parent directory's resource list is fetched. | 930 // If an entry is not found, parent directory's resource list is fetched. |
931 EXPECT_FALSE(GetResourceEntryByPathSync(base::FilePath( | 931 EXPECT_FALSE(GetResourceEntryByPathSync(base::FilePath( |
932 FILE_PATH_LITERAL("drive/root/Dir1/NonExistentFile")))); | 932 FILE_PATH_LITERAL("drive/root/Dir1/NonExistentFile")))); |
933 EXPECT_EQ(1, fake_drive_service_->directory_load_count()); | 933 EXPECT_EQ(1, fake_drive_service_->directory_load_count()); |
934 } | 934 } |
935 | 935 |
936 TEST_F(DriveFileSystemTest, TransferFileFromLocalToRemote_RegularFile) { | 936 TEST_F(FileSystemTest, TransferFileFromLocalToRemote_RegularFile) { |
937 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); | 937 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); |
938 | 938 |
939 ASSERT_TRUE(LoadRootFeedDocument()); | 939 ASSERT_TRUE(LoadRootFeedDocument()); |
940 | 940 |
941 // We'll add a file to the Drive root directory. | 941 // We'll add a file to the Drive root directory. |
942 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 942 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
943 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); | 943 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
944 | 944 |
945 // Prepare a local file. | 945 // Prepare a local file. |
946 base::ScopedTempDir temp_dir; | 946 base::ScopedTempDir temp_dir; |
(...skipping 24 matching lines...) Expand all Loading... |
971 remote_dest_file_path, | 971 remote_dest_file_path, |
972 google_apis::test_util::CreateCopyResultCallback(&error)); | 972 google_apis::test_util::CreateCopyResultCallback(&error)); |
973 google_apis::test_util::RunBlockingPoolTask(); | 973 google_apis::test_util::RunBlockingPoolTask(); |
974 | 974 |
975 EXPECT_EQ(FILE_ERROR_OK, error); | 975 EXPECT_EQ(FILE_ERROR_OK, error); |
976 | 976 |
977 // Now the remote file should exist. | 977 // Now the remote file should exist. |
978 EXPECT_TRUE(EntryExists(remote_dest_file_path)); | 978 EXPECT_TRUE(EntryExists(remote_dest_file_path)); |
979 } | 979 } |
980 | 980 |
981 TEST_F(DriveFileSystemTest, TransferFileFromLocalToRemote_HostedDocument) { | 981 TEST_F(FileSystemTest, TransferFileFromLocalToRemote_HostedDocument) { |
982 ASSERT_TRUE(LoadRootFeedDocument()); | 982 ASSERT_TRUE(LoadRootFeedDocument()); |
983 | 983 |
984 // Prepare a local file, which is a json file of a hosted document, which | 984 // Prepare a local file, which is a json file of a hosted document, which |
985 // matches "Document 1" in root_feed.json. | 985 // matches "Document 1" in root_feed.json. |
986 base::ScopedTempDir temp_dir; | 986 base::ScopedTempDir temp_dir; |
987 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 987 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
988 const base::FilePath local_src_file_path = | 988 const base::FilePath local_src_file_path = |
989 temp_dir.path().AppendASCII("local.gdoc"); | 989 temp_dir.path().AppendASCII("local.gdoc"); |
990 const std::string kEditUrl = | 990 const std::string kEditUrl = |
991 "https://3_document_self_link/document:5_document_resource_id"; | 991 "https://3_document_self_link/document:5_document_resource_id"; |
(...skipping 22 matching lines...) Expand all Loading... |
1014 remote_dest_file_path, | 1014 remote_dest_file_path, |
1015 google_apis::test_util::CreateCopyResultCallback(&error)); | 1015 google_apis::test_util::CreateCopyResultCallback(&error)); |
1016 google_apis::test_util::RunBlockingPoolTask(); | 1016 google_apis::test_util::RunBlockingPoolTask(); |
1017 | 1017 |
1018 EXPECT_EQ(FILE_ERROR_OK, error); | 1018 EXPECT_EQ(FILE_ERROR_OK, error); |
1019 | 1019 |
1020 // Now the remote file should exist. | 1020 // Now the remote file should exist. |
1021 EXPECT_TRUE(EntryExists(remote_dest_file_path)); | 1021 EXPECT_TRUE(EntryExists(remote_dest_file_path)); |
1022 } | 1022 } |
1023 | 1023 |
1024 TEST_F(DriveFileSystemTest, TransferFileFromRemoteToLocal_RegularFile) { | 1024 TEST_F(FileSystemTest, TransferFileFromRemoteToLocal_RegularFile) { |
1025 ASSERT_TRUE(LoadRootFeedDocument()); | 1025 ASSERT_TRUE(LoadRootFeedDocument()); |
1026 | 1026 |
1027 // The transfered file is cached and the change of "offline available" | 1027 // The transfered file is cached and the change of "offline available" |
1028 // attribute is notified. | 1028 // attribute is notified. |
1029 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1029 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
1030 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); | 1030 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
1031 | 1031 |
1032 base::ScopedTempDir temp_dir; | 1032 base::ScopedTempDir temp_dir; |
1033 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 1033 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
1034 base::FilePath local_dest_file_path = | 1034 base::FilePath local_dest_file_path = |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1066 std::string cache_file_data; | 1066 std::string cache_file_data; |
1067 EXPECT_TRUE(file_util::ReadFileToString(cache_file_path, &cache_file_data)); | 1067 EXPECT_TRUE(file_util::ReadFileToString(cache_file_path, &cache_file_data)); |
1068 EXPECT_EQ(kExpectedContent, cache_file_data); | 1068 EXPECT_EQ(kExpectedContent, cache_file_data); |
1069 | 1069 |
1070 std::string local_dest_file_data; | 1070 std::string local_dest_file_data; |
1071 EXPECT_TRUE(file_util::ReadFileToString(local_dest_file_path, | 1071 EXPECT_TRUE(file_util::ReadFileToString(local_dest_file_path, |
1072 &local_dest_file_data)); | 1072 &local_dest_file_data)); |
1073 EXPECT_EQ(kExpectedContent, local_dest_file_data); | 1073 EXPECT_EQ(kExpectedContent, local_dest_file_data); |
1074 } | 1074 } |
1075 | 1075 |
1076 TEST_F(DriveFileSystemTest, TransferFileFromRemoteToLocal_HostedDocument) { | 1076 TEST_F(FileSystemTest, TransferFileFromRemoteToLocal_HostedDocument) { |
1077 ASSERT_TRUE(LoadRootFeedDocument()); | 1077 ASSERT_TRUE(LoadRootFeedDocument()); |
1078 | 1078 |
1079 base::ScopedTempDir temp_dir; | 1079 base::ScopedTempDir temp_dir; |
1080 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 1080 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
1081 base::FilePath local_dest_file_path = | 1081 base::FilePath local_dest_file_path = |
1082 temp_dir.path().AppendASCII("local_copy.txt"); | 1082 temp_dir.path().AppendASCII("local_copy.txt"); |
1083 base::FilePath remote_src_file_path( | 1083 base::FilePath remote_src_file_path( |
1084 FILE_PATH_LITERAL("drive/root/Document 1 excludeDir-test.gdoc")); | 1084 FILE_PATH_LITERAL("drive/root/Document 1 excludeDir-test.gdoc")); |
1085 FileError error = FILE_ERROR_FAILED; | 1085 FileError error = FILE_ERROR_FAILED; |
1086 file_system_->TransferFileFromRemoteToLocal( | 1086 file_system_->TransferFileFromRemoteToLocal( |
1087 remote_src_file_path, | 1087 remote_src_file_path, |
1088 local_dest_file_path, | 1088 local_dest_file_path, |
1089 google_apis::test_util::CreateCopyResultCallback(&error)); | 1089 google_apis::test_util::CreateCopyResultCallback(&error)); |
1090 google_apis::test_util::RunBlockingPoolTask(); | 1090 google_apis::test_util::RunBlockingPoolTask(); |
1091 | 1091 |
1092 EXPECT_EQ(FILE_ERROR_OK, error); | 1092 EXPECT_EQ(FILE_ERROR_OK, error); |
1093 | 1093 |
1094 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync( | 1094 scoped_ptr<ResourceEntry> entry = GetResourceEntryByPathSync( |
1095 remote_src_file_path); | 1095 remote_src_file_path); |
1096 ASSERT_TRUE(entry); | 1096 ASSERT_TRUE(entry); |
1097 VerifyHostedDocumentJSONFile(*entry, local_dest_file_path); | 1097 VerifyHostedDocumentJSONFile(*entry, local_dest_file_path); |
1098 } | 1098 } |
1099 | 1099 |
1100 TEST_F(DriveFileSystemTest, CopyNotExistingFile) { | 1100 TEST_F(FileSystemTest, CopyNotExistingFile) { |
1101 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/root/Dummy file.txt")); | 1101 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/root/Dummy file.txt")); |
1102 base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/root/Test.log")); | 1102 base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/root/Test.log")); |
1103 | 1103 |
1104 ASSERT_TRUE(LoadRootFeedDocument()); | 1104 ASSERT_TRUE(LoadRootFeedDocument()); |
1105 | 1105 |
1106 EXPECT_FALSE(EntryExists(src_file_path)); | 1106 EXPECT_FALSE(EntryExists(src_file_path)); |
1107 | 1107 |
1108 FileError error = FILE_ERROR_OK; | 1108 FileError error = FILE_ERROR_OK; |
1109 file_system_->Copy( | 1109 file_system_->Copy( |
1110 src_file_path, | 1110 src_file_path, |
1111 dest_file_path, | 1111 dest_file_path, |
1112 google_apis::test_util::CreateCopyResultCallback(&error)); | 1112 google_apis::test_util::CreateCopyResultCallback(&error)); |
1113 google_apis::test_util::RunBlockingPoolTask(); | 1113 google_apis::test_util::RunBlockingPoolTask(); |
1114 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error); | 1114 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error); |
1115 | 1115 |
1116 EXPECT_FALSE(EntryExists(src_file_path)); | 1116 EXPECT_FALSE(EntryExists(src_file_path)); |
1117 EXPECT_FALSE(EntryExists(dest_file_path)); | 1117 EXPECT_FALSE(EntryExists(dest_file_path)); |
1118 } | 1118 } |
1119 | 1119 |
1120 TEST_F(DriveFileSystemTest, CopyFileToNonExistingDirectory) { | 1120 TEST_F(FileSystemTest, CopyFileToNonExistingDirectory) { |
1121 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 1121 base::FilePath src_file_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
1122 base::FilePath dest_parent_path(FILE_PATH_LITERAL("drive/root/Dummy")); | 1122 base::FilePath dest_parent_path(FILE_PATH_LITERAL("drive/root/Dummy")); |
1123 base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/root/Dummy/Test.log")); | 1123 base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/root/Dummy/Test.log")); |
1124 | 1124 |
1125 ASSERT_TRUE(LoadRootFeedDocument()); | 1125 ASSERT_TRUE(LoadRootFeedDocument()); |
1126 | 1126 |
1127 ASSERT_TRUE(EntryExists(src_file_path)); | 1127 ASSERT_TRUE(EntryExists(src_file_path)); |
1128 scoped_ptr<ResourceEntry> src_entry = GetResourceEntryByPathSync( | 1128 scoped_ptr<ResourceEntry> src_entry = GetResourceEntryByPathSync( |
1129 src_file_path); | 1129 src_file_path); |
1130 ASSERT_TRUE(src_entry); | 1130 ASSERT_TRUE(src_entry); |
1131 std::string src_file_path_resource_id = src_entry->resource_id(); | 1131 std::string src_file_path_resource_id = src_entry->resource_id(); |
1132 | 1132 |
1133 EXPECT_FALSE(EntryExists(dest_parent_path)); | 1133 EXPECT_FALSE(EntryExists(dest_parent_path)); |
1134 | 1134 |
1135 FileError error = FILE_ERROR_OK; | 1135 FileError error = FILE_ERROR_OK; |
1136 file_system_->Copy( | 1136 file_system_->Copy( |
1137 src_file_path, | 1137 src_file_path, |
1138 dest_file_path, | 1138 dest_file_path, |
1139 google_apis::test_util::CreateCopyResultCallback(&error)); | 1139 google_apis::test_util::CreateCopyResultCallback(&error)); |
1140 google_apis::test_util::RunBlockingPoolTask(); | 1140 google_apis::test_util::RunBlockingPoolTask(); |
1141 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error); | 1141 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error); |
1142 | 1142 |
1143 EXPECT_TRUE(EntryExists(src_file_path)); | 1143 EXPECT_TRUE(EntryExists(src_file_path)); |
1144 EXPECT_FALSE(EntryExists(dest_parent_path)); | 1144 EXPECT_FALSE(EntryExists(dest_parent_path)); |
1145 EXPECT_FALSE(EntryExists(dest_file_path)); | 1145 EXPECT_FALSE(EntryExists(dest_file_path)); |
1146 } | 1146 } |
1147 | 1147 |
1148 // Test the case where the parent of |dest_file_path| is an existing file, | 1148 // Test the case where the parent of |dest_file_path| is an existing file, |
1149 // not a directory. | 1149 // not a directory. |
1150 TEST_F(DriveFileSystemTest, CopyFileToInvalidPath) { | 1150 TEST_F(FileSystemTest, CopyFileToInvalidPath) { |
1151 base::FilePath src_file_path(FILE_PATH_LITERAL( | 1151 base::FilePath src_file_path(FILE_PATH_LITERAL( |
1152 "drive/root/Document 1 excludeDir-test.gdoc")); | 1152 "drive/root/Document 1 excludeDir-test.gdoc")); |
1153 base::FilePath dest_parent_path( | 1153 base::FilePath dest_parent_path( |
1154 FILE_PATH_LITERAL("drive/root/Duplicate Name.txt")); | 1154 FILE_PATH_LITERAL("drive/root/Duplicate Name.txt")); |
1155 base::FilePath dest_file_path(FILE_PATH_LITERAL( | 1155 base::FilePath dest_file_path(FILE_PATH_LITERAL( |
1156 "drive/root/Duplicate Name.txt/Document 1 excludeDir-test.gdoc")); | 1156 "drive/root/Duplicate Name.txt/Document 1 excludeDir-test.gdoc")); |
1157 | 1157 |
1158 ASSERT_TRUE(LoadRootFeedDocument()); | 1158 ASSERT_TRUE(LoadRootFeedDocument()); |
1159 | 1159 |
1160 ASSERT_TRUE(EntryExists(src_file_path)); | 1160 ASSERT_TRUE(EntryExists(src_file_path)); |
(...skipping 15 matching lines...) Expand all Loading... |
1176 google_apis::test_util::RunBlockingPoolTask(); | 1176 google_apis::test_util::RunBlockingPoolTask(); |
1177 EXPECT_EQ(FILE_ERROR_NOT_A_DIRECTORY, error); | 1177 EXPECT_EQ(FILE_ERROR_NOT_A_DIRECTORY, error); |
1178 | 1178 |
1179 EXPECT_TRUE(EntryExists(src_file_path)); | 1179 EXPECT_TRUE(EntryExists(src_file_path)); |
1180 EXPECT_TRUE(EntryExists(src_file_path)); | 1180 EXPECT_TRUE(EntryExists(src_file_path)); |
1181 EXPECT_TRUE(EntryExists(dest_parent_path)); | 1181 EXPECT_TRUE(EntryExists(dest_parent_path)); |
1182 | 1182 |
1183 EXPECT_FALSE(EntryExists(dest_file_path)); | 1183 EXPECT_FALSE(EntryExists(dest_file_path)); |
1184 } | 1184 } |
1185 | 1185 |
1186 TEST_F(DriveFileSystemTest, RemoveEntries) { | 1186 TEST_F(FileSystemTest, RemoveEntries) { |
1187 ASSERT_TRUE(LoadRootFeedDocument()); | 1187 ASSERT_TRUE(LoadRootFeedDocument()); |
1188 | 1188 |
1189 base::FilePath nonexisting_file( | 1189 base::FilePath nonexisting_file( |
1190 FILE_PATH_LITERAL("drive/root/Dummy file.txt")); | 1190 FILE_PATH_LITERAL("drive/root/Dummy file.txt")); |
1191 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 1191 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
1192 base::FilePath dir_in_root(FILE_PATH_LITERAL("drive/root/Directory 1")); | 1192 base::FilePath dir_in_root(FILE_PATH_LITERAL("drive/root/Directory 1")); |
1193 base::FilePath file_in_subdir( | 1193 base::FilePath file_in_subdir( |
1194 FILE_PATH_LITERAL("drive/root/Directory 1/SubDirectory File 1.txt")); | 1194 FILE_PATH_LITERAL("drive/root/Directory 1/SubDirectory File 1.txt")); |
1195 | 1195 |
1196 ASSERT_TRUE(EntryExists(file_in_root)); | 1196 ASSERT_TRUE(EntryExists(file_in_root)); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1231 // Try removing non-existing file. | 1231 // Try removing non-existing file. |
1232 EXPECT_FALSE(RemoveEntry(nonexisting_file)); | 1232 EXPECT_FALSE(RemoveEntry(nonexisting_file)); |
1233 | 1233 |
1234 // Try removing root file element. | 1234 // Try removing root file element. |
1235 EXPECT_FALSE(RemoveEntry(base::FilePath(FILE_PATH_LITERAL("drive/root")))); | 1235 EXPECT_FALSE(RemoveEntry(base::FilePath(FILE_PATH_LITERAL("drive/root")))); |
1236 | 1236 |
1237 // Need this to ensure OnDirectoryChanged() is run. | 1237 // Need this to ensure OnDirectoryChanged() is run. |
1238 google_apis::test_util::RunBlockingPoolTask(); | 1238 google_apis::test_util::RunBlockingPoolTask(); |
1239 } | 1239 } |
1240 | 1240 |
1241 TEST_F(DriveFileSystemTest, CreateDirectory) { | 1241 TEST_F(FileSystemTest, CreateDirectory) { |
1242 ASSERT_TRUE(LoadRootFeedDocument()); | 1242 ASSERT_TRUE(LoadRootFeedDocument()); |
1243 | 1243 |
1244 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1244 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
1245 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); | 1245 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
1246 | 1246 |
1247 // Create directory in root. | 1247 // Create directory in root. |
1248 base::FilePath dir_path(FILE_PATH_LITERAL("drive/root/New Folder 1")); | 1248 base::FilePath dir_path(FILE_PATH_LITERAL("drive/root/New Folder 1")); |
1249 EXPECT_FALSE(EntryExists(dir_path)); | 1249 EXPECT_FALSE(EntryExists(dir_path)); |
1250 EXPECT_EQ(FILE_ERROR_OK, AddDirectory(dir_path)); | 1250 EXPECT_EQ(FILE_ERROR_OK, AddDirectory(dir_path)); |
1251 EXPECT_TRUE(EntryExists(dir_path)); | 1251 EXPECT_TRUE(EntryExists(dir_path)); |
1252 | 1252 |
1253 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1253 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
1254 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/New Folder 1"))))) | 1254 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root/New Folder 1"))))) |
1255 .Times(1); | 1255 .Times(1); |
1256 | 1256 |
1257 // Create directory in a sub directory. | 1257 // Create directory in a sub directory. |
1258 base::FilePath subdir_path( | 1258 base::FilePath subdir_path( |
1259 FILE_PATH_LITERAL("drive/root/New Folder 1/New Folder 2")); | 1259 FILE_PATH_LITERAL("drive/root/New Folder 1/New Folder 2")); |
1260 EXPECT_FALSE(EntryExists(subdir_path)); | 1260 EXPECT_FALSE(EntryExists(subdir_path)); |
1261 EXPECT_EQ(FILE_ERROR_OK, AddDirectory(subdir_path)); | 1261 EXPECT_EQ(FILE_ERROR_OK, AddDirectory(subdir_path)); |
1262 EXPECT_TRUE(EntryExists(subdir_path)); | 1262 EXPECT_TRUE(EntryExists(subdir_path)); |
1263 } | 1263 } |
1264 | 1264 |
1265 TEST_F(DriveFileSystemTest, CreateDirectoryByImplicitLoad) { | 1265 TEST_F(FileSystemTest, CreateDirectoryByImplicitLoad) { |
1266 // Intentionally *not* calling LoadRootFeedDocument(), for testing that | 1266 // Intentionally *not* calling LoadRootFeedDocument(), for testing that |
1267 // CreateDirectory ensures feed loading before it runs. | 1267 // CreateDirectory ensures feed loading before it runs. |
1268 | 1268 |
1269 base::FilePath existing_directory( | 1269 base::FilePath existing_directory( |
1270 FILE_PATH_LITERAL("drive/root/Directory 1")); | 1270 FILE_PATH_LITERAL("drive/root/Directory 1")); |
1271 FileError error = FILE_ERROR_FAILED; | 1271 FileError error = FILE_ERROR_FAILED; |
1272 file_system_->CreateDirectory( | 1272 file_system_->CreateDirectory( |
1273 existing_directory, | 1273 existing_directory, |
1274 true, // is_exclusive | 1274 true, // is_exclusive |
1275 false, // is_recursive | 1275 false, // is_recursive |
1276 google_apis::test_util::CreateCopyResultCallback(&error)); | 1276 google_apis::test_util::CreateCopyResultCallback(&error)); |
1277 google_apis::test_util::RunBlockingPoolTask(); | 1277 google_apis::test_util::RunBlockingPoolTask(); |
1278 | 1278 |
1279 // It should fail because is_exclusive is set to true. | 1279 // It should fail because is_exclusive is set to true. |
1280 EXPECT_EQ(FILE_ERROR_EXISTS, error); | 1280 EXPECT_EQ(FILE_ERROR_EXISTS, error); |
1281 } | 1281 } |
1282 | 1282 |
1283 TEST_F(DriveFileSystemTest, PinAndUnpin) { | 1283 TEST_F(FileSystemTest, PinAndUnpin) { |
1284 ASSERT_TRUE(LoadRootFeedDocument()); | 1284 ASSERT_TRUE(LoadRootFeedDocument()); |
1285 | 1285 |
1286 base::FilePath file_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 1286 base::FilePath file_path(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
1287 | 1287 |
1288 // Get the file info. | 1288 // Get the file info. |
1289 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_path)); | 1289 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_path)); |
1290 ASSERT_TRUE(entry); | 1290 ASSERT_TRUE(entry); |
1291 | 1291 |
1292 // Pin the file. | 1292 // Pin the file. |
1293 FileError error = FILE_ERROR_FAILED; | 1293 FileError error = FILE_ERROR_FAILED; |
1294 EXPECT_CALL(*mock_cache_observer_, | 1294 EXPECT_CALL(*mock_cache_observer_, |
1295 OnCachePinned(entry->resource_id(), | 1295 OnCachePinned(entry->resource_id(), |
1296 entry->file_specific_info().file_md5())).Times(1); | 1296 entry->file_specific_info().file_md5())).Times(1); |
1297 file_system_->Pin(file_path, | 1297 file_system_->Pin(file_path, |
1298 google_apis::test_util::CreateCopyResultCallback(&error)); | 1298 google_apis::test_util::CreateCopyResultCallback(&error)); |
1299 google_apis::test_util::RunBlockingPoolTask(); | 1299 google_apis::test_util::RunBlockingPoolTask(); |
1300 EXPECT_EQ(FILE_ERROR_OK, error); | 1300 EXPECT_EQ(FILE_ERROR_OK, error); |
1301 | 1301 |
1302 // Unpin the file. | 1302 // Unpin the file. |
1303 error = FILE_ERROR_FAILED; | 1303 error = FILE_ERROR_FAILED; |
1304 EXPECT_CALL(*mock_cache_observer_, | 1304 EXPECT_CALL(*mock_cache_observer_, |
1305 OnCacheUnpinned(entry->resource_id(), | 1305 OnCacheUnpinned(entry->resource_id(), |
1306 entry->file_specific_info().file_md5())).Times(1); | 1306 entry->file_specific_info().file_md5())).Times(1); |
1307 file_system_->Unpin(file_path, | 1307 file_system_->Unpin(file_path, |
1308 google_apis::test_util::CreateCopyResultCallback(&error)); | 1308 google_apis::test_util::CreateCopyResultCallback(&error)); |
1309 google_apis::test_util::RunBlockingPoolTask(); | 1309 google_apis::test_util::RunBlockingPoolTask(); |
1310 EXPECT_EQ(FILE_ERROR_OK, error); | 1310 EXPECT_EQ(FILE_ERROR_OK, error); |
1311 } | 1311 } |
1312 | 1312 |
1313 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_EnoughSpace) { | 1313 TEST_F(FileSystemTest, GetFileByPath_FromGData_EnoughSpace) { |
1314 ASSERT_TRUE(LoadRootFeedDocument()); | 1314 ASSERT_TRUE(LoadRootFeedDocument()); |
1315 | 1315 |
1316 // The transfered file is cached and the change of "offline available" | 1316 // The transfered file is cached and the change of "offline available" |
1317 // attribute is notified. | 1317 // attribute is notified. |
1318 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1318 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
1319 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); | 1319 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
1320 | 1320 |
1321 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 1321 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
1322 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_in_root)); | 1322 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_in_root)); |
1323 const int64 file_size = entry->file_info().size(); | 1323 const int64 file_size = entry->file_info().size(); |
(...skipping 16 matching lines...) Expand all Loading... |
1340 | 1340 |
1341 // Verify that readable permission is set. | 1341 // Verify that readable permission is set. |
1342 int permission = 0; | 1342 int permission = 0; |
1343 EXPECT_TRUE(file_util::GetPosixFilePermissions(file_path, &permission)); | 1343 EXPECT_TRUE(file_util::GetPosixFilePermissions(file_path, &permission)); |
1344 EXPECT_EQ(file_util::FILE_PERMISSION_READ_BY_USER | | 1344 EXPECT_EQ(file_util::FILE_PERMISSION_READ_BY_USER | |
1345 file_util::FILE_PERMISSION_WRITE_BY_USER | | 1345 file_util::FILE_PERMISSION_WRITE_BY_USER | |
1346 file_util::FILE_PERMISSION_READ_BY_GROUP | | 1346 file_util::FILE_PERMISSION_READ_BY_GROUP | |
1347 file_util::FILE_PERMISSION_READ_BY_OTHERS, permission); | 1347 file_util::FILE_PERMISSION_READ_BY_OTHERS, permission); |
1348 } | 1348 } |
1349 | 1349 |
1350 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_NoSpaceAtAll) { | 1350 TEST_F(FileSystemTest, GetFileByPath_FromGData_NoSpaceAtAll) { |
1351 ASSERT_TRUE(LoadRootFeedDocument()); | 1351 ASSERT_TRUE(LoadRootFeedDocument()); |
1352 | 1352 |
1353 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 1353 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
1354 | 1354 |
1355 // Pretend we have no space at all. | 1355 // Pretend we have no space at all. |
1356 fake_free_disk_space_getter_->set_fake_free_disk_space(0); | 1356 fake_free_disk_space_getter_->set_fake_free_disk_space(0); |
1357 | 1357 |
1358 FileError error = FILE_ERROR_OK; | 1358 FileError error = FILE_ERROR_OK; |
1359 base::FilePath file_path; | 1359 base::FilePath file_path; |
1360 scoped_ptr<ResourceEntry> entry; | 1360 scoped_ptr<ResourceEntry> entry; |
1361 file_system_->GetFileByPath(file_in_root, | 1361 file_system_->GetFileByPath(file_in_root, |
1362 google_apis::test_util::CreateCopyResultCallback( | 1362 google_apis::test_util::CreateCopyResultCallback( |
1363 &error, &file_path, &entry)); | 1363 &error, &file_path, &entry)); |
1364 google_apis::test_util::RunBlockingPoolTask(); | 1364 google_apis::test_util::RunBlockingPoolTask(); |
1365 | 1365 |
1366 EXPECT_EQ(FILE_ERROR_NO_SPACE, error); | 1366 EXPECT_EQ(FILE_ERROR_NO_SPACE, error); |
1367 } | 1367 } |
1368 | 1368 |
1369 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_NoEnoughSpaceButCanFreeUp) { | 1369 TEST_F(FileSystemTest, GetFileByPath_FromGData_NoEnoughSpaceButCanFreeUp) { |
1370 ASSERT_TRUE(LoadRootFeedDocument()); | 1370 ASSERT_TRUE(LoadRootFeedDocument()); |
1371 | 1371 |
1372 // The transfered file is cached and the change of "offline available" | 1372 // The transfered file is cached and the change of "offline available" |
1373 // attribute is notified. | 1373 // attribute is notified. |
1374 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1374 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
1375 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); | 1375 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
1376 | 1376 |
1377 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 1377 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
1378 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_in_root)); | 1378 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_in_root)); |
1379 const int64 file_size = entry->file_info().size(); | 1379 const int64 file_size = entry->file_info().size(); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1414 google_apis::test_util::RunBlockingPoolTask(); | 1414 google_apis::test_util::RunBlockingPoolTask(); |
1415 | 1415 |
1416 EXPECT_EQ(FILE_ERROR_OK, error); | 1416 EXPECT_EQ(FILE_ERROR_OK, error); |
1417 ASSERT_TRUE(entry); | 1417 ASSERT_TRUE(entry); |
1418 EXPECT_FALSE(entry->file_specific_info().is_hosted_document()); | 1418 EXPECT_FALSE(entry->file_specific_info().is_hosted_document()); |
1419 | 1419 |
1420 // The cache entry should be removed in order to free up space. | 1420 // The cache entry should be removed in order to free up space. |
1421 ASSERT_FALSE(CacheEntryExists("<resource_id>", "<md5>")); | 1421 ASSERT_FALSE(CacheEntryExists("<resource_id>", "<md5>")); |
1422 } | 1422 } |
1423 | 1423 |
1424 TEST_F(DriveFileSystemTest, GetFileByPath_FromGData_EnoughSpaceButBecomeFull) { | 1424 TEST_F(FileSystemTest, GetFileByPath_FromGData_EnoughSpaceButBecomeFull) { |
1425 ASSERT_TRUE(LoadRootFeedDocument()); | 1425 ASSERT_TRUE(LoadRootFeedDocument()); |
1426 | 1426 |
1427 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 1427 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
1428 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_in_root)); | 1428 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_in_root)); |
1429 const int64 file_size = entry->file_info().size(); | 1429 const int64 file_size = entry->file_info().size(); |
1430 | 1430 |
1431 // Pretend we have enough space first (checked before downloading a file), | 1431 // Pretend we have enough space first (checked before downloading a file), |
1432 // but then start reporting we have not enough space. This is to emulate that | 1432 // but then start reporting we have not enough space. This is to emulate that |
1433 // the disk space becomes full after the file is downloaded for some reason | 1433 // the disk space becomes full after the file is downloaded for some reason |
1434 // (ex. the actual file was larger than the expected size). | 1434 // (ex. the actual file was larger than the expected size). |
1435 fake_free_disk_space_getter_->set_fake_free_disk_space( | 1435 fake_free_disk_space_getter_->set_fake_free_disk_space( |
1436 file_size + internal::kMinFreeSpace); | 1436 file_size + internal::kMinFreeSpace); |
1437 fake_free_disk_space_getter_->set_fake_free_disk_space( | 1437 fake_free_disk_space_getter_->set_fake_free_disk_space( |
1438 internal::kMinFreeSpace - 1); | 1438 internal::kMinFreeSpace - 1); |
1439 fake_free_disk_space_getter_->set_fake_free_disk_space( | 1439 fake_free_disk_space_getter_->set_fake_free_disk_space( |
1440 internal::kMinFreeSpace - 1); | 1440 internal::kMinFreeSpace - 1); |
1441 | 1441 |
1442 FileError error = FILE_ERROR_OK; | 1442 FileError error = FILE_ERROR_OK; |
1443 base::FilePath file_path; | 1443 base::FilePath file_path; |
1444 entry.reset(); | 1444 entry.reset(); |
1445 file_system_->GetFileByPath(file_in_root, | 1445 file_system_->GetFileByPath(file_in_root, |
1446 google_apis::test_util::CreateCopyResultCallback( | 1446 google_apis::test_util::CreateCopyResultCallback( |
1447 &error, &file_path, &entry)); | 1447 &error, &file_path, &entry)); |
1448 google_apis::test_util::RunBlockingPoolTask(); | 1448 google_apis::test_util::RunBlockingPoolTask(); |
1449 | 1449 |
1450 EXPECT_EQ(FILE_ERROR_NO_SPACE, error); | 1450 EXPECT_EQ(FILE_ERROR_NO_SPACE, error); |
1451 } | 1451 } |
1452 | 1452 |
1453 TEST_F(DriveFileSystemTest, GetFileByPath_FromCache) { | 1453 TEST_F(FileSystemTest, GetFileByPath_FromCache) { |
1454 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); | 1454 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); |
1455 | 1455 |
1456 ASSERT_TRUE(LoadRootFeedDocument()); | 1456 ASSERT_TRUE(LoadRootFeedDocument()); |
1457 | 1457 |
1458 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 1458 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
1459 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_in_root)); | 1459 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_in_root)); |
1460 | 1460 |
1461 // Store something as cached version of this file. | 1461 // Store something as cached version of this file. |
1462 FileError error = FILE_ERROR_OK; | 1462 FileError error = FILE_ERROR_OK; |
1463 cache_->StoreOnUIThread( | 1463 cache_->StoreOnUIThread( |
(...skipping 10 matching lines...) Expand all Loading... |
1474 file_system_->GetFileByPath(file_in_root, | 1474 file_system_->GetFileByPath(file_in_root, |
1475 google_apis::test_util::CreateCopyResultCallback( | 1475 google_apis::test_util::CreateCopyResultCallback( |
1476 &error, &file_path, &entry)); | 1476 &error, &file_path, &entry)); |
1477 google_apis::test_util::RunBlockingPoolTask(); | 1477 google_apis::test_util::RunBlockingPoolTask(); |
1478 | 1478 |
1479 EXPECT_EQ(FILE_ERROR_OK, error); | 1479 EXPECT_EQ(FILE_ERROR_OK, error); |
1480 ASSERT_TRUE(entry); | 1480 ASSERT_TRUE(entry); |
1481 EXPECT_FALSE(entry->file_specific_info().is_hosted_document()); | 1481 EXPECT_FALSE(entry->file_specific_info().is_hosted_document()); |
1482 } | 1482 } |
1483 | 1483 |
1484 TEST_F(DriveFileSystemTest, GetFileByPath_HostedDocument) { | 1484 TEST_F(FileSystemTest, GetFileByPath_HostedDocument) { |
1485 ASSERT_TRUE(LoadRootFeedDocument()); | 1485 ASSERT_TRUE(LoadRootFeedDocument()); |
1486 | 1486 |
1487 base::FilePath file_in_root(FILE_PATH_LITERAL( | 1487 base::FilePath file_in_root(FILE_PATH_LITERAL( |
1488 "drive/root/Document 1 excludeDir-test.gdoc")); | 1488 "drive/root/Document 1 excludeDir-test.gdoc")); |
1489 scoped_ptr<ResourceEntry> src_entry = | 1489 scoped_ptr<ResourceEntry> src_entry = |
1490 GetResourceEntryByPathSync(file_in_root); | 1490 GetResourceEntryByPathSync(file_in_root); |
1491 ASSERT_TRUE(src_entry); | 1491 ASSERT_TRUE(src_entry); |
1492 | 1492 |
1493 FileError error = FILE_ERROR_FAILED; | 1493 FileError error = FILE_ERROR_FAILED; |
1494 base::FilePath file_path; | 1494 base::FilePath file_path; |
1495 scoped_ptr<ResourceEntry> entry; | 1495 scoped_ptr<ResourceEntry> entry; |
1496 file_system_->GetFileByPath(file_in_root, | 1496 file_system_->GetFileByPath(file_in_root, |
1497 google_apis::test_util::CreateCopyResultCallback( | 1497 google_apis::test_util::CreateCopyResultCallback( |
1498 &error, &file_path, &entry)); | 1498 &error, &file_path, &entry)); |
1499 google_apis::test_util::RunBlockingPoolTask(); | 1499 google_apis::test_util::RunBlockingPoolTask(); |
1500 | 1500 |
1501 EXPECT_EQ(FILE_ERROR_OK, error); | 1501 EXPECT_EQ(FILE_ERROR_OK, error); |
1502 ASSERT_TRUE(entry); | 1502 ASSERT_TRUE(entry); |
1503 EXPECT_TRUE(entry->file_specific_info().is_hosted_document()); | 1503 EXPECT_TRUE(entry->file_specific_info().is_hosted_document()); |
1504 EXPECT_FALSE(file_path.empty()); | 1504 EXPECT_FALSE(file_path.empty()); |
1505 | 1505 |
1506 ASSERT_TRUE(src_entry); | 1506 ASSERT_TRUE(src_entry); |
1507 VerifyHostedDocumentJSONFile(*src_entry, file_path); | 1507 VerifyHostedDocumentJSONFile(*src_entry, file_path); |
1508 } | 1508 } |
1509 | 1509 |
1510 TEST_F(DriveFileSystemTest, GetFileByResourceId) { | 1510 TEST_F(FileSystemTest, GetFileByResourceId) { |
1511 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); | 1511 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); |
1512 | 1512 |
1513 // The transfered file is cached and the change of "offline available" | 1513 // The transfered file is cached and the change of "offline available" |
1514 // attribute is notified. | 1514 // attribute is notified. |
1515 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1515 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
1516 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); | 1516 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
1517 | 1517 |
1518 ASSERT_TRUE(LoadRootFeedDocument()); | 1518 ASSERT_TRUE(LoadRootFeedDocument()); |
1519 | 1519 |
1520 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 1520 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
1521 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_in_root)); | 1521 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_in_root)); |
1522 std::string resource_id = entry->resource_id(); | 1522 std::string resource_id = entry->resource_id(); |
1523 | 1523 |
1524 FileError error = FILE_ERROR_OK; | 1524 FileError error = FILE_ERROR_OK; |
1525 base::FilePath file_path; | 1525 base::FilePath file_path; |
1526 entry.reset(); | 1526 entry.reset(); |
1527 file_system_->GetFileByResourceId( | 1527 file_system_->GetFileByResourceId( |
1528 resource_id, | 1528 resource_id, |
1529 DriveClientContext(USER_INITIATED), | 1529 DriveClientContext(USER_INITIATED), |
1530 google_apis::test_util::CreateCopyResultCallback( | 1530 google_apis::test_util::CreateCopyResultCallback( |
1531 &error, &file_path, &entry), | 1531 &error, &file_path, &entry), |
1532 google_apis::GetContentCallback()); | 1532 google_apis::GetContentCallback()); |
1533 google_apis::test_util::RunBlockingPoolTask(); | 1533 google_apis::test_util::RunBlockingPoolTask(); |
1534 | 1534 |
1535 EXPECT_EQ(FILE_ERROR_OK, error); | 1535 EXPECT_EQ(FILE_ERROR_OK, error); |
1536 ASSERT_TRUE(entry); | 1536 ASSERT_TRUE(entry); |
1537 EXPECT_FALSE(entry->file_specific_info().is_hosted_document()); | 1537 EXPECT_FALSE(entry->file_specific_info().is_hosted_document()); |
1538 } | 1538 } |
1539 | 1539 |
1540 TEST_F(DriveFileSystemTest, GetFileContentByPath) { | 1540 TEST_F(FileSystemTest, GetFileContentByPath) { |
1541 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); | 1541 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); |
1542 | 1542 |
1543 // The transfered file is cached and the change of "offline available" | 1543 // The transfered file is cached and the change of "offline available" |
1544 // attribute is notified. | 1544 // attribute is notified. |
1545 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1545 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
1546 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); | 1546 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
1547 | 1547 |
1548 ASSERT_TRUE(LoadRootFeedDocument()); | 1548 ASSERT_TRUE(LoadRootFeedDocument()); |
1549 | 1549 |
1550 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 1550 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1609 EXPECT_TRUE(cancel_download.is_null()); | 1609 EXPECT_TRUE(cancel_download.is_null()); |
1610 // The content is available from the cache file. | 1610 // The content is available from the cache file. |
1611 EXPECT_TRUE(content_buffer.empty()); | 1611 EXPECT_TRUE(content_buffer.empty()); |
1612 int64 local_file_size = 0; | 1612 int64 local_file_size = 0; |
1613 file_util::GetFileSize(local_path, &local_file_size); | 1613 file_util::GetFileSize(local_path, &local_file_size); |
1614 EXPECT_EQ(entry->file_info().size(), local_file_size); | 1614 EXPECT_EQ(entry->file_info().size(), local_file_size); |
1615 EXPECT_EQ(FILE_ERROR_OK, completion_error); | 1615 EXPECT_EQ(FILE_ERROR_OK, completion_error); |
1616 } | 1616 } |
1617 } | 1617 } |
1618 | 1618 |
1619 TEST_F(DriveFileSystemTest, GetFileByResourceId_FromCache) { | 1619 TEST_F(FileSystemTest, GetFileByResourceId_FromCache) { |
1620 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); | 1620 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); |
1621 | 1621 |
1622 ASSERT_TRUE(LoadRootFeedDocument()); | 1622 ASSERT_TRUE(LoadRootFeedDocument()); |
1623 | 1623 |
1624 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 1624 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
1625 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_in_root)); | 1625 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_in_root)); |
1626 | 1626 |
1627 // Store something as cached version of this file. | 1627 // Store something as cached version of this file. |
1628 FileError error = FILE_ERROR_FAILED; | 1628 FileError error = FILE_ERROR_FAILED; |
1629 cache_->StoreOnUIThread( | 1629 cache_->StoreOnUIThread( |
(...skipping 18 matching lines...) Expand all Loading... |
1648 google_apis::test_util::CreateCopyResultCallback( | 1648 google_apis::test_util::CreateCopyResultCallback( |
1649 &error, &file_path, &entry), | 1649 &error, &file_path, &entry), |
1650 google_apis::GetContentCallback()); | 1650 google_apis::GetContentCallback()); |
1651 google_apis::test_util::RunBlockingPoolTask(); | 1651 google_apis::test_util::RunBlockingPoolTask(); |
1652 | 1652 |
1653 EXPECT_EQ(FILE_ERROR_OK, error); | 1653 EXPECT_EQ(FILE_ERROR_OK, error); |
1654 ASSERT_TRUE(entry); | 1654 ASSERT_TRUE(entry); |
1655 EXPECT_FALSE(entry->file_specific_info().is_hosted_document()); | 1655 EXPECT_FALSE(entry->file_specific_info().is_hosted_document()); |
1656 } | 1656 } |
1657 | 1657 |
1658 TEST_F(DriveFileSystemTest, UpdateFileByResourceId_PersistentFile) { | 1658 TEST_F(FileSystemTest, UpdateFileByResourceId_PersistentFile) { |
1659 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); | 1659 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); |
1660 | 1660 |
1661 ASSERT_TRUE(LoadRootFeedDocument()); | 1661 ASSERT_TRUE(LoadRootFeedDocument()); |
1662 | 1662 |
1663 // This is a file defined in root_feed.json. | 1663 // This is a file defined in root_feed.json. |
1664 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 1664 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
1665 const std::string kResourceId("file:2_file_resource_id"); | 1665 const std::string kResourceId("file:2_file_resource_id"); |
1666 const std::string kMd5("3b4382ebefec6e743578c76bbd0575ce"); | 1666 const std::string kMd5("3b4382ebefec6e743578c76bbd0575ce"); |
1667 | 1667 |
1668 // Pin the file so it'll be store in "persistent" directory. | 1668 // Pin the file so it'll be store in "persistent" directory. |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1720 google_apis::test_util::CreateCopyResultCallback(&error)); | 1720 google_apis::test_util::CreateCopyResultCallback(&error)); |
1721 google_apis::test_util::RunBlockingPoolTask(); | 1721 google_apis::test_util::RunBlockingPoolTask(); |
1722 EXPECT_EQ(FILE_ERROR_OK, error); | 1722 EXPECT_EQ(FILE_ERROR_OK, error); |
1723 | 1723 |
1724 // Make sure that the number of files did not change (i.e. we updated an | 1724 // Make sure that the number of files did not change (i.e. we updated an |
1725 // existing file, rather than adding a new file. The number of files | 1725 // existing file, rather than adding a new file. The number of files |
1726 // increases if we don't handle the file update right). | 1726 // increases if we don't handle the file update right). |
1727 EXPECT_EQ(num_files_in_root, CountFiles(*root_directory_entries)); | 1727 EXPECT_EQ(num_files_in_root, CountFiles(*root_directory_entries)); |
1728 } | 1728 } |
1729 | 1729 |
1730 TEST_F(DriveFileSystemTest, UpdateFileByResourceId_NonexistentFile) { | 1730 TEST_F(FileSystemTest, UpdateFileByResourceId_NonexistentFile) { |
1731 ASSERT_TRUE(LoadRootFeedDocument()); | 1731 ASSERT_TRUE(LoadRootFeedDocument()); |
1732 | 1732 |
1733 // This is nonexistent in root_feed.json. | 1733 // This is nonexistent in root_feed.json. |
1734 const base::FilePath kFilePath( | 1734 const base::FilePath kFilePath( |
1735 FILE_PATH_LITERAL("drive/root/Nonexistent.txt")); | 1735 FILE_PATH_LITERAL("drive/root/Nonexistent.txt")); |
1736 const std::string kResourceId("file:nonexistent_resource_id"); | 1736 const std::string kResourceId("file:nonexistent_resource_id"); |
1737 const std::string kMd5("nonexistent_md5"); | 1737 const std::string kMd5("nonexistent_md5"); |
1738 | 1738 |
1739 // The callback will be called upon completion of | 1739 // The callback will be called upon completion of |
1740 // UpdateFileByResourceId(). | 1740 // UpdateFileByResourceId(). |
1741 FileError error = FILE_ERROR_OK; | 1741 FileError error = FILE_ERROR_OK; |
1742 file_system_->UpdateFileByResourceId( | 1742 file_system_->UpdateFileByResourceId( |
1743 kResourceId, | 1743 kResourceId, |
1744 DriveClientContext(USER_INITIATED), | 1744 DriveClientContext(USER_INITIATED), |
1745 google_apis::test_util::CreateCopyResultCallback(&error)); | 1745 google_apis::test_util::CreateCopyResultCallback(&error)); |
1746 google_apis::test_util::RunBlockingPoolTask(); | 1746 google_apis::test_util::RunBlockingPoolTask(); |
1747 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error); | 1747 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error); |
1748 } | 1748 } |
1749 | 1749 |
1750 TEST_F(DriveFileSystemTest, ContentSearch) { | 1750 TEST_F(FileSystemTest, ContentSearch) { |
1751 ASSERT_TRUE(LoadRootFeedDocument()); | 1751 ASSERT_TRUE(LoadRootFeedDocument()); |
1752 | 1752 |
1753 const SearchResultPair kExpectedResults[] = { | 1753 const SearchResultPair kExpectedResults[] = { |
1754 { "drive/root/Directory 1/Sub Directory Folder/Sub Sub Directory Folder", | 1754 { "drive/root/Directory 1/Sub Directory Folder/Sub Sub Directory Folder", |
1755 true }, | 1755 true }, |
1756 { "drive/root/Directory 1/Sub Directory Folder", true }, | 1756 { "drive/root/Directory 1/Sub Directory Folder", true }, |
1757 { "drive/root/Directory 1/SubDirectory File 1.txt", false }, | 1757 { "drive/root/Directory 1/SubDirectory File 1.txt", false }, |
1758 { "drive/root/Directory 1", true }, | 1758 { "drive/root/Directory 1", true }, |
1759 { "drive/root/Directory 2 excludeDir-test", true }, | 1759 { "drive/root/Directory 2 excludeDir-test", true }, |
1760 }; | 1760 }; |
1761 | 1761 |
1762 SearchCallback callback = base::Bind( | 1762 SearchCallback callback = base::Bind( |
1763 &DriveSearchCallback, | 1763 &VerifySearchResult, |
1764 &message_loop_, | 1764 &message_loop_, |
1765 kExpectedResults, ARRAYSIZE_UNSAFE(kExpectedResults), | 1765 kExpectedResults, ARRAYSIZE_UNSAFE(kExpectedResults), |
1766 GURL()); | 1766 GURL()); |
1767 | 1767 |
1768 file_system_->Search("Directory", GURL(), callback); | 1768 file_system_->Search("Directory", GURL(), callback); |
1769 google_apis::test_util::RunBlockingPoolTask(); | 1769 google_apis::test_util::RunBlockingPoolTask(); |
1770 } | 1770 } |
1771 | 1771 |
1772 TEST_F(DriveFileSystemTest, ContentSearchWithNewEntry) { | 1772 TEST_F(FileSystemTest, ContentSearchWithNewEntry) { |
1773 ASSERT_TRUE(LoadRootFeedDocument()); | 1773 ASSERT_TRUE(LoadRootFeedDocument()); |
1774 | 1774 |
1775 // Create a new directory in the drive service. | 1775 // Create a new directory in the drive service. |
1776 google_apis::GDataErrorCode error = google_apis::GDATA_OTHER_ERROR; | 1776 google_apis::GDataErrorCode error = google_apis::GDATA_OTHER_ERROR; |
1777 scoped_ptr<google_apis::ResourceEntry> resource_entry; | 1777 scoped_ptr<google_apis::ResourceEntry> resource_entry; |
1778 fake_drive_service_->AddNewDirectory( | 1778 fake_drive_service_->AddNewDirectory( |
1779 fake_drive_service_->GetRootResourceId(), // Add to the root directory. | 1779 fake_drive_service_->GetRootResourceId(), // Add to the root directory. |
1780 "New Directory 1!", | 1780 "New Directory 1!", |
1781 google_apis::test_util::CreateCopyResultCallback( | 1781 google_apis::test_util::CreateCopyResultCallback( |
1782 &error, &resource_entry)); | 1782 &error, &resource_entry)); |
1783 google_apis::test_util::RunBlockingPoolTask(); | 1783 google_apis::test_util::RunBlockingPoolTask(); |
1784 | 1784 |
1785 // As the result of the first Search(), only entries in the current file | 1785 // As the result of the first Search(), only entries in the current file |
1786 // system snapshot are expected to be returned (i.e. "New Directory 1!" | 1786 // system snapshot are expected to be returned (i.e. "New Directory 1!" |
1787 // shouldn't be included in the search result even though it matches | 1787 // shouldn't be included in the search result even though it matches |
1788 // "Directory 1". | 1788 // "Directory 1". |
1789 const SearchResultPair kExpectedResults[] = { | 1789 const SearchResultPair kExpectedResults[] = { |
1790 { "drive/root/Directory 1", true } | 1790 { "drive/root/Directory 1", true } |
1791 }; | 1791 }; |
1792 | 1792 |
1793 SearchCallback callback = base::Bind( | 1793 SearchCallback callback = base::Bind( |
1794 &DriveSearchCallback, | 1794 &VerifySearchResult, |
1795 &message_loop_, | 1795 &message_loop_, |
1796 kExpectedResults, ARRAYSIZE_UNSAFE(kExpectedResults), | 1796 kExpectedResults, ARRAYSIZE_UNSAFE(kExpectedResults), |
1797 GURL()); | 1797 GURL()); |
1798 | 1798 |
1799 file_system_->Search("\"Directory 1\"", GURL(), callback); | 1799 file_system_->Search("\"Directory 1\"", GURL(), callback); |
1800 google_apis::test_util::RunBlockingPoolTask(); | 1800 google_apis::test_util::RunBlockingPoolTask(); |
1801 } | 1801 } |
1802 | 1802 |
1803 TEST_F(DriveFileSystemTest, ContentSearchEmptyResult) { | 1803 TEST_F(FileSystemTest, ContentSearchEmptyResult) { |
1804 ASSERT_TRUE(LoadRootFeedDocument()); | 1804 ASSERT_TRUE(LoadRootFeedDocument()); |
1805 | 1805 |
1806 const SearchResultPair* expected_results = NULL; | 1806 const SearchResultPair* expected_results = NULL; |
1807 | 1807 |
1808 SearchCallback callback = base::Bind( | 1808 SearchCallback callback = base::Bind( |
1809 &DriveSearchCallback, | 1809 &VerifySearchResult, |
1810 &message_loop_, | 1810 &message_loop_, |
1811 expected_results, | 1811 expected_results, |
1812 0u, | 1812 0u, |
1813 GURL()); | 1813 GURL()); |
1814 | 1814 |
1815 file_system_->Search("\"no-match query\"", GURL(), callback); | 1815 file_system_->Search("\"no-match query\"", GURL(), callback); |
1816 google_apis::test_util::RunBlockingPoolTask(); | 1816 google_apis::test_util::RunBlockingPoolTask(); |
1817 } | 1817 } |
1818 | 1818 |
1819 TEST_F(DriveFileSystemTest, GetAvailableSpace) { | 1819 TEST_F(FileSystemTest, GetAvailableSpace) { |
1820 FileError error = FILE_ERROR_OK; | 1820 FileError error = FILE_ERROR_OK; |
1821 int64 bytes_total; | 1821 int64 bytes_total; |
1822 int64 bytes_used; | 1822 int64 bytes_used; |
1823 file_system_->GetAvailableSpace( | 1823 file_system_->GetAvailableSpace( |
1824 google_apis::test_util::CreateCopyResultCallback( | 1824 google_apis::test_util::CreateCopyResultCallback( |
1825 &error, &bytes_total, &bytes_used)); | 1825 &error, &bytes_total, &bytes_used)); |
1826 google_apis::test_util::RunBlockingPoolTask(); | 1826 google_apis::test_util::RunBlockingPoolTask(); |
1827 EXPECT_EQ(GG_LONGLONG(6789012345), bytes_used); | 1827 EXPECT_EQ(GG_LONGLONG(6789012345), bytes_used); |
1828 EXPECT_EQ(GG_LONGLONG(9876543210), bytes_total); | 1828 EXPECT_EQ(GG_LONGLONG(9876543210), bytes_total); |
1829 } | 1829 } |
1830 | 1830 |
1831 TEST_F(DriveFileSystemTest, RefreshDirectory) { | 1831 TEST_F(FileSystemTest, RefreshDirectory) { |
1832 ASSERT_TRUE(LoadRootFeedDocument()); | 1832 ASSERT_TRUE(LoadRootFeedDocument()); |
1833 | 1833 |
1834 // We'll notify the directory change to the observer. | 1834 // We'll notify the directory change to the observer. |
1835 EXPECT_CALL(*mock_directory_observer_, | 1835 EXPECT_CALL(*mock_directory_observer_, |
1836 OnDirectoryChanged(Eq(util::GetDriveMyDriveRootPath()))).Times(1); | 1836 OnDirectoryChanged(Eq(util::GetDriveMyDriveRootPath()))).Times(1); |
1837 | 1837 |
1838 FileError error = FILE_ERROR_FAILED; | 1838 FileError error = FILE_ERROR_FAILED; |
1839 file_system_->RefreshDirectory( | 1839 file_system_->RefreshDirectory( |
1840 util::GetDriveMyDriveRootPath(), | 1840 util::GetDriveMyDriveRootPath(), |
1841 google_apis::test_util::CreateCopyResultCallback(&error)); | 1841 google_apis::test_util::CreateCopyResultCallback(&error)); |
1842 google_apis::test_util::RunBlockingPoolTask(); | 1842 google_apis::test_util::RunBlockingPoolTask(); |
1843 EXPECT_EQ(FILE_ERROR_OK, error); | 1843 EXPECT_EQ(FILE_ERROR_OK, error); |
1844 } | 1844 } |
1845 | 1845 |
1846 TEST_F(DriveFileSystemTest, OpenAndCloseFile) { | 1846 TEST_F(FileSystemTest, OpenAndCloseFile) { |
1847 ASSERT_TRUE(LoadRootFeedDocument()); | 1847 ASSERT_TRUE(LoadRootFeedDocument()); |
1848 | 1848 |
1849 // The transfered file is cached and the change of "offline available" | 1849 // The transfered file is cached and the change of "offline available" |
1850 // attribute is notified. | 1850 // attribute is notified. |
1851 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( | 1851 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
1852 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); | 1852 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); |
1853 | 1853 |
1854 const base::FilePath kFileInRoot(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 1854 const base::FilePath kFileInRoot(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
1855 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(kFileInRoot)); | 1855 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(kFileInRoot)); |
1856 const int64 file_size = entry->file_info().size(); | 1856 const int64 file_size = entry->file_info().size(); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1927 // Try to close the same file twice. | 1927 // Try to close the same file twice. |
1928 file_system_->CloseFile( | 1928 file_system_->CloseFile( |
1929 kFileInRoot, | 1929 kFileInRoot, |
1930 google_apis::test_util::CreateCopyResultCallback(&error)); | 1930 google_apis::test_util::CreateCopyResultCallback(&error)); |
1931 google_apis::test_util::RunBlockingPoolTask(); | 1931 google_apis::test_util::RunBlockingPoolTask(); |
1932 | 1932 |
1933 // It must fail. | 1933 // It must fail. |
1934 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error); | 1934 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error); |
1935 } | 1935 } |
1936 | 1936 |
1937 TEST_F(DriveFileSystemTest, MarkCacheFileAsMountedAndUnmounted) { | 1937 TEST_F(FileSystemTest, MarkCacheFileAsMountedAndUnmounted) { |
1938 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); | 1938 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); |
1939 ASSERT_TRUE(LoadRootFeedDocument()); | 1939 ASSERT_TRUE(LoadRootFeedDocument()); |
1940 | 1940 |
1941 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 1941 base::FilePath file_in_root(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
1942 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_in_root)); | 1942 scoped_ptr<ResourceEntry> entry(GetResourceEntryByPathSync(file_in_root)); |
1943 ASSERT_TRUE(entry); | 1943 ASSERT_TRUE(entry); |
1944 | 1944 |
1945 // Write to cache. | 1945 // Write to cache. |
1946 FileError error = FILE_ERROR_FAILED; | 1946 FileError error = FILE_ERROR_FAILED; |
1947 cache_->StoreOnUIThread( | 1947 cache_->StoreOnUIThread( |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1986 entry->resource_id(), | 1986 entry->resource_id(), |
1987 entry->file_specific_info().file_md5(), | 1987 entry->file_specific_info().file_md5(), |
1988 google_apis::test_util::CreateCopyResultCallback(&success, &cache_entry)); | 1988 google_apis::test_util::CreateCopyResultCallback(&success, &cache_entry)); |
1989 google_apis::test_util::RunBlockingPoolTask(); | 1989 google_apis::test_util::RunBlockingPoolTask(); |
1990 | 1990 |
1991 EXPECT_TRUE(success); | 1991 EXPECT_TRUE(success); |
1992 EXPECT_FALSE(cache_entry.is_mounted()); | 1992 EXPECT_FALSE(cache_entry.is_mounted()); |
1993 } | 1993 } |
1994 | 1994 |
1995 } // namespace drive | 1995 } // namespace drive |
OLD | NEW |