| Index: chrome/browser/chromeos/drive/drive_file_system_unittest.cc
|
| diff --git a/chrome/browser/chromeos/drive/drive_file_system_unittest.cc b/chrome/browser/chromeos/drive/drive_file_system_unittest.cc
|
| index 12b0b646de1f0617af2ba3f8f5f02bb4243ce436..081c9e8a7a87d5d584fd435dea81ede1c41593dc 100644
|
| --- a/chrome/browser/chromeos/drive/drive_file_system_unittest.cc
|
| +++ b/chrome/browser/chromeos/drive/drive_file_system_unittest.cc
|
| @@ -142,7 +142,6 @@ class DriveFileSystemTest : public testing::Test {
|
|
|
| void SetUpResourceMetadataAndFileSystem() {
|
| resource_metadata_.reset(new DriveResourceMetadata(
|
| - fake_drive_service_->GetRootResourceId(),
|
| cache_->GetCacheDirectoryPath(DriveCache::CACHE_TYPE_META),
|
| blocking_task_runner_));
|
|
|
| @@ -319,7 +318,6 @@ class DriveFileSystemTest : public testing::Test {
|
| fake_drive_service_->GetRootResourceId();
|
| scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests>
|
| resource_metadata(new DriveResourceMetadata(
|
| - root_resource_id,
|
| cache_->GetCacheDirectoryPath(DriveCache::CACHE_TYPE_META),
|
| blocking_task_runner_));
|
|
|
| @@ -338,10 +336,16 @@ class DriveFileSystemTest : public testing::Test {
|
| return false;
|
|
|
| // drive/root is already prepared by DriveResourceMetadata.
|
| - // TODO(haruki): Create drive/root here when we start creating it in
|
| - // ChangeListLoader.
|
| base::FilePath file_path;
|
|
|
| + // drive/root
|
| + resource_metadata->AddEntry(
|
| + util::CreateMyDriveRootEntry(root_resource_id),
|
| + google_apis::test_util::CreateCopyResultCallback(&error, &file_path));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + if (error != DRIVE_FILE_OK)
|
| + return false;
|
| +
|
| // drive/root/File1
|
| DriveEntryProto file1;
|
| file1.set_title("File1");
|
| @@ -466,15 +470,15 @@ class DriveFileSystemTest : public testing::Test {
|
| };
|
|
|
| void AsyncInitializationCallback(
|
| - int* counter,
|
| - int expected_counter,
|
| - MessageLoop* message_loop,
|
| - DriveFileError error,
|
| - bool hide_hosted_documents,
|
| - scoped_ptr<DriveEntryProtoVector> entries) {
|
| - ASSERT_EQ(DRIVE_FILE_OK, error);
|
| - ASSERT_TRUE(entries.get());
|
| - ASSERT_FALSE(entries->empty());
|
| + int* counter, int expected_counter, MessageLoop* message_loop,
|
| + DriveFileError error, scoped_ptr<DriveEntryProto> entry) {
|
| + if (error != DRIVE_FILE_OK || !entry) {
|
| + // If we hit an error case, quit the message loop immediately.
|
| + // Then the expectation in the test case can find it because the actual
|
| + // value of |counter| is different from the expected one.
|
| + message_loop->Quit();
|
| + return;
|
| + }
|
|
|
| (*counter)++;
|
| if (*counter >= expected_counter)
|
| @@ -482,38 +486,22 @@ void AsyncInitializationCallback(
|
| }
|
|
|
| TEST_F(DriveFileSystemTest, DuplicatedAsyncInitialization) {
|
| - // The root directory will be loaded that triggers the event.
|
| - EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
|
| - Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1);
|
| -
|
| int counter = 0;
|
| - ReadDirectoryWithSettingCallback callback = base::Bind(
|
| - &AsyncInitializationCallback,
|
| - &counter,
|
| - 2,
|
| - &message_loop_);
|
| + const GetEntryInfoCallback& callback = base::Bind(
|
| + &AsyncInitializationCallback, &counter, 2, &message_loop_);
|
|
|
| - file_system_->ReadDirectoryByPath(
|
| + file_system_->GetEntryInfoByPath(
|
| base::FilePath(FILE_PATH_LITERAL("drive/root")), callback);
|
| - file_system_->ReadDirectoryByPath(
|
| + file_system_->GetEntryInfoByPath(
|
| base::FilePath(FILE_PATH_LITERAL("drive/root")), callback);
|
| message_loop_.Run(); // Wait to get our result
|
| EXPECT_EQ(2, counter);
|
|
|
| - // ReadDirectoryByPath() was called twice, but the account metadata should
|
| - // only be loaded once. In the past, there was a bug that caused it to be
|
| - // loaded twice.
|
| + // Although GetEntryInfoByPath() was called twice, the account metadata
|
| + // should only be loaded once. In the past, there was a bug that caused
|
| + // it to be loaded twice.
|
| EXPECT_EQ(1, fake_drive_service_->about_resource_load_count());
|
| - // On the other hand, the resource list could be loaded twice. One for
|
| - // just the directory contents, and one for the entire resource list.
|
| - //
|
| - // The |callback| function gets called back soon after the directory content
|
| - // is loaded, and the full resource load is done in background asynchronously.
|
| - // So it depends on timing whether we receive the full resource load request
|
| - // at this point.
|
| - EXPECT_TRUE(fake_drive_service_->resource_list_load_count() == 1 ||
|
| - fake_drive_service_->resource_list_load_count() == 2)
|
| - << ": " << fake_drive_service_->resource_list_load_count();
|
| + EXPECT_EQ(1, fake_drive_service_->resource_list_load_count());
|
| }
|
|
|
| TEST_F(DriveFileSystemTest, GetGrandRootEntry) {
|
| @@ -528,19 +516,6 @@ TEST_F(DriveFileSystemTest, GetGrandRootEntry) {
|
| EXPECT_EQ(0, fake_drive_service_->resource_list_load_count());
|
| }
|
|
|
| -TEST_F(DriveFileSystemTest, GetMyDriveRootEntry) {
|
| - const base::FilePath kFilePath =
|
| - base::FilePath(FILE_PATH_LITERAL("drive/root"));
|
| - scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync(kFilePath);
|
| - ASSERT_TRUE(entry.get());
|
| - EXPECT_EQ(fake_drive_service_->GetRootResourceId(), entry->resource_id());
|
| -
|
| - // Getting the "My Drive" root entry should not cause the resource load to
|
| - // happen.
|
| - EXPECT_EQ(0, fake_drive_service_->about_resource_load_count());
|
| - EXPECT_EQ(0, fake_drive_service_->resource_list_load_count());
|
| -}
|
| -
|
| TEST_F(DriveFileSystemTest, GetOtherDirEntry) {
|
| const base::FilePath kFilePath =
|
| base::FilePath(FILE_PATH_LITERAL("drive/other"));
|
| @@ -725,14 +700,30 @@ TEST_F(DriveFileSystemTest, SearchOrphanFile) {
|
|
|
| TEST_F(DriveFileSystemTest, ReadDirectoryByPath_Root) {
|
| EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
|
| - Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1);
|
| + Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1);
|
|
|
| // ReadDirectoryByPath() should kick off the resource list loading.
|
| scoped_ptr<DriveEntryProtoVector> entries(
|
| - ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive/root")));
|
| + ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive")));
|
| // The root directory should be read correctly.
|
| ASSERT_TRUE(entries.get());
|
| - EXPECT_EQ(8U, entries->size());
|
| + ASSERT_EQ(2U, entries->size());
|
| +
|
| + // The found two directories shouold be /drive/root and /drive/other.
|
| + bool found_other = false;
|
| + bool found_my_drive = false;
|
| + for (size_t i = 0; i < entries->size(); ++i) {
|
| + const base::FilePath title =
|
| + base::FilePath::FromUTF8Unsafe((*entries)[i].title());
|
| + if (title == base::FilePath(util::kDriveOtherDirName)) {
|
| + found_other = true;
|
| + } else if (title == base::FilePath(util::kDriveMyDriveRootDirName)) {
|
| + found_my_drive = true;
|
| + }
|
| + }
|
| +
|
| + EXPECT_TRUE(found_other);
|
| + EXPECT_TRUE(found_my_drive);
|
| }
|
|
|
| TEST_F(DriveFileSystemTest, ReadDirectoryByPath_NonRootDirectory) {
|
|
|