| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/drive/drive_resource_metadata.h" | 5 #include "chrome/browser/chromeos/drive/drive_resource_metadata.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/message_loop.h" | 12 #include "base/message_loop.h" |
| 13 #include "base/sequenced_task_runner.h" | 13 #include "base/sequenced_task_runner.h" |
| 14 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
| 15 #include "base/threading/sequenced_worker_pool.h" | 15 #include "base/threading/sequenced_worker_pool.h" |
| 16 #include "chrome/browser/chromeos/drive/drive.pb.h" | 16 #include "chrome/browser/chromeos/drive/drive.pb.h" |
| 17 #include "chrome/browser/chromeos/drive/drive_cache.h" | 17 #include "chrome/browser/chromeos/drive/drive_cache.h" |
| 18 #include "chrome/browser/chromeos/drive/drive_file_system_util.h" |
| 18 #include "chrome/browser/chromeos/drive/drive_resource_metadata_storage.h" | 19 #include "chrome/browser/chromeos/drive/drive_resource_metadata_storage.h" |
| 19 #include "chrome/browser/chromeos/drive/drive_test_util.h" | 20 #include "chrome/browser/chromeos/drive/drive_test_util.h" |
| 20 #include "chrome/browser/google_apis/test_util.h" | 21 #include "chrome/browser/google_apis/test_util.h" |
| 21 #include "chrome/browser/google_apis/time_util.h" | 22 #include "chrome/browser/google_apis/time_util.h" |
| 22 #include "chrome/test/base/testing_profile.h" | 23 #include "chrome/test/base/testing_profile.h" |
| 23 #include "content/public/test/test_browser_thread.h" | 24 #include "content/public/test/test_browser_thread.h" |
| 24 #include "testing/gtest/include/gtest/gtest.h" | 25 #include "testing/gtest/include/gtest/gtest.h" |
| 25 | 26 |
| 26 namespace drive { | 27 namespace drive { |
| 27 namespace { | 28 namespace { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 48 | 49 |
| 49 } // namespace | 50 } // namespace |
| 50 | 51 |
| 51 class DriveResourceMetadataTest : public testing::Test { | 52 class DriveResourceMetadataTest : public testing::Test { |
| 52 protected: | 53 protected: |
| 53 DriveResourceMetadataTest() | 54 DriveResourceMetadataTest() |
| 54 : ui_thread_(content::BrowserThread::UI, &message_loop_) { | 55 : ui_thread_(content::BrowserThread::UI, &message_loop_) { |
| 55 } | 56 } |
| 56 | 57 |
| 57 // Creates the following files/directories | 58 // Creates the following files/directories |
| 58 // drive/dir1/ | 59 // drive/root/dir1/ |
| 59 // drive/dir2/ | 60 // drive/root/dir2/ |
| 60 // drive/dir1/dir3/ | 61 // drive/root/dir1/dir3/ |
| 61 // drive/dir1/file4 | 62 // drive/root/dir1/file4 |
| 62 // drive/dir1/file5 | 63 // drive/root/dir1/file5 |
| 63 // drive/dir2/file6 | 64 // drive/root/dir2/file6 |
| 64 // drive/dir2/file7 | 65 // drive/root/dir2/file7 |
| 65 // drive/dir2/file8 | 66 // drive/root/dir2/file8 |
| 66 // drive/dir1/dir3/file9 | 67 // drive/root/dir1/dir3/file9 |
| 67 // drive/dir1/dir3/file10 | 68 // drive/root/dir1/dir3/file10 |
| 68 static void Init(DriveResourceMetadata* resource_metadata); | 69 static void Init(DriveResourceMetadata* resource_metadata); |
| 69 | 70 |
| 70 // Creates a DriveEntryProto. | 71 // Creates a DriveEntryProto. |
| 71 static DriveEntryProto CreateDriveEntryProto( | 72 static DriveEntryProto CreateDriveEntryProto( |
| 72 int sequence_id, | 73 int sequence_id, |
| 73 bool is_directory, | 74 bool is_directory, |
| 74 const std::string& parent_resource_id); | 75 const std::string& parent_resource_id); |
| 75 | 76 |
| 76 // Adds a DriveEntryProto to the metadata tree. Returns true on success. | 77 // Adds a DriveEntryProto to the metadata tree. Returns true on success. |
| 77 static bool AddDriveEntryProto(DriveResourceMetadata* resource_metadata, | 78 static bool AddDriveEntryProto(DriveResourceMetadata* resource_metadata, |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 google_apis::test_util::RunBlockingPoolTask(); | 250 google_apis::test_util::RunBlockingPoolTask(); |
| 250 return DRIVE_FILE_OK == error; | 251 return DRIVE_FILE_OK == error; |
| 251 } | 252 } |
| 252 | 253 |
| 253 TEST_F(DriveResourceMetadataTest, VersionCheck) { | 254 TEST_F(DriveResourceMetadataTest, VersionCheck) { |
| 254 // Set up the root directory. | 255 // Set up the root directory. |
| 255 DriveRootDirectoryProto proto; | 256 DriveRootDirectoryProto proto; |
| 256 DriveEntryProto* mutable_entry = | 257 DriveEntryProto* mutable_entry = |
| 257 proto.mutable_drive_directory()->mutable_drive_entry(); | 258 proto.mutable_drive_directory()->mutable_drive_entry(); |
| 258 mutable_entry->mutable_file_info()->set_is_directory(true); | 259 mutable_entry->mutable_file_info()->set_is_directory(true); |
| 259 mutable_entry->set_resource_id(kTestRootResourceId); | 260 mutable_entry->set_resource_id(util::kDriveGrandRootSpecialResourceId); |
| 260 mutable_entry->set_title("drive"); | 261 mutable_entry->set_title("drive"); |
| 261 | 262 |
| 262 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests> | 263 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests> |
| 263 resource_metadata(new DriveResourceMetadata(kTestRootResourceId, | 264 resource_metadata(new DriveResourceMetadata(kTestRootResourceId, |
| 264 temp_dir_.path(), | 265 temp_dir_.path(), |
| 265 blocking_task_runner_)); | 266 blocking_task_runner_)); |
| 266 ForceUsingMemoryStorage(resource_metadata.get()); | 267 ForceUsingMemoryStorage(resource_metadata.get()); |
| 267 | 268 |
| 268 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 269 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 269 resource_metadata->Initialize( | 270 resource_metadata->Initialize( |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 resource_metadata->Initialize( | 334 resource_metadata->Initialize( |
| 334 google_apis::test_util::CreateCopyResultCallback(&error)); | 335 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 335 google_apis::test_util::RunBlockingPoolTask(); | 336 google_apis::test_util::RunBlockingPoolTask(); |
| 336 ASSERT_EQ(DRIVE_FILE_OK, error); | 337 ASSERT_EQ(DRIVE_FILE_OK, error); |
| 337 | 338 |
| 338 base::FilePath drive_file_path; | 339 base::FilePath drive_file_path; |
| 339 scoped_ptr<DriveEntryProto> entry_proto; | 340 scoped_ptr<DriveEntryProto> entry_proto; |
| 340 | 341 |
| 341 // Look up the root directory by its resource ID. | 342 // Look up the root directory by its resource ID. |
| 342 resource_metadata->GetEntryInfoByResourceId( | 343 resource_metadata->GetEntryInfoByResourceId( |
| 343 kTestRootResourceId, | 344 util::kDriveGrandRootSpecialResourceId, |
| 344 google_apis::test_util::CreateCopyResultCallback( | 345 google_apis::test_util::CreateCopyResultCallback( |
| 345 &error, &drive_file_path, &entry_proto)); | 346 &error, &drive_file_path, &entry_proto)); |
| 346 google_apis::test_util::RunBlockingPoolTask(); | 347 google_apis::test_util::RunBlockingPoolTask(); |
| 347 EXPECT_EQ(DRIVE_FILE_OK, error); | 348 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 348 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive"), drive_file_path); | 349 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive"), drive_file_path); |
| 349 ASSERT_TRUE(entry_proto.get()); | 350 ASSERT_TRUE(entry_proto.get()); |
| 350 EXPECT_EQ("drive", entry_proto->base_name()); | 351 EXPECT_EQ("drive", entry_proto->base_name()); |
| 351 } | 352 } |
| 352 | 353 |
| 353 TEST_F(DriveResourceMetadataTest, GetEntryInfoByResourceId) { | 354 TEST_F(DriveResourceMetadataTest, GetEntryInfoByResourceId) { |
| 354 // Confirm that an existing file is found. | 355 // Confirm that an existing file is found. |
| 355 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 356 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 356 base::FilePath drive_file_path; | 357 base::FilePath drive_file_path; |
| 357 scoped_ptr<DriveEntryProto> entry_proto; | 358 scoped_ptr<DriveEntryProto> entry_proto; |
| 358 resource_metadata_->GetEntryInfoByResourceId( | 359 resource_metadata_->GetEntryInfoByResourceId( |
| 359 "resource_id:file4", | 360 "resource_id:file4", |
| 360 google_apis::test_util::CreateCopyResultCallback( | 361 google_apis::test_util::CreateCopyResultCallback( |
| 361 &error, &drive_file_path, &entry_proto)); | 362 &error, &drive_file_path, &entry_proto)); |
| 362 google_apis::test_util::RunBlockingPoolTask(); | 363 google_apis::test_util::RunBlockingPoolTask(); |
| 363 EXPECT_EQ(DRIVE_FILE_OK, error); | 364 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 364 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/file4"), | 365 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/file4"), |
| 365 drive_file_path); | 366 drive_file_path); |
| 366 ASSERT_TRUE(entry_proto.get()); | 367 ASSERT_TRUE(entry_proto.get()); |
| 367 EXPECT_EQ("file4", entry_proto->base_name()); | 368 EXPECT_EQ("file4", entry_proto->base_name()); |
| 368 | 369 |
| 369 // Confirm that a non existing file is not found. | 370 // Confirm that a non existing file is not found. |
| 370 error = DRIVE_FILE_ERROR_FAILED; | 371 error = DRIVE_FILE_ERROR_FAILED; |
| 371 entry_proto.reset(); | 372 entry_proto.reset(); |
| 372 resource_metadata_->GetEntryInfoByResourceId( | 373 resource_metadata_->GetEntryInfoByResourceId( |
| 373 "file:non_existing", | 374 "file:non_existing", |
| 374 google_apis::test_util::CreateCopyResultCallback( | 375 google_apis::test_util::CreateCopyResultCallback( |
| 375 &error, &drive_file_path, &entry_proto)); | 376 &error, &drive_file_path, &entry_proto)); |
| 376 google_apis::test_util::RunBlockingPoolTask(); | 377 google_apis::test_util::RunBlockingPoolTask(); |
| 377 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); | 378 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| 378 EXPECT_FALSE(entry_proto.get()); | 379 EXPECT_FALSE(entry_proto.get()); |
| 379 } | 380 } |
| 380 | 381 |
| 381 TEST_F(DriveResourceMetadataTest, GetEntryInfoByPath) { | 382 TEST_F(DriveResourceMetadataTest, GetEntryInfoByPath) { |
| 382 // Confirm that an existing file is found. | 383 // Confirm that an existing file is found. |
| 383 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 384 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 384 scoped_ptr<DriveEntryProto> entry_proto; | 385 scoped_ptr<DriveEntryProto> entry_proto; |
| 385 resource_metadata_->GetEntryInfoByPath( | 386 resource_metadata_->GetEntryInfoByPath( |
| 386 base::FilePath::FromUTF8Unsafe("drive/dir1/file4"), | 387 base::FilePath::FromUTF8Unsafe("drive/root/dir1/file4"), |
| 387 google_apis::test_util::CreateCopyResultCallback(&error, &entry_proto)); | 388 google_apis::test_util::CreateCopyResultCallback(&error, &entry_proto)); |
| 388 google_apis::test_util::RunBlockingPoolTask(); | 389 google_apis::test_util::RunBlockingPoolTask(); |
| 389 EXPECT_EQ(DRIVE_FILE_OK, error); | 390 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 390 ASSERT_TRUE(entry_proto.get()); | 391 ASSERT_TRUE(entry_proto.get()); |
| 391 EXPECT_EQ("file4", entry_proto->base_name()); | 392 EXPECT_EQ("file4", entry_proto->base_name()); |
| 392 | 393 |
| 393 // Confirm that a non existing file is not found. | 394 // Confirm that a non existing file is not found. |
| 394 error = DRIVE_FILE_ERROR_FAILED; | 395 error = DRIVE_FILE_ERROR_FAILED; |
| 395 entry_proto.reset(); | 396 entry_proto.reset(); |
| 396 resource_metadata_->GetEntryInfoByPath( | 397 resource_metadata_->GetEntryInfoByPath( |
| 397 base::FilePath::FromUTF8Unsafe("drive/dir1/non_existing"), | 398 base::FilePath::FromUTF8Unsafe("drive/root/dir1/non_existing"), |
| 398 google_apis::test_util::CreateCopyResultCallback(&error, &entry_proto)); | 399 google_apis::test_util::CreateCopyResultCallback(&error, &entry_proto)); |
| 399 google_apis::test_util::RunBlockingPoolTask(); | 400 google_apis::test_util::RunBlockingPoolTask(); |
| 400 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); | 401 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| 401 EXPECT_FALSE(entry_proto.get()); | 402 EXPECT_FALSE(entry_proto.get()); |
| 402 } | 403 } |
| 403 | 404 |
| 404 TEST_F(DriveResourceMetadataTest, ReadDirectoryByPath) { | 405 TEST_F(DriveResourceMetadataTest, ReadDirectoryByPath) { |
| 405 // Confirm that an existing directory is found. | 406 // Confirm that an existing directory is found. |
| 406 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 407 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 407 scoped_ptr<DriveEntryProtoVector> entries; | 408 scoped_ptr<DriveEntryProtoVector> entries; |
| 408 resource_metadata_->ReadDirectoryByPath( | 409 resource_metadata_->ReadDirectoryByPath( |
| 409 base::FilePath::FromUTF8Unsafe("drive/dir1"), | 410 base::FilePath::FromUTF8Unsafe("drive/root/dir1"), |
| 410 google_apis::test_util::CreateCopyResultCallback(&error, &entries)); | 411 google_apis::test_util::CreateCopyResultCallback(&error, &entries)); |
| 411 google_apis::test_util::RunBlockingPoolTask(); | 412 google_apis::test_util::RunBlockingPoolTask(); |
| 412 EXPECT_EQ(DRIVE_FILE_OK, error); | 413 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 413 ASSERT_TRUE(entries.get()); | 414 ASSERT_TRUE(entries.get()); |
| 414 ASSERT_EQ(3U, entries->size()); | 415 ASSERT_EQ(3U, entries->size()); |
| 415 // The order is not guaranteed so we should sort the base names. | 416 // The order is not guaranteed so we should sort the base names. |
| 416 std::vector<std::string> base_names = GetSortedBaseNames(*entries); | 417 std::vector<std::string> base_names = GetSortedBaseNames(*entries); |
| 417 EXPECT_EQ("dir3", base_names[0]); | 418 EXPECT_EQ("dir3", base_names[0]); |
| 418 EXPECT_EQ("file4", base_names[1]); | 419 EXPECT_EQ("file4", base_names[1]); |
| 419 EXPECT_EQ("file5", base_names[2]); | 420 EXPECT_EQ("file5", base_names[2]); |
| 420 | 421 |
| 421 // Confirm that a non existing directory is not found. | 422 // Confirm that a non existing directory is not found. |
| 422 error = DRIVE_FILE_ERROR_FAILED; | 423 error = DRIVE_FILE_ERROR_FAILED; |
| 423 entries.reset(); | 424 entries.reset(); |
| 424 resource_metadata_->ReadDirectoryByPath( | 425 resource_metadata_->ReadDirectoryByPath( |
| 425 base::FilePath::FromUTF8Unsafe("drive/non_existing"), | 426 base::FilePath::FromUTF8Unsafe("drive/root/non_existing"), |
| 426 google_apis::test_util::CreateCopyResultCallback(&error, &entries)); | 427 google_apis::test_util::CreateCopyResultCallback(&error, &entries)); |
| 427 google_apis::test_util::RunBlockingPoolTask(); | 428 google_apis::test_util::RunBlockingPoolTask(); |
| 428 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); | 429 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| 429 EXPECT_FALSE(entries.get()); | 430 EXPECT_FALSE(entries.get()); |
| 430 | 431 |
| 431 // Confirm that reading a file results in DRIVE_FILE_ERROR_NOT_A_DIRECTORY. | 432 // Confirm that reading a file results in DRIVE_FILE_ERROR_NOT_A_DIRECTORY. |
| 432 error = DRIVE_FILE_ERROR_FAILED; | 433 error = DRIVE_FILE_ERROR_FAILED; |
| 433 entries.reset(); | 434 entries.reset(); |
| 434 resource_metadata_->ReadDirectoryByPath( | 435 resource_metadata_->ReadDirectoryByPath( |
| 435 base::FilePath::FromUTF8Unsafe("drive/dir1/file4"), | 436 base::FilePath::FromUTF8Unsafe("drive/root/dir1/file4"), |
| 436 google_apis::test_util::CreateCopyResultCallback(&error, &entries)); | 437 google_apis::test_util::CreateCopyResultCallback(&error, &entries)); |
| 437 google_apis::test_util::RunBlockingPoolTask(); | 438 google_apis::test_util::RunBlockingPoolTask(); |
| 438 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_A_DIRECTORY, error); | 439 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_A_DIRECTORY, error); |
| 439 EXPECT_FALSE(entries.get()); | 440 EXPECT_FALSE(entries.get()); |
| 440 } | 441 } |
| 441 | 442 |
| 442 TEST_F(DriveResourceMetadataTest, GetEntryInfoPairByPaths) { | 443 TEST_F(DriveResourceMetadataTest, GetEntryInfoPairByPaths) { |
| 443 // Confirm that existing two files are found. | 444 // Confirm that existing two files are found. |
| 444 scoped_ptr<EntryInfoPairResult> pair_result; | 445 scoped_ptr<EntryInfoPairResult> pair_result; |
| 445 resource_metadata_->GetEntryInfoPairByPaths( | 446 resource_metadata_->GetEntryInfoPairByPaths( |
| 446 base::FilePath::FromUTF8Unsafe("drive/dir1/file4"), | 447 base::FilePath::FromUTF8Unsafe("drive/root/dir1/file4"), |
| 447 base::FilePath::FromUTF8Unsafe("drive/dir1/file5"), | 448 base::FilePath::FromUTF8Unsafe("drive/root/dir1/file5"), |
| 448 google_apis::test_util::CreateCopyResultCallback(&pair_result)); | 449 google_apis::test_util::CreateCopyResultCallback(&pair_result)); |
| 449 google_apis::test_util::RunBlockingPoolTask(); | 450 google_apis::test_util::RunBlockingPoolTask(); |
| 450 // The first entry should be found. | 451 // The first entry should be found. |
| 451 EXPECT_EQ(DRIVE_FILE_OK, pair_result->first.error); | 452 EXPECT_EQ(DRIVE_FILE_OK, pair_result->first.error); |
| 452 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/file4"), | 453 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/file4"), |
| 453 pair_result->first.path); | 454 pair_result->first.path); |
| 454 ASSERT_TRUE(pair_result->first.proto.get()); | 455 ASSERT_TRUE(pair_result->first.proto.get()); |
| 455 EXPECT_EQ("file4", pair_result->first.proto->base_name()); | 456 EXPECT_EQ("file4", pair_result->first.proto->base_name()); |
| 456 // The second entry should be found. | 457 // The second entry should be found. |
| 457 EXPECT_EQ(DRIVE_FILE_OK, pair_result->second.error); | 458 EXPECT_EQ(DRIVE_FILE_OK, pair_result->second.error); |
| 458 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/file5"), | 459 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/file5"), |
| 459 pair_result->second.path); | 460 pair_result->second.path); |
| 460 ASSERT_TRUE(pair_result->second.proto.get()); | 461 ASSERT_TRUE(pair_result->second.proto.get()); |
| 461 EXPECT_EQ("file5", pair_result->second.proto->base_name()); | 462 EXPECT_EQ("file5", pair_result->second.proto->base_name()); |
| 462 | 463 |
| 463 // Confirm that the first non existent file is not found. | 464 // Confirm that the first non existent file is not found. |
| 464 pair_result.reset(); | 465 pair_result.reset(); |
| 465 resource_metadata_->GetEntryInfoPairByPaths( | 466 resource_metadata_->GetEntryInfoPairByPaths( |
| 466 base::FilePath::FromUTF8Unsafe("drive/dir1/non_existent"), | 467 base::FilePath::FromUTF8Unsafe("drive/root/dir1/non_existent"), |
| 467 base::FilePath::FromUTF8Unsafe("drive/dir1/file5"), | 468 base::FilePath::FromUTF8Unsafe("drive/root/dir1/file5"), |
| 468 google_apis::test_util::CreateCopyResultCallback(&pair_result)); | 469 google_apis::test_util::CreateCopyResultCallback(&pair_result)); |
| 469 google_apis::test_util::RunBlockingPoolTask(); | 470 google_apis::test_util::RunBlockingPoolTask(); |
| 470 // The first entry should not be found. | 471 // The first entry should not be found. |
| 471 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, pair_result->first.error); | 472 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, pair_result->first.error); |
| 472 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/non_existent"), | 473 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/non_existent"), |
| 473 pair_result->first.path); | 474 pair_result->first.path); |
| 474 ASSERT_FALSE(pair_result->first.proto.get()); | 475 ASSERT_FALSE(pair_result->first.proto.get()); |
| 475 // The second entry should not be found, because the first one failed. | 476 // The second entry should not be found, because the first one failed. |
| 476 EXPECT_EQ(DRIVE_FILE_ERROR_FAILED, pair_result->second.error); | 477 EXPECT_EQ(DRIVE_FILE_ERROR_FAILED, pair_result->second.error); |
| 477 EXPECT_EQ(base::FilePath(), pair_result->second.path); | 478 EXPECT_EQ(base::FilePath(), pair_result->second.path); |
| 478 ASSERT_FALSE(pair_result->second.proto.get()); | 479 ASSERT_FALSE(pair_result->second.proto.get()); |
| 479 | 480 |
| 480 // Confirm that the second non existent file is not found. | 481 // Confirm that the second non existent file is not found. |
| 481 pair_result.reset(); | 482 pair_result.reset(); |
| 482 resource_metadata_->GetEntryInfoPairByPaths( | 483 resource_metadata_->GetEntryInfoPairByPaths( |
| 483 base::FilePath::FromUTF8Unsafe("drive/dir1/file4"), | 484 base::FilePath::FromUTF8Unsafe("drive/root/dir1/file4"), |
| 484 base::FilePath::FromUTF8Unsafe("drive/dir1/non_existent"), | 485 base::FilePath::FromUTF8Unsafe("drive/root/dir1/non_existent"), |
| 485 google_apis::test_util::CreateCopyResultCallback(&pair_result)); | 486 google_apis::test_util::CreateCopyResultCallback(&pair_result)); |
| 486 google_apis::test_util::RunBlockingPoolTask(); | 487 google_apis::test_util::RunBlockingPoolTask(); |
| 487 // The first entry should be found. | 488 // The first entry should be found. |
| 488 EXPECT_EQ(DRIVE_FILE_OK, pair_result->first.error); | 489 EXPECT_EQ(DRIVE_FILE_OK, pair_result->first.error); |
| 489 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/file4"), | 490 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/file4"), |
| 490 pair_result->first.path); | 491 pair_result->first.path); |
| 491 ASSERT_TRUE(pair_result->first.proto.get()); | 492 ASSERT_TRUE(pair_result->first.proto.get()); |
| 492 EXPECT_EQ("file4", pair_result->first.proto->base_name()); | 493 EXPECT_EQ("file4", pair_result->first.proto->base_name()); |
| 493 // The second entry should not be found. | 494 // The second entry should not be found. |
| 494 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, pair_result->second.error); | 495 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, pair_result->second.error); |
| 495 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/non_existent"), | 496 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/non_existent"), |
| 496 pair_result->second.path); | 497 pair_result->second.path); |
| 497 ASSERT_FALSE(pair_result->second.proto.get()); | 498 ASSERT_FALSE(pair_result->second.proto.get()); |
| 498 } | 499 } |
| 499 | 500 |
| 500 TEST_F(DriveResourceMetadataTest, RemoveEntry) { | 501 TEST_F(DriveResourceMetadataTest, RemoveEntry) { |
| 501 // Make sure file9 is found. | 502 // Make sure file9 is found. |
| 502 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 503 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 503 base::FilePath drive_file_path; | 504 base::FilePath drive_file_path; |
| 504 const std::string file9_resource_id = "resource_id:file9"; | 505 const std::string file9_resource_id = "resource_id:file9"; |
| 505 scoped_ptr<DriveEntryProto> entry_proto; | 506 scoped_ptr<DriveEntryProto> entry_proto; |
| 506 resource_metadata_->GetEntryInfoByResourceId( | 507 resource_metadata_->GetEntryInfoByResourceId( |
| 507 file9_resource_id, | 508 file9_resource_id, |
| 508 google_apis::test_util::CreateCopyResultCallback( | 509 google_apis::test_util::CreateCopyResultCallback( |
| 509 &error, &drive_file_path, &entry_proto)); | 510 &error, &drive_file_path, &entry_proto)); |
| 510 google_apis::test_util::RunBlockingPoolTask(); | 511 google_apis::test_util::RunBlockingPoolTask(); |
| 511 EXPECT_EQ(DRIVE_FILE_OK, error); | 512 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 512 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/dir3/file9"), | 513 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3/file9"), |
| 513 drive_file_path); | 514 drive_file_path); |
| 514 ASSERT_TRUE(entry_proto.get()); | 515 ASSERT_TRUE(entry_proto.get()); |
| 515 EXPECT_EQ("file9", entry_proto->base_name()); | 516 EXPECT_EQ("file9", entry_proto->base_name()); |
| 516 | 517 |
| 517 // Remove file9 using RemoveEntry. | 518 // Remove file9 using RemoveEntry. |
| 518 resource_metadata_->RemoveEntry( | 519 resource_metadata_->RemoveEntry( |
| 519 file9_resource_id, | 520 file9_resource_id, |
| 520 google_apis::test_util::CreateCopyResultCallback( | 521 google_apis::test_util::CreateCopyResultCallback( |
| 521 &error, &drive_file_path)); | 522 &error, &drive_file_path)); |
| 522 google_apis::test_util::RunBlockingPoolTask(); | 523 google_apis::test_util::RunBlockingPoolTask(); |
| 523 EXPECT_EQ(DRIVE_FILE_OK, error); | 524 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 524 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/dir3"), drive_file_path); | 525 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3"), |
| 526 drive_file_path); |
| 525 | 527 |
| 526 // file9 should no longer exist. | 528 // file9 should no longer exist. |
| 527 resource_metadata_->GetEntryInfoByResourceId( | 529 resource_metadata_->GetEntryInfoByResourceId( |
| 528 file9_resource_id, | 530 file9_resource_id, |
| 529 google_apis::test_util::CreateCopyResultCallback( | 531 google_apis::test_util::CreateCopyResultCallback( |
| 530 &error, &drive_file_path, &entry_proto)); | 532 &error, &drive_file_path, &entry_proto)); |
| 531 google_apis::test_util::RunBlockingPoolTask(); | 533 google_apis::test_util::RunBlockingPoolTask(); |
| 532 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); | 534 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| 533 EXPECT_FALSE(entry_proto.get()); | 535 EXPECT_FALSE(entry_proto.get()); |
| 534 | 536 |
| 535 // Look for dir3. | 537 // Look for dir3. |
| 536 const std::string dir3_resource_id = "resource_id:dir3"; | 538 const std::string dir3_resource_id = "resource_id:dir3"; |
| 537 resource_metadata_->GetEntryInfoByResourceId( | 539 resource_metadata_->GetEntryInfoByResourceId( |
| 538 dir3_resource_id, | 540 dir3_resource_id, |
| 539 google_apis::test_util::CreateCopyResultCallback( | 541 google_apis::test_util::CreateCopyResultCallback( |
| 540 &error, &drive_file_path, &entry_proto)); | 542 &error, &drive_file_path, &entry_proto)); |
| 541 google_apis::test_util::RunBlockingPoolTask(); | 543 google_apis::test_util::RunBlockingPoolTask(); |
| 542 EXPECT_EQ(DRIVE_FILE_OK, error); | 544 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 543 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/dir3"), drive_file_path); | 545 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3"), |
| 546 drive_file_path); |
| 544 ASSERT_TRUE(entry_proto.get()); | 547 ASSERT_TRUE(entry_proto.get()); |
| 545 EXPECT_EQ("dir3", entry_proto->base_name()); | 548 EXPECT_EQ("dir3", entry_proto->base_name()); |
| 546 | 549 |
| 547 // Remove dir3 using RemoveEntry. | 550 // Remove dir3 using RemoveEntry. |
| 548 resource_metadata_->RemoveEntry( | 551 resource_metadata_->RemoveEntry( |
| 549 dir3_resource_id, | 552 dir3_resource_id, |
| 550 google_apis::test_util::CreateCopyResultCallback( | 553 google_apis::test_util::CreateCopyResultCallback( |
| 551 &error, &drive_file_path)); | 554 &error, &drive_file_path)); |
| 552 google_apis::test_util::RunBlockingPoolTask(); | 555 google_apis::test_util::RunBlockingPoolTask(); |
| 553 EXPECT_EQ(DRIVE_FILE_OK, error); | 556 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 554 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1"), drive_file_path); | 557 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1"), drive_file_path); |
| 555 | 558 |
| 556 // dir3 should no longer exist. | 559 // dir3 should no longer exist. |
| 557 resource_metadata_->GetEntryInfoByResourceId( | 560 resource_metadata_->GetEntryInfoByResourceId( |
| 558 dir3_resource_id, | 561 dir3_resource_id, |
| 559 google_apis::test_util::CreateCopyResultCallback( | 562 google_apis::test_util::CreateCopyResultCallback( |
| 560 &error, &drive_file_path, &entry_proto)); | 563 &error, &drive_file_path, &entry_proto)); |
| 561 google_apis::test_util::RunBlockingPoolTask(); | 564 google_apis::test_util::RunBlockingPoolTask(); |
| 562 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); | 565 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| 563 EXPECT_FALSE(entry_proto.get()); | 566 EXPECT_FALSE(entry_proto.get()); |
| 564 | 567 |
| 565 // Remove unknown resource_id using RemoveEntry. | 568 // Remove unknown resource_id using RemoveEntry. |
| 566 resource_metadata_->RemoveEntry( | 569 resource_metadata_->RemoveEntry( |
| 567 "foo", | 570 "foo", |
| 568 google_apis::test_util::CreateCopyResultCallback( | 571 google_apis::test_util::CreateCopyResultCallback( |
| 569 &error, &drive_file_path)); | 572 &error, &drive_file_path)); |
| 570 google_apis::test_util::RunBlockingPoolTask(); | 573 google_apis::test_util::RunBlockingPoolTask(); |
| 571 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); | 574 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| 572 | 575 |
| 573 // Try removing root. This should fail. | 576 // Try removing root. This should fail. |
| 574 resource_metadata_->RemoveEntry( | 577 resource_metadata_->RemoveEntry( |
| 575 kTestRootResourceId, | 578 util::kDriveGrandRootSpecialResourceId, |
| 576 google_apis::test_util::CreateCopyResultCallback( | 579 google_apis::test_util::CreateCopyResultCallback( |
| 577 &error, &drive_file_path)); | 580 &error, &drive_file_path)); |
| 578 google_apis::test_util::RunBlockingPoolTask(); | 581 google_apis::test_util::RunBlockingPoolTask(); |
| 579 EXPECT_EQ(DRIVE_FILE_ERROR_ACCESS_DENIED, error); | 582 EXPECT_EQ(DRIVE_FILE_ERROR_ACCESS_DENIED, error); |
| 580 } | 583 } |
| 581 | 584 |
| 582 TEST_F(DriveResourceMetadataTest, MoveEntryToDirectory) { | 585 TEST_F(DriveResourceMetadataTest, MoveEntryToDirectory) { |
| 583 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 586 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 584 base::FilePath drive_file_path; | 587 base::FilePath drive_file_path; |
| 585 scoped_ptr<DriveEntryProto> entry_proto; | 588 scoped_ptr<DriveEntryProto> entry_proto; |
| 586 | 589 |
| 587 // Move file8 to drive/dir1. | 590 // Move file8 to drive/dir1. |
| 588 resource_metadata_->MoveEntryToDirectory( | 591 resource_metadata_->MoveEntryToDirectory( |
| 589 base::FilePath::FromUTF8Unsafe("drive/dir2/file8"), | 592 base::FilePath::FromUTF8Unsafe("drive/root/dir2/file8"), |
| 590 base::FilePath::FromUTF8Unsafe("drive/dir1"), | 593 base::FilePath::FromUTF8Unsafe("drive/root/dir1"), |
| 591 google_apis::test_util::CreateCopyResultCallback( | 594 google_apis::test_util::CreateCopyResultCallback( |
| 592 &error, &drive_file_path)); | 595 &error, &drive_file_path)); |
| 593 google_apis::test_util::RunBlockingPoolTask(); | 596 google_apis::test_util::RunBlockingPoolTask(); |
| 594 EXPECT_EQ(DRIVE_FILE_OK, error); | 597 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 595 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/file8"), | 598 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/file8"), |
| 596 drive_file_path); | 599 drive_file_path); |
| 597 | 600 |
| 598 // Look up the entry by its resource id and make sure it really moved. | 601 // Look up the entry by its resource id and make sure it really moved. |
| 599 resource_metadata_->GetEntryInfoByResourceId( | 602 resource_metadata_->GetEntryInfoByResourceId( |
| 600 "resource_id:file8", | 603 "resource_id:file8", |
| 601 google_apis::test_util::CreateCopyResultCallback( | 604 google_apis::test_util::CreateCopyResultCallback( |
| 602 &error, &drive_file_path, &entry_proto)); | 605 &error, &drive_file_path, &entry_proto)); |
| 603 google_apis::test_util::RunBlockingPoolTask(); | 606 google_apis::test_util::RunBlockingPoolTask(); |
| 604 EXPECT_EQ(DRIVE_FILE_OK, error); | 607 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 605 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/file8"), | 608 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/file8"), |
| 606 drive_file_path); | 609 drive_file_path); |
| 607 | 610 |
| 608 // Move non-existent file to drive/dir1. This should fail. | 611 // Move non-existent file to drive/dir1. This should fail. |
| 609 resource_metadata_->MoveEntryToDirectory( | 612 resource_metadata_->MoveEntryToDirectory( |
| 610 base::FilePath::FromUTF8Unsafe("drive/dir2/file8"), | 613 base::FilePath::FromUTF8Unsafe("drive/root/dir2/file8"), |
| 611 base::FilePath::FromUTF8Unsafe("drive/dir1"), | 614 base::FilePath::FromUTF8Unsafe("drive/root/dir1"), |
| 612 google_apis::test_util::CreateCopyResultCallback( | 615 google_apis::test_util::CreateCopyResultCallback( |
| 613 &error, &drive_file_path)); | 616 &error, &drive_file_path)); |
| 614 google_apis::test_util::RunBlockingPoolTask(); | 617 google_apis::test_util::RunBlockingPoolTask(); |
| 615 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); | 618 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| 616 EXPECT_EQ(base::FilePath(), drive_file_path); | 619 EXPECT_EQ(base::FilePath(), drive_file_path); |
| 617 | 620 |
| 618 // Move existing file to non-existent directory. This should fail. | 621 // Move existing file to non-existent directory. This should fail. |
| 619 resource_metadata_->MoveEntryToDirectory( | 622 resource_metadata_->MoveEntryToDirectory( |
| 620 base::FilePath::FromUTF8Unsafe("drive/dir1/file8"), | 623 base::FilePath::FromUTF8Unsafe("drive/root/dir1/file8"), |
| 621 base::FilePath::FromUTF8Unsafe("drive/dir4"), | 624 base::FilePath::FromUTF8Unsafe("drive/root/dir4"), |
| 622 google_apis::test_util::CreateCopyResultCallback( | 625 google_apis::test_util::CreateCopyResultCallback( |
| 623 &error, &drive_file_path)); | 626 &error, &drive_file_path)); |
| 624 google_apis::test_util::RunBlockingPoolTask(); | 627 google_apis::test_util::RunBlockingPoolTask(); |
| 625 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); | 628 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| 626 EXPECT_EQ(base::FilePath(), drive_file_path); | 629 EXPECT_EQ(base::FilePath(), drive_file_path); |
| 627 | 630 |
| 628 // Move existing file to existing file (non-directory). This should fail. | 631 // Move existing file to existing file (non-directory). This should fail. |
| 629 resource_metadata_->MoveEntryToDirectory( | 632 resource_metadata_->MoveEntryToDirectory( |
| 630 base::FilePath::FromUTF8Unsafe("drive/dir1/file8"), | 633 base::FilePath::FromUTF8Unsafe("drive/root/dir1/file8"), |
| 631 base::FilePath::FromUTF8Unsafe("drive/dir1/file4"), | 634 base::FilePath::FromUTF8Unsafe("drive/root/dir1/file4"), |
| 632 google_apis::test_util::CreateCopyResultCallback( | 635 google_apis::test_util::CreateCopyResultCallback( |
| 633 &error, &drive_file_path)); | 636 &error, &drive_file_path)); |
| 634 google_apis::test_util::RunBlockingPoolTask(); | 637 google_apis::test_util::RunBlockingPoolTask(); |
| 635 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_A_DIRECTORY, error); | 638 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_A_DIRECTORY, error); |
| 636 EXPECT_EQ(base::FilePath(), drive_file_path); | 639 EXPECT_EQ(base::FilePath(), drive_file_path); |
| 637 | 640 |
| 638 // Move the file to root. | 641 // Move the file to root. |
| 639 resource_metadata_->MoveEntryToDirectory( | 642 resource_metadata_->MoveEntryToDirectory( |
| 640 base::FilePath::FromUTF8Unsafe("drive/dir1/file8"), | 643 base::FilePath::FromUTF8Unsafe("drive/root/dir1/file8"), |
| 641 base::FilePath::FromUTF8Unsafe("drive"), | 644 base::FilePath::FromUTF8Unsafe("drive/root"), |
| 642 google_apis::test_util::CreateCopyResultCallback( | 645 google_apis::test_util::CreateCopyResultCallback( |
| 643 &error, &drive_file_path)); | 646 &error, &drive_file_path)); |
| 644 google_apis::test_util::RunBlockingPoolTask(); | 647 google_apis::test_util::RunBlockingPoolTask(); |
| 645 EXPECT_EQ(DRIVE_FILE_OK, error); | 648 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 646 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/file8"), drive_file_path); | 649 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/file8"), |
| 650 drive_file_path); |
| 647 | 651 |
| 648 // Move the file from root. | 652 // Move the file from root. |
| 649 resource_metadata_->MoveEntryToDirectory( | 653 resource_metadata_->MoveEntryToDirectory( |
| 650 base::FilePath::FromUTF8Unsafe("drive/file8"), | 654 base::FilePath::FromUTF8Unsafe("drive/root/file8"), |
| 651 base::FilePath::FromUTF8Unsafe("drive/dir2"), | 655 base::FilePath::FromUTF8Unsafe("drive/root/dir2"), |
| 652 google_apis::test_util::CreateCopyResultCallback( | 656 google_apis::test_util::CreateCopyResultCallback( |
| 653 &error, &drive_file_path)); | 657 &error, &drive_file_path)); |
| 654 google_apis::test_util::RunBlockingPoolTask(); | 658 google_apis::test_util::RunBlockingPoolTask(); |
| 655 EXPECT_EQ(DRIVE_FILE_OK, error); | 659 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 656 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir2/file8"), | 660 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir2/file8"), |
| 657 drive_file_path); | 661 drive_file_path); |
| 658 | 662 |
| 659 // Make sure file is still ok. | 663 // Make sure file is still ok. |
| 660 resource_metadata_->GetEntryInfoByResourceId( | 664 resource_metadata_->GetEntryInfoByResourceId( |
| 661 "resource_id:file8", | 665 "resource_id:file8", |
| 662 google_apis::test_util::CreateCopyResultCallback( | 666 google_apis::test_util::CreateCopyResultCallback( |
| 663 &error, &drive_file_path, &entry_proto)); | 667 &error, &drive_file_path, &entry_proto)); |
| 664 google_apis::test_util::RunBlockingPoolTask(); | 668 google_apis::test_util::RunBlockingPoolTask(); |
| 665 EXPECT_EQ(DRIVE_FILE_OK, error); | 669 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 666 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir2/file8"), | 670 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir2/file8"), |
| 667 drive_file_path); | 671 drive_file_path); |
| 668 } | 672 } |
| 669 | 673 |
| 670 TEST_F(DriveResourceMetadataTest, RenameEntry) { | 674 TEST_F(DriveResourceMetadataTest, RenameEntry) { |
| 671 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 675 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 672 base::FilePath drive_file_path; | 676 base::FilePath drive_file_path; |
| 673 scoped_ptr<DriveEntryProto> entry_proto; | 677 scoped_ptr<DriveEntryProto> entry_proto; |
| 674 | 678 |
| 675 // Rename file8 to file11. | 679 // Rename file8 to file11. |
| 676 resource_metadata_->RenameEntry( | 680 resource_metadata_->RenameEntry( |
| 677 base::FilePath::FromUTF8Unsafe("drive/dir2/file8"), | 681 base::FilePath::FromUTF8Unsafe("drive/root/dir2/file8"), |
| 678 "file11", | 682 "file11", |
| 679 google_apis::test_util::CreateCopyResultCallback( | 683 google_apis::test_util::CreateCopyResultCallback( |
| 680 &error, &drive_file_path)); | 684 &error, &drive_file_path)); |
| 681 google_apis::test_util::RunBlockingPoolTask(); | 685 google_apis::test_util::RunBlockingPoolTask(); |
| 682 EXPECT_EQ(DRIVE_FILE_OK, error); | 686 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 683 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir2/file11"), | 687 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir2/file11"), |
| 684 drive_file_path); | 688 drive_file_path); |
| 685 | 689 |
| 686 // Lookup the file by resource id to make sure the file actually got renamed. | 690 // Lookup the file by resource id to make sure the file actually got renamed. |
| 687 resource_metadata_->GetEntryInfoByResourceId( | 691 resource_metadata_->GetEntryInfoByResourceId( |
| 688 "resource_id:file8", | 692 "resource_id:file8", |
| 689 google_apis::test_util::CreateCopyResultCallback( | 693 google_apis::test_util::CreateCopyResultCallback( |
| 690 &error, &drive_file_path, &entry_proto)); | 694 &error, &drive_file_path, &entry_proto)); |
| 691 google_apis::test_util::RunBlockingPoolTask(); | 695 google_apis::test_util::RunBlockingPoolTask(); |
| 692 EXPECT_EQ(DRIVE_FILE_OK, error); | 696 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 693 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir2/file11"), | 697 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir2/file11"), |
| 694 drive_file_path); | 698 drive_file_path); |
| 695 | 699 |
| 696 // Rename to file7 to force a duplicate name. | 700 // Rename to file7 to force a duplicate name. |
| 697 resource_metadata_->RenameEntry( | 701 resource_metadata_->RenameEntry( |
| 698 base::FilePath::FromUTF8Unsafe("drive/dir2/file11"), | 702 base::FilePath::FromUTF8Unsafe("drive/root/dir2/file11"), |
| 699 "file7", | 703 "file7", |
| 700 google_apis::test_util::CreateCopyResultCallback( | 704 google_apis::test_util::CreateCopyResultCallback( |
| 701 &error, &drive_file_path)); | 705 &error, &drive_file_path)); |
| 702 google_apis::test_util::RunBlockingPoolTask(); | 706 google_apis::test_util::RunBlockingPoolTask(); |
| 703 EXPECT_EQ(DRIVE_FILE_OK, error); | 707 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 704 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir2/file7 (2)"), | 708 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir2/file7 (2)"), |
| 705 drive_file_path); | 709 drive_file_path); |
| 706 | 710 |
| 707 // Rename to same name. This should fail. | 711 // Rename to same name. This should fail. |
| 708 resource_metadata_->RenameEntry( | 712 resource_metadata_->RenameEntry( |
| 709 base::FilePath::FromUTF8Unsafe("drive/dir2/file7 (2)"), | 713 base::FilePath::FromUTF8Unsafe("drive/root/dir2/file7 (2)"), |
| 710 "file7 (2)", | 714 "file7 (2)", |
| 711 google_apis::test_util::CreateCopyResultCallback( | 715 google_apis::test_util::CreateCopyResultCallback( |
| 712 &error, &drive_file_path)); | 716 &error, &drive_file_path)); |
| 713 google_apis::test_util::RunBlockingPoolTask(); | 717 google_apis::test_util::RunBlockingPoolTask(); |
| 714 EXPECT_EQ(DRIVE_FILE_ERROR_EXISTS, error); | 718 EXPECT_EQ(DRIVE_FILE_ERROR_EXISTS, error); |
| 715 EXPECT_EQ(base::FilePath(), drive_file_path); | 719 EXPECT_EQ(base::FilePath(), drive_file_path); |
| 716 | 720 |
| 717 // Rename non-existent. | 721 // Rename non-existent. |
| 718 resource_metadata_->RenameEntry( | 722 resource_metadata_->RenameEntry( |
| 719 base::FilePath::FromUTF8Unsafe("drive/dir2/file11"), | 723 base::FilePath::FromUTF8Unsafe("drive/root/dir2/file11"), |
| 720 "file11", | 724 "file11", |
| 721 google_apis::test_util::CreateCopyResultCallback( | 725 google_apis::test_util::CreateCopyResultCallback( |
| 722 &error, &drive_file_path)); | 726 &error, &drive_file_path)); |
| 723 google_apis::test_util::RunBlockingPoolTask(); | 727 google_apis::test_util::RunBlockingPoolTask(); |
| 724 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); | 728 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); |
| 725 EXPECT_EQ(base::FilePath(), drive_file_path); | 729 EXPECT_EQ(base::FilePath(), drive_file_path); |
| 726 } | 730 } |
| 727 | 731 |
| 728 TEST_F(DriveResourceMetadataTest, RefreshEntry) { | 732 TEST_F(DriveResourceMetadataTest, RefreshEntry) { |
| 729 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 733 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 730 base::FilePath drive_file_path; | 734 base::FilePath drive_file_path; |
| 731 scoped_ptr<DriveEntryProto> entry_proto; | 735 scoped_ptr<DriveEntryProto> entry_proto; |
| 732 | 736 |
| 733 // Get file9. | 737 // Get file9. |
| 734 entry_proto = GetEntryInfoByPathSync( | 738 entry_proto = GetEntryInfoByPathSync( |
| 735 base::FilePath::FromUTF8Unsafe("drive/dir1/dir3/file9")); | 739 base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3/file9")); |
| 736 ASSERT_TRUE(entry_proto.get()); | 740 ASSERT_TRUE(entry_proto.get()); |
| 737 EXPECT_EQ("file9", entry_proto->base_name()); | 741 EXPECT_EQ("file9", entry_proto->base_name()); |
| 738 ASSERT_TRUE(!entry_proto->file_info().is_directory()); | 742 ASSERT_TRUE(!entry_proto->file_info().is_directory()); |
| 739 EXPECT_EQ("md5:file9", entry_proto->file_specific_info().file_md5()); | 743 EXPECT_EQ("md5:file9", entry_proto->file_specific_info().file_md5()); |
| 740 | 744 |
| 741 // Rename it and change the file size. | 745 // Rename it and change the file size. |
| 742 DriveEntryProto file_entry_proto(*entry_proto); | 746 DriveEntryProto file_entry_proto(*entry_proto); |
| 743 const std::string updated_md5("md5:updated"); | 747 const std::string updated_md5("md5:updated"); |
| 744 file_entry_proto.mutable_file_specific_info()->set_file_md5(updated_md5); | 748 file_entry_proto.mutable_file_specific_info()->set_file_md5(updated_md5); |
| 745 file_entry_proto.set_title("file100"); | 749 file_entry_proto.set_title("file100"); |
| 746 entry_proto.reset(); | 750 entry_proto.reset(); |
| 747 resource_metadata_->RefreshEntry( | 751 resource_metadata_->RefreshEntry( |
| 748 file_entry_proto, | 752 file_entry_proto, |
| 749 google_apis::test_util::CreateCopyResultCallback( | 753 google_apis::test_util::CreateCopyResultCallback( |
| 750 &error, &drive_file_path, &entry_proto)); | 754 &error, &drive_file_path, &entry_proto)); |
| 751 google_apis::test_util::RunBlockingPoolTask(); | 755 google_apis::test_util::RunBlockingPoolTask(); |
| 752 EXPECT_EQ(DRIVE_FILE_OK, error); | 756 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 753 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100"), | 757 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3/file100"), |
| 754 drive_file_path); | 758 drive_file_path); |
| 755 ASSERT_TRUE(entry_proto.get()); | 759 ASSERT_TRUE(entry_proto.get()); |
| 756 EXPECT_EQ("file100", entry_proto->base_name()); | 760 EXPECT_EQ("file100", entry_proto->base_name()); |
| 757 ASSERT_TRUE(!entry_proto->file_info().is_directory()); | 761 ASSERT_TRUE(!entry_proto->file_info().is_directory()); |
| 758 EXPECT_EQ(updated_md5, entry_proto->file_specific_info().file_md5()); | 762 EXPECT_EQ(updated_md5, entry_proto->file_specific_info().file_md5()); |
| 759 | 763 |
| 760 // Make sure we get the same thing from GetEntryInfoByPath. | 764 // Make sure we get the same thing from GetEntryInfoByPath. |
| 761 entry_proto = GetEntryInfoByPathSync( | 765 entry_proto = GetEntryInfoByPathSync( |
| 762 base::FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100")); | 766 base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3/file100")); |
| 763 ASSERT_TRUE(entry_proto.get()); | 767 ASSERT_TRUE(entry_proto.get()); |
| 764 EXPECT_EQ("file100", entry_proto->base_name()); | 768 EXPECT_EQ("file100", entry_proto->base_name()); |
| 765 ASSERT_TRUE(!entry_proto->file_info().is_directory()); | 769 ASSERT_TRUE(!entry_proto->file_info().is_directory()); |
| 766 EXPECT_EQ(updated_md5, entry_proto->file_specific_info().file_md5()); | 770 EXPECT_EQ(updated_md5, entry_proto->file_specific_info().file_md5()); |
| 767 | 771 |
| 768 // Get dir2. | 772 // Get dir2. |
| 769 entry_proto = GetEntryInfoByPathSync( | 773 entry_proto = GetEntryInfoByPathSync( |
| 770 base::FilePath::FromUTF8Unsafe("drive/dir2")); | 774 base::FilePath::FromUTF8Unsafe("drive/root/dir2")); |
| 771 ASSERT_TRUE(entry_proto.get()); | 775 ASSERT_TRUE(entry_proto.get()); |
| 772 EXPECT_EQ("dir2", entry_proto->base_name()); | 776 EXPECT_EQ("dir2", entry_proto->base_name()); |
| 773 ASSERT_TRUE(entry_proto->file_info().is_directory()); | 777 ASSERT_TRUE(entry_proto->file_info().is_directory()); |
| 774 | 778 |
| 775 // Change the name to dir100 and change the parent to drive/dir1/dir3. | 779 // Change the name to dir100 and change the parent to drive/dir1/dir3. |
| 776 DriveEntryProto dir_entry_proto(*entry_proto); | 780 DriveEntryProto dir_entry_proto(*entry_proto); |
| 777 dir_entry_proto.set_title("dir100"); | 781 dir_entry_proto.set_title("dir100"); |
| 778 dir_entry_proto.set_parent_resource_id("resource_id:dir3"); | 782 dir_entry_proto.set_parent_resource_id("resource_id:dir3"); |
| 779 entry_proto.reset(); | 783 entry_proto.reset(); |
| 780 resource_metadata_->RefreshEntry( | 784 resource_metadata_->RefreshEntry( |
| 781 dir_entry_proto, | 785 dir_entry_proto, |
| 782 google_apis::test_util::CreateCopyResultCallback( | 786 google_apis::test_util::CreateCopyResultCallback( |
| 783 &error, &drive_file_path, &entry_proto)); | 787 &error, &drive_file_path, &entry_proto)); |
| 784 google_apis::test_util::RunBlockingPoolTask(); | 788 google_apis::test_util::RunBlockingPoolTask(); |
| 785 EXPECT_EQ(DRIVE_FILE_OK, error); | 789 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 786 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/dir3/dir100"), | 790 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3/dir100"), |
| 787 drive_file_path); | 791 drive_file_path); |
| 788 ASSERT_TRUE(entry_proto.get()); | 792 ASSERT_TRUE(entry_proto.get()); |
| 789 EXPECT_EQ("dir100", entry_proto->base_name()); | 793 EXPECT_EQ("dir100", entry_proto->base_name()); |
| 790 EXPECT_TRUE(entry_proto->file_info().is_directory()); | 794 EXPECT_TRUE(entry_proto->file_info().is_directory()); |
| 791 EXPECT_EQ("resource_id:dir2", entry_proto->resource_id()); | 795 EXPECT_EQ("resource_id:dir2", entry_proto->resource_id()); |
| 792 | 796 |
| 793 // Make sure the children have moved over. Test file6. | 797 // Make sure the children have moved over. Test file6. |
| 794 entry_proto = GetEntryInfoByPathSync( | 798 entry_proto = GetEntryInfoByPathSync( |
| 795 base::FilePath::FromUTF8Unsafe("drive/dir1/dir3/dir100/file6")); | 799 base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3/dir100/file6")); |
| 796 ASSERT_TRUE(entry_proto.get()); | 800 ASSERT_TRUE(entry_proto.get()); |
| 797 EXPECT_EQ("file6", entry_proto->base_name()); | 801 EXPECT_EQ("file6", entry_proto->base_name()); |
| 798 | 802 |
| 799 // Make sure dir2 no longer exists. | 803 // Make sure dir2 no longer exists. |
| 800 entry_proto = GetEntryInfoByPathSync( | 804 entry_proto = GetEntryInfoByPathSync( |
| 801 base::FilePath::FromUTF8Unsafe("drive/dir2")); | 805 base::FilePath::FromUTF8Unsafe("drive/root/dir2")); |
| 802 EXPECT_FALSE(entry_proto.get()); | 806 EXPECT_FALSE(entry_proto.get()); |
| 803 } | 807 } |
| 804 | 808 |
| 805 // Test the special logic for RefreshEntry of root. | 809 // Test the special logic for RefreshEntry of root. |
| 806 TEST_F(DriveResourceMetadataTest, RefreshEntry_Root) { | 810 TEST_F(DriveResourceMetadataTest, RefreshEntry_Root) { |
| 807 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 811 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 808 base::FilePath drive_file_path; | 812 base::FilePath drive_file_path; |
| 809 scoped_ptr<DriveEntryProto> entry_proto; | 813 scoped_ptr<DriveEntryProto> entry_proto; |
| 810 | 814 |
| 811 // Get root. | 815 // Get root. |
| 812 entry_proto = GetEntryInfoByPathSync( | 816 entry_proto = GetEntryInfoByPathSync( |
| 813 base::FilePath::FromUTF8Unsafe("drive")); | 817 base::FilePath::FromUTF8Unsafe("drive")); |
| 814 ASSERT_TRUE(entry_proto.get()); | 818 ASSERT_TRUE(entry_proto.get()); |
| 815 EXPECT_EQ("drive", entry_proto->base_name()); | 819 EXPECT_EQ("drive", entry_proto->base_name()); |
| 816 ASSERT_TRUE(entry_proto->file_info().is_directory()); | 820 ASSERT_TRUE(entry_proto->file_info().is_directory()); |
| 817 EXPECT_EQ(kTestRootResourceId, entry_proto->resource_id()); | 821 EXPECT_EQ(util::kDriveGrandRootSpecialResourceId, entry_proto->resource_id()); |
| 818 | 822 |
| 819 // Set upload url and call RefreshEntry on root. | 823 // Set upload url and call RefreshEntry on root. |
| 820 DriveEntryProto dir_entry_proto(*entry_proto); | 824 DriveEntryProto dir_entry_proto(*entry_proto); |
| 821 entry_proto.reset(); | 825 entry_proto.reset(); |
| 822 resource_metadata_->RefreshEntry( | 826 resource_metadata_->RefreshEntry( |
| 823 dir_entry_proto, | 827 dir_entry_proto, |
| 824 google_apis::test_util::CreateCopyResultCallback( | 828 google_apis::test_util::CreateCopyResultCallback( |
| 825 &error, &drive_file_path, &entry_proto)); | 829 &error, &drive_file_path, &entry_proto)); |
| 826 google_apis::test_util::RunBlockingPoolTask(); | 830 google_apis::test_util::RunBlockingPoolTask(); |
| 827 EXPECT_EQ(DRIVE_FILE_OK, error); | 831 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 828 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive"), drive_file_path); | 832 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive"), drive_file_path); |
| 829 ASSERT_TRUE(entry_proto.get()); | 833 ASSERT_TRUE(entry_proto.get()); |
| 830 EXPECT_EQ("drive", entry_proto->base_name()); | 834 EXPECT_EQ("drive", entry_proto->base_name()); |
| 831 EXPECT_TRUE(entry_proto->file_info().is_directory()); | 835 EXPECT_TRUE(entry_proto->file_info().is_directory()); |
| 832 EXPECT_EQ(kTestRootResourceId, entry_proto->resource_id()); | 836 EXPECT_EQ(util::kDriveGrandRootSpecialResourceId, entry_proto->resource_id()); |
| 833 | 837 |
| 834 // Make sure the children have moved over. Test file9. | 838 // Make sure the children have moved over. Test file9. |
| 835 entry_proto.reset(); | 839 entry_proto.reset(); |
| 836 entry_proto = GetEntryInfoByPathSync( | 840 entry_proto = GetEntryInfoByPathSync( |
| 837 base::FilePath::FromUTF8Unsafe("drive/dir1/dir3/file9")); | 841 base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3/file9")); |
| 838 ASSERT_TRUE(entry_proto.get()); | 842 ASSERT_TRUE(entry_proto.get()); |
| 839 EXPECT_EQ("file9", entry_proto->base_name()); | 843 EXPECT_EQ("file9", entry_proto->base_name()); |
| 840 | 844 |
| 841 // Refreshing root with a proto which has parent_resource_id should fail. | 845 // Refreshing root with a proto which has parent_resource_id should fail. |
| 842 entry_proto = GetEntryInfoByPathSync( | 846 entry_proto = GetEntryInfoByPathSync( |
| 843 base::FilePath::FromUTF8Unsafe("drive")); | 847 base::FilePath::FromUTF8Unsafe("drive")); |
| 844 ASSERT_TRUE(entry_proto.get()); | 848 ASSERT_TRUE(entry_proto.get()); |
| 845 entry_proto->set_parent_resource_id("foo"); | 849 entry_proto->set_parent_resource_id("foo"); |
| 846 resource_metadata_->RefreshEntry( | 850 resource_metadata_->RefreshEntry( |
| 847 *entry_proto, | 851 *entry_proto, |
| 848 google_apis::test_util::CreateCopyResultCallback( | 852 google_apis::test_util::CreateCopyResultCallback( |
| 849 &error, &drive_file_path, &entry_proto)); | 853 &error, &drive_file_path, &entry_proto)); |
| 850 google_apis::test_util::RunBlockingPoolTask(); | 854 google_apis::test_util::RunBlockingPoolTask(); |
| 851 EXPECT_EQ(DRIVE_FILE_ERROR_INVALID_OPERATION, error); | 855 EXPECT_EQ(DRIVE_FILE_ERROR_INVALID_OPERATION, error); |
| 852 } | 856 } |
| 853 | 857 |
| 854 TEST_F(DriveResourceMetadataTest, RefreshDirectory_EmtpyMap) { | 858 TEST_F(DriveResourceMetadataTest, RefreshDirectory_EmtpyMap) { |
| 855 base::FilePath kDirectoryPath(FILE_PATH_LITERAL("drive/dir1")); | 859 base::FilePath kDirectoryPath(FILE_PATH_LITERAL("drive/root/dir1")); |
| 856 const int64 kNewChangestamp = kTestChangestamp + 1; | 860 const int64 kNewChangestamp = kTestChangestamp + 1; |
| 857 | 861 |
| 858 // Read the directory. | 862 // Read the directory. |
| 859 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 863 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 860 scoped_ptr<DriveEntryProtoVector> entries; | 864 scoped_ptr<DriveEntryProtoVector> entries; |
| 861 entries = ReadDirectoryByPathSync(base::FilePath(kDirectoryPath)); | 865 entries = ReadDirectoryByPathSync(base::FilePath(kDirectoryPath)); |
| 862 ASSERT_TRUE(entries.get()); | 866 ASSERT_TRUE(entries.get()); |
| 863 // "file4", "file5", "dir3" should exist in drive/dir1. | 867 // "file4", "file5", "dir3" should exist in drive/dir1. |
| 864 ASSERT_EQ(3U, entries->size()); | 868 ASSERT_EQ(3U, entries->size()); |
| 865 std::vector<std::string> base_names = GetSortedBaseNames(*entries); | 869 std::vector<std::string> base_names = GetSortedBaseNames(*entries); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 895 | 899 |
| 896 // Read the directory again. | 900 // Read the directory again. |
| 897 entries = ReadDirectoryByPathSync(base::FilePath(kDirectoryPath)); | 901 entries = ReadDirectoryByPathSync(base::FilePath(kDirectoryPath)); |
| 898 ASSERT_TRUE(entries.get()); | 902 ASSERT_TRUE(entries.get()); |
| 899 // All entries ("file4", "file5", "dir3") should be gone now, as | 903 // All entries ("file4", "file5", "dir3") should be gone now, as |
| 900 // RefreshDirectory() was called with an empty map. | 904 // RefreshDirectory() was called with an empty map. |
| 901 ASSERT_TRUE(entries->empty()); | 905 ASSERT_TRUE(entries->empty()); |
| 902 } | 906 } |
| 903 | 907 |
| 904 TEST_F(DriveResourceMetadataTest, RefreshDirectory_NonEmptyMap) { | 908 TEST_F(DriveResourceMetadataTest, RefreshDirectory_NonEmptyMap) { |
| 905 base::FilePath kDirectoryPath(FILE_PATH_LITERAL("drive/dir1")); | 909 base::FilePath kDirectoryPath(FILE_PATH_LITERAL("drive/root/dir1")); |
| 906 const int64 kNewChangestamp = kTestChangestamp + 1; | 910 const int64 kNewChangestamp = kTestChangestamp + 1; |
| 907 | 911 |
| 908 // Read the directory. | 912 // Read the directory. |
| 909 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 913 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 910 scoped_ptr<DriveEntryProtoVector> entries; | 914 scoped_ptr<DriveEntryProtoVector> entries; |
| 911 entries = ReadDirectoryByPathSync(kDirectoryPath); | 915 entries = ReadDirectoryByPathSync(kDirectoryPath); |
| 912 ASSERT_TRUE(entries.get()); | 916 ASSERT_TRUE(entries.get()); |
| 913 // "file4", "file5", "dir3" should exist in drive/dir1. | 917 // "file4", "file5", "dir3" should exist in drive/dir1. |
| 914 ASSERT_EQ(3U, entries->size()); | 918 ASSERT_EQ(3U, entries->size()); |
| 915 std::vector<std::string> base_names = GetSortedBaseNames(*entries); | 919 std::vector<std::string> base_names = GetSortedBaseNames(*entries); |
| 916 EXPECT_EQ("dir3", base_names[0]); | 920 EXPECT_EQ("dir3", base_names[0]); |
| 917 EXPECT_EQ("file4", base_names[1]); | 921 EXPECT_EQ("file4", base_names[1]); |
| 918 EXPECT_EQ("file5", base_names[2]); | 922 EXPECT_EQ("file5", base_names[2]); |
| 919 | 923 |
| 920 // Get the directory dir1. | 924 // Get the directory dir1. |
| 921 scoped_ptr<DriveEntryProto> dir1_proto; | 925 scoped_ptr<DriveEntryProto> dir1_proto; |
| 922 dir1_proto = GetEntryInfoByPathSync(kDirectoryPath); | 926 dir1_proto = GetEntryInfoByPathSync(kDirectoryPath); |
| 923 ASSERT_TRUE(dir1_proto.get()); | 927 ASSERT_TRUE(dir1_proto.get()); |
| 924 // The changestamp should be initially kTestChangestamp. | 928 // The changestamp should be initially kTestChangestamp. |
| 925 EXPECT_EQ(kTestChangestamp, | 929 EXPECT_EQ(kTestChangestamp, |
| 926 dir1_proto->directory_specific_info().changestamp()); | 930 dir1_proto->directory_specific_info().changestamp()); |
| 927 | 931 |
| 928 // Get the directory dir2 (existing non-child directory). | 932 // Get the directory dir2 (existing non-child directory). |
| 929 // This directory will be moved to "drive/dir1/dir2". | 933 // This directory will be moved to "drive/dir1/dir2". |
| 930 scoped_ptr<DriveEntryProto> dir2_proto; | 934 scoped_ptr<DriveEntryProto> dir2_proto; |
| 931 dir2_proto = GetEntryInfoByPathSync( | 935 dir2_proto = GetEntryInfoByPathSync( |
| 932 base::FilePath::FromUTF8Unsafe("drive/dir2")); | 936 base::FilePath::FromUTF8Unsafe("drive/root/dir2")); |
| 933 ASSERT_TRUE(dir2_proto.get()); | 937 ASSERT_TRUE(dir2_proto.get()); |
| 934 EXPECT_EQ(kTestChangestamp, | 938 EXPECT_EQ(kTestChangestamp, |
| 935 dir2_proto->directory_specific_info().changestamp()); | 939 dir2_proto->directory_specific_info().changestamp()); |
| 936 // Change the parent resource ID, as dir2 will be moved to "drive/dir1/dir2". | 940 // Change the parent resource ID, as dir2 will be moved to "drive/dir1/dir2". |
| 937 dir2_proto->set_parent_resource_id(dir1_proto->resource_id()); | 941 dir2_proto->set_parent_resource_id(dir1_proto->resource_id()); |
| 938 | 942 |
| 939 // Get the directory dir3 (existing child directory). | 943 // Get the directory dir3 (existing child directory). |
| 940 // This directory will remain as "drive/dir1/dir3". | 944 // This directory will remain as "drive/dir1/dir3". |
| 941 scoped_ptr<DriveEntryProto> dir3_proto; | 945 scoped_ptr<DriveEntryProto> dir3_proto; |
| 942 dir3_proto = GetEntryInfoByPathSync( | 946 dir3_proto = GetEntryInfoByPathSync( |
| 943 base::FilePath::FromUTF8Unsafe("drive/dir1/dir3")); | 947 base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3")); |
| 944 ASSERT_TRUE(dir3_proto.get()); | 948 ASSERT_TRUE(dir3_proto.get()); |
| 945 EXPECT_EQ(kTestChangestamp, | 949 EXPECT_EQ(kTestChangestamp, |
| 946 dir3_proto->directory_specific_info().changestamp()); | 950 dir3_proto->directory_specific_info().changestamp()); |
| 947 | 951 |
| 948 // Create a map. | 952 // Create a map. |
| 949 DriveEntryProtoMap entry_map; | 953 DriveEntryProtoMap entry_map; |
| 950 | 954 |
| 951 // Add a new file to the map. | 955 // Add a new file to the map. |
| 952 DriveEntryProto new_file; | 956 DriveEntryProto new_file; |
| 953 new_file.set_title("new_file"); | 957 new_file.set_title("new_file"); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 992 ASSERT_EQ(4U, entries->size()); | 996 ASSERT_EQ(4U, entries->size()); |
| 993 base_names = GetSortedBaseNames(*entries); | 997 base_names = GetSortedBaseNames(*entries); |
| 994 EXPECT_EQ("dir2", base_names[0]); | 998 EXPECT_EQ("dir2", base_names[0]); |
| 995 EXPECT_EQ("dir3", base_names[1]); | 999 EXPECT_EQ("dir3", base_names[1]); |
| 996 EXPECT_EQ("new_directory", base_names[2]); | 1000 EXPECT_EQ("new_directory", base_names[2]); |
| 997 EXPECT_EQ("new_file", base_names[3]); | 1001 EXPECT_EQ("new_file", base_names[3]); |
| 998 | 1002 |
| 999 // Get the new directory. | 1003 // Get the new directory. |
| 1000 scoped_ptr<DriveEntryProto> new_directory_proto; | 1004 scoped_ptr<DriveEntryProto> new_directory_proto; |
| 1001 new_directory_proto = GetEntryInfoByPathSync( | 1005 new_directory_proto = GetEntryInfoByPathSync( |
| 1002 base::FilePath::FromUTF8Unsafe("drive/dir1/new_directory")); | 1006 base::FilePath::FromUTF8Unsafe("drive/root/dir1/new_directory")); |
| 1003 ASSERT_TRUE(new_directory_proto.get()); | 1007 ASSERT_TRUE(new_directory_proto.get()); |
| 1004 // The changestamp should be 0 for a new directory. | 1008 // The changestamp should be 0 for a new directory. |
| 1005 EXPECT_EQ(0, new_directory_proto->directory_specific_info().changestamp()); | 1009 EXPECT_EQ(0, new_directory_proto->directory_specific_info().changestamp()); |
| 1006 | 1010 |
| 1007 // Get the directory dir3 (existing child directory) again. | 1011 // Get the directory dir3 (existing child directory) again. |
| 1008 dir3_proto = GetEntryInfoByPathSync( | 1012 dir3_proto = GetEntryInfoByPathSync( |
| 1009 base::FilePath::FromUTF8Unsafe("drive/dir1/dir3")); | 1013 base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3")); |
| 1010 ASSERT_TRUE(dir3_proto.get()); | 1014 ASSERT_TRUE(dir3_proto.get()); |
| 1011 // The changestamp should not be changed. | 1015 // The changestamp should not be changed. |
| 1012 EXPECT_EQ(kTestChangestamp, | 1016 EXPECT_EQ(kTestChangestamp, |
| 1013 dir3_proto->directory_specific_info().changestamp()); | 1017 dir3_proto->directory_specific_info().changestamp()); |
| 1014 | 1018 |
| 1015 // Read the directory dir3. The contents should remain. | 1019 // Read the directory dir3. The contents should remain. |
| 1016 // See the comment at Init() for the contents of the dir3. | 1020 // See the comment at Init() for the contents of the dir3. |
| 1017 entries = ReadDirectoryByPathSync( | 1021 entries = ReadDirectoryByPathSync( |
| 1018 base::FilePath::FromUTF8Unsafe("drive/dir1/dir3")); | 1022 base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3")); |
| 1019 ASSERT_TRUE(entries.get()); | 1023 ASSERT_TRUE(entries.get()); |
| 1020 ASSERT_EQ(2U, entries->size()); | 1024 ASSERT_EQ(2U, entries->size()); |
| 1021 | 1025 |
| 1022 // Get the directory dir2 (existing non-child directory) again using the | 1026 // Get the directory dir2 (existing non-child directory) again using the |
| 1023 // old path. This should fail, as dir2 is now moved to drive/dir1/dir2. | 1027 // old path. This should fail, as dir2 is now moved to drive/dir1/dir2. |
| 1024 dir2_proto = GetEntryInfoByPathSync( | 1028 dir2_proto = GetEntryInfoByPathSync( |
| 1025 base::FilePath::FromUTF8Unsafe("drive/dir2")); | 1029 base::FilePath::FromUTF8Unsafe("drive/root/dir2")); |
| 1026 ASSERT_FALSE(dir2_proto.get()); | 1030 ASSERT_FALSE(dir2_proto.get()); |
| 1027 | 1031 |
| 1028 // Get the directory dir2 (existing non-child directory) again using the | 1032 // Get the directory dir2 (existing non-child directory) again using the |
| 1029 // new path. This should succeed. | 1033 // new path. This should succeed. |
| 1030 dir2_proto = GetEntryInfoByPathSync( | 1034 dir2_proto = GetEntryInfoByPathSync( |
| 1031 base::FilePath::FromUTF8Unsafe("drive/dir1/dir2")); | 1035 base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir2")); |
| 1032 ASSERT_TRUE(dir2_proto.get()); | 1036 ASSERT_TRUE(dir2_proto.get()); |
| 1033 // The changestamp should not be changed. | 1037 // The changestamp should not be changed. |
| 1034 EXPECT_EQ(kTestChangestamp, | 1038 EXPECT_EQ(kTestChangestamp, |
| 1035 dir2_proto->directory_specific_info().changestamp()); | 1039 dir2_proto->directory_specific_info().changestamp()); |
| 1036 | 1040 |
| 1037 // Read the directory dir2. The contents should remain. | 1041 // Read the directory dir2. The contents should remain. |
| 1038 // See the comment at Init() for the contents of the dir2. | 1042 // See the comment at Init() for the contents of the dir2. |
| 1039 entries = ReadDirectoryByPathSync( | 1043 entries = ReadDirectoryByPathSync( |
| 1040 base::FilePath::FromUTF8Unsafe("drive/dir1/dir2")); | 1044 base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir2")); |
| 1041 ASSERT_TRUE(entries.get()); | 1045 ASSERT_TRUE(entries.get()); |
| 1042 ASSERT_EQ(3U, entries->size()); | 1046 ASSERT_EQ(3U, entries->size()); |
| 1043 } | 1047 } |
| 1044 | 1048 |
| 1045 TEST_F(DriveResourceMetadataTest, RefreshDirectory_WrongParentResourceId) { | 1049 TEST_F(DriveResourceMetadataTest, RefreshDirectory_WrongParentResourceId) { |
| 1046 base::FilePath kDirectoryPath(FILE_PATH_LITERAL("drive/dir1")); | 1050 base::FilePath kDirectoryPath(FILE_PATH_LITERAL("drive/root/dir1")); |
| 1047 const int64 kNewChangestamp = kTestChangestamp + 1; | 1051 const int64 kNewChangestamp = kTestChangestamp + 1; |
| 1048 | 1052 |
| 1049 // Get the directory dir1. | 1053 // Get the directory dir1. |
| 1050 scoped_ptr<DriveEntryProto> dir1_proto; | 1054 scoped_ptr<DriveEntryProto> dir1_proto; |
| 1051 dir1_proto = GetEntryInfoByPathSync(kDirectoryPath); | 1055 dir1_proto = GetEntryInfoByPathSync(kDirectoryPath); |
| 1052 ASSERT_TRUE(dir1_proto.get()); | 1056 ASSERT_TRUE(dir1_proto.get()); |
| 1053 | 1057 |
| 1054 // Create a map and add a new file to it. | 1058 // Create a map and add a new file to it. |
| 1055 DriveEntryProtoMap entry_map; | 1059 DriveEntryProtoMap entry_map; |
| 1056 DriveEntryProto new_file; | 1060 DriveEntryProto new_file; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1087 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 1091 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 1088 base::FilePath drive_file_path; | 1092 base::FilePath drive_file_path; |
| 1089 | 1093 |
| 1090 // Add to dir3. | 1094 // Add to dir3. |
| 1091 resource_metadata_->AddEntry( | 1095 resource_metadata_->AddEntry( |
| 1092 file_entry_proto, | 1096 file_entry_proto, |
| 1093 google_apis::test_util::CreateCopyResultCallback( | 1097 google_apis::test_util::CreateCopyResultCallback( |
| 1094 &error, &drive_file_path)); | 1098 &error, &drive_file_path)); |
| 1095 google_apis::test_util::RunBlockingPoolTask(); | 1099 google_apis::test_util::RunBlockingPoolTask(); |
| 1096 EXPECT_EQ(DRIVE_FILE_OK, error); | 1100 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1097 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100"), | 1101 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3/file100"), |
| 1098 drive_file_path); | 1102 drive_file_path); |
| 1099 | 1103 |
| 1100 // Add a directory. | 1104 // Add a directory. |
| 1101 DriveEntryProto dir_entry_proto = CreateDriveEntryProto( | 1105 DriveEntryProto dir_entry_proto = CreateDriveEntryProto( |
| 1102 sequence_id++, true, "resource_id:dir1"); | 1106 sequence_id++, true, "resource_id:dir1"); |
| 1103 | 1107 |
| 1104 resource_metadata_->AddEntry( | 1108 resource_metadata_->AddEntry( |
| 1105 dir_entry_proto, | 1109 dir_entry_proto, |
| 1106 google_apis::test_util::CreateCopyResultCallback( | 1110 google_apis::test_util::CreateCopyResultCallback( |
| 1107 &error, &drive_file_path)); | 1111 &error, &drive_file_path)); |
| 1108 google_apis::test_util::RunBlockingPoolTask(); | 1112 google_apis::test_util::RunBlockingPoolTask(); |
| 1109 EXPECT_EQ(DRIVE_FILE_OK, error); | 1113 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1110 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/dir1/dir101"), | 1114 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir101"), |
| 1111 drive_file_path); | 1115 drive_file_path); |
| 1112 | 1116 |
| 1113 // Add to an invalid parent. | 1117 // Add to an invalid parent. |
| 1114 DriveEntryProto file_entry_proto3 = CreateDriveEntryProto( | 1118 DriveEntryProto file_entry_proto3 = CreateDriveEntryProto( |
| 1115 sequence_id++, false, "resource_id:invalid"); | 1119 sequence_id++, false, "resource_id:invalid"); |
| 1116 | 1120 |
| 1117 resource_metadata_->AddEntry( | 1121 resource_metadata_->AddEntry( |
| 1118 file_entry_proto3, | 1122 file_entry_proto3, |
| 1119 google_apis::test_util::CreateCopyResultCallback( | 1123 google_apis::test_util::CreateCopyResultCallback( |
| 1120 &error, &drive_file_path)); | 1124 &error, &drive_file_path)); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1147 google_apis::test_util::RunBlockingPoolTask(); | 1151 google_apis::test_util::RunBlockingPoolTask(); |
| 1148 EXPECT_TRUE(child_directories.empty()); | 1152 EXPECT_TRUE(child_directories.empty()); |
| 1149 | 1153 |
| 1150 // dir1: dir3 is the only child | 1154 // dir1: dir3 is the only child |
| 1151 resource_metadata_->GetChildDirectories( | 1155 resource_metadata_->GetChildDirectories( |
| 1152 "resource_id:dir1", | 1156 "resource_id:dir1", |
| 1153 google_apis::test_util::CreateCopyResultCallback(&child_directories)); | 1157 google_apis::test_util::CreateCopyResultCallback(&child_directories)); |
| 1154 google_apis::test_util::RunBlockingPoolTask(); | 1158 google_apis::test_util::RunBlockingPoolTask(); |
| 1155 EXPECT_EQ(1u, child_directories.size()); | 1159 EXPECT_EQ(1u, child_directories.size()); |
| 1156 EXPECT_EQ(1u, child_directories.count( | 1160 EXPECT_EQ(1u, child_directories.count( |
| 1157 base::FilePath::FromUTF8Unsafe("drive/dir1/dir3"))); | 1161 base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3"))); |
| 1158 | 1162 |
| 1159 // Add a few more directories to make sure deeper nesting works. | 1163 // Add a few more directories to make sure deeper nesting works. |
| 1160 // dir2/dir100 | 1164 // dir2/dir100 |
| 1161 // dir2/dir101 | 1165 // dir2/dir101 |
| 1162 // dir2/dir101/dir102 | 1166 // dir2/dir101/dir102 |
| 1163 // dir2/dir101/dir103 | 1167 // dir2/dir101/dir103 |
| 1164 // dir2/dir101/dir104 | 1168 // dir2/dir101/dir104 |
| 1165 // dir2/dir101/dir102/dir105 | 1169 // dir2/dir101/dir102/dir105 |
| 1166 // dir2/dir101/dir102/dir105/dir106 | 1170 // dir2/dir101/dir102/dir105/dir106 |
| 1167 // dir2/dir101/dir102/dir105/dir106/dir107 | 1171 // dir2/dir101/dir102/dir105/dir106/dir107 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1182 resource_metadata_.get(), sequence_id++, true, "resource_id:dir105")); | 1186 resource_metadata_.get(), sequence_id++, true, "resource_id:dir105")); |
| 1183 ASSERT_TRUE(AddDriveEntryProto( | 1187 ASSERT_TRUE(AddDriveEntryProto( |
| 1184 resource_metadata_.get(), sequence_id++, true, "resource_id:dir106")); | 1188 resource_metadata_.get(), sequence_id++, true, "resource_id:dir106")); |
| 1185 | 1189 |
| 1186 resource_metadata_->GetChildDirectories( | 1190 resource_metadata_->GetChildDirectories( |
| 1187 "resource_id:dir2", | 1191 "resource_id:dir2", |
| 1188 google_apis::test_util::CreateCopyResultCallback(&child_directories)); | 1192 google_apis::test_util::CreateCopyResultCallback(&child_directories)); |
| 1189 google_apis::test_util::RunBlockingPoolTask(); | 1193 google_apis::test_util::RunBlockingPoolTask(); |
| 1190 EXPECT_EQ(8u, child_directories.size()); | 1194 EXPECT_EQ(8u, child_directories.size()); |
| 1191 EXPECT_EQ(1u, child_directories.count(base::FilePath::FromUTF8Unsafe( | 1195 EXPECT_EQ(1u, child_directories.count(base::FilePath::FromUTF8Unsafe( |
| 1192 "drive/dir2/dir101"))); | 1196 "drive/root/dir2/dir101"))); |
| 1193 EXPECT_EQ(1u, child_directories.count(base::FilePath::FromUTF8Unsafe( | 1197 EXPECT_EQ(1u, child_directories.count(base::FilePath::FromUTF8Unsafe( |
| 1194 "drive/dir2/dir101/dir104"))); | 1198 "drive/root/dir2/dir101/dir104"))); |
| 1195 EXPECT_EQ(1u, child_directories.count(base::FilePath::FromUTF8Unsafe( | 1199 EXPECT_EQ(1u, child_directories.count(base::FilePath::FromUTF8Unsafe( |
| 1196 "drive/dir2/dir101/dir102/dir105/dir106/dir107"))); | 1200 "drive/root/dir2/dir101/dir102/dir105/dir106/dir107"))); |
| 1197 } | 1201 } |
| 1198 | 1202 |
| 1199 TEST_F(DriveResourceMetadataTest, RemoveAll) { | 1203 TEST_F(DriveResourceMetadataTest, RemoveAll) { |
| 1200 // root has children. | 1204 // The grand root has "root" which is not empty. |
| 1201 scoped_ptr<DriveEntryProtoVector> entries; | 1205 scoped_ptr<DriveEntryProtoVector> entries; |
| 1202 entries = ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive")); | 1206 entries = ReadDirectoryByPathSync( |
| 1207 base::FilePath::FromUTF8Unsafe("drive/root")); |
| 1203 ASSERT_TRUE(entries.get()); | 1208 ASSERT_TRUE(entries.get()); |
| 1204 ASSERT_FALSE(entries->empty()); | 1209 ASSERT_FALSE(entries->empty()); |
| 1205 | 1210 |
| 1206 // remove all children. | 1211 // remove all children. |
| 1207 resource_metadata_->RemoveAll(base::Bind(&base::DoNothing)); | 1212 resource_metadata_->RemoveAll(base::Bind(&base::DoNothing)); |
| 1208 google_apis::test_util::RunBlockingPoolTask(); | 1213 google_apis::test_util::RunBlockingPoolTask(); |
| 1209 | 1214 |
| 1210 base::FilePath drive_file_path; | 1215 base::FilePath drive_file_path; |
| 1211 scoped_ptr<DriveEntryProto> entry_proto; | 1216 scoped_ptr<DriveEntryProto> entry_proto; |
| 1212 | 1217 |
| 1213 // root should continue to exist. | 1218 // root should continue to exist. |
| 1214 entry_proto = GetEntryInfoByPathSync(base::FilePath::FromUTF8Unsafe("drive")); | 1219 entry_proto = GetEntryInfoByPathSync(base::FilePath::FromUTF8Unsafe("drive")); |
| 1215 ASSERT_TRUE(entry_proto.get()); | 1220 ASSERT_TRUE(entry_proto.get()); |
| 1216 EXPECT_EQ("drive", entry_proto->base_name()); | 1221 EXPECT_EQ("drive", entry_proto->base_name()); |
| 1217 ASSERT_TRUE(entry_proto->file_info().is_directory()); | 1222 ASSERT_TRUE(entry_proto->file_info().is_directory()); |
| 1218 EXPECT_EQ(kTestRootResourceId, entry_proto->resource_id()); | 1223 EXPECT_EQ(util::kDriveGrandRootSpecialResourceId, entry_proto->resource_id()); |
| 1219 | 1224 |
| 1220 // root should have no children. | 1225 // There is "root" and "other", which are both empty. |
| 1221 entries = ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive")); | 1226 entries = ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive")); |
| 1222 ASSERT_TRUE(entries.get()); | 1227 ASSERT_TRUE(entries.get()); |
| 1223 EXPECT_TRUE(entries->empty()); | 1228 EXPECT_EQ(2U, entries->size()); |
| 1229 |
| 1230 scoped_ptr<DriveEntryProtoVector> entries_in_mydrive = |
| 1231 ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive/root")); |
| 1232 ASSERT_TRUE(entries_in_mydrive.get()); |
| 1233 EXPECT_TRUE(entries_in_mydrive->empty()); |
| 1234 |
| 1235 scoped_ptr<DriveEntryProtoVector> entries_in_other = |
| 1236 ReadDirectoryByPathSync(base::FilePath::FromUTF8Unsafe("drive/other")); |
| 1237 ASSERT_TRUE(entries_in_other.get()); |
| 1238 EXPECT_TRUE(entries_in_other->empty()); |
| 1239 |
| 1224 } | 1240 } |
| 1225 | 1241 |
| 1226 TEST_F(DriveResourceMetadataTest, PerDirectoryChangestamp) { | 1242 TEST_F(DriveResourceMetadataTest, PerDirectoryChangestamp) { |
| 1227 const int kNewChangestamp = kTestChangestamp + 1; | 1243 const int kNewChangestamp = kTestChangestamp + 1; |
| 1228 const char kSubDirectoryResourceId[] = "sub-directory-id"; | 1244 const char kSubDirectoryResourceId[] = "sub-directory-id"; |
| 1229 | 1245 |
| 1230 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests> | 1246 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests> |
| 1231 resource_metadata_original(new DriveResourceMetadata( | 1247 resource_metadata_original(new DriveResourceMetadata( |
| 1232 kTestRootResourceId, temp_dir_.path(), blocking_task_runner_)); | 1248 kTestRootResourceId, temp_dir_.path(), blocking_task_runner_)); |
| 1233 ForceUsingMemoryStorage(resource_metadata_original.get()); | 1249 ForceUsingMemoryStorage(resource_metadata_original.get()); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1253 base::FilePath file_path; | 1269 base::FilePath file_path; |
| 1254 resource_metadata_original->AddEntry( | 1270 resource_metadata_original->AddEntry( |
| 1255 directory_entry, | 1271 directory_entry, |
| 1256 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); | 1272 google_apis::test_util::CreateCopyResultCallback(&error, &file_path)); |
| 1257 // At this point, both the root and the sub directory do not contain the | 1273 // At this point, both the root and the sub directory do not contain the |
| 1258 // per-directory changestamp. | 1274 // per-directory changestamp. |
| 1259 resource_metadata_original->MaybeSave(); | 1275 resource_metadata_original->MaybeSave(); |
| 1260 google_apis::test_util::RunBlockingPoolTask(); | 1276 google_apis::test_util::RunBlockingPoolTask(); |
| 1261 | 1277 |
| 1262 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests> | 1278 scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests> |
| 1263 resource_metadata(new DriveResourceMetadata(kTestRootResourceId, | 1279 resource_metadata(new DriveResourceMetadata( |
| 1264 temp_dir_.path(), | 1280 util::kDriveGrandRootSpecialResourceId, |
| 1265 blocking_task_runner_)); | 1281 temp_dir_.path(), |
| 1282 blocking_task_runner_)); |
| 1266 ForceUsingMemoryStorage(resource_metadata.get()); | 1283 ForceUsingMemoryStorage(resource_metadata.get()); |
| 1267 | 1284 |
| 1268 resource_metadata->Initialize( | 1285 resource_metadata->Initialize( |
| 1269 google_apis::test_util::CreateCopyResultCallback(&error)); | 1286 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1270 google_apis::test_util::RunBlockingPoolTask(); | 1287 google_apis::test_util::RunBlockingPoolTask(); |
| 1271 ASSERT_EQ(DRIVE_FILE_OK, error); | 1288 ASSERT_EQ(DRIVE_FILE_OK, error); |
| 1272 | 1289 |
| 1273 // Load. This should propagate the largest changestamp to every directory. | 1290 // Load. This should propagate the largest changestamp to every directory. |
| 1274 resource_metadata->Load( | 1291 resource_metadata->Load( |
| 1275 google_apis::test_util::CreateCopyResultCallback(&error)); | 1292 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1276 google_apis::test_util::RunBlockingPoolTask(); | 1293 google_apis::test_util::RunBlockingPoolTask(); |
| 1277 EXPECT_EQ(DRIVE_FILE_OK, error); | 1294 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1278 | 1295 |
| 1279 // Confirm that the root directory contains the changestamp. | 1296 // Confirm that the root directory contains the changestamp. |
| 1280 scoped_ptr<DriveEntryProto> entry_proto; | 1297 scoped_ptr<DriveEntryProto> entry_proto; |
| 1281 resource_metadata->GetEntryInfoByPath( | 1298 resource_metadata->GetEntryInfoByPath( |
| 1282 base::FilePath::FromUTF8Unsafe("drive"), | 1299 base::FilePath::FromUTF8Unsafe("drive"), |
| 1283 google_apis::test_util::CreateCopyResultCallback(&error, &entry_proto)); | 1300 google_apis::test_util::CreateCopyResultCallback(&error, &entry_proto)); |
| 1284 google_apis::test_util::RunBlockingPoolTask(); | 1301 google_apis::test_util::RunBlockingPoolTask(); |
| 1285 ASSERT_EQ(DRIVE_FILE_OK, error); | 1302 ASSERT_EQ(DRIVE_FILE_OK, error); |
| 1286 EXPECT_EQ(kNewChangestamp, | 1303 EXPECT_EQ(kNewChangestamp, |
| 1287 entry_proto->directory_specific_info().changestamp()); | 1304 entry_proto->directory_specific_info().changestamp()); |
| 1288 | 1305 |
| 1289 // Confirm that the sub directory contains the changestamp. | 1306 // Confirm that the sub directory contains the changestamp. |
| 1290 resource_metadata->GetEntryInfoByPath( | 1307 resource_metadata->GetEntryInfoByPath( |
| 1291 base::FilePath::FromUTF8Unsafe("drive/directory"), | 1308 base::FilePath::FromUTF8Unsafe("drive/root/directory"), |
| 1292 google_apis::test_util::CreateCopyResultCallback(&error, &entry_proto)); | 1309 google_apis::test_util::CreateCopyResultCallback(&error, &entry_proto)); |
| 1293 google_apis::test_util::RunBlockingPoolTask(); | 1310 google_apis::test_util::RunBlockingPoolTask(); |
| 1294 ASSERT_EQ(DRIVE_FILE_OK, error); | 1311 ASSERT_EQ(DRIVE_FILE_OK, error); |
| 1295 EXPECT_EQ(kNewChangestamp, | 1312 EXPECT_EQ(kNewChangestamp, |
| 1296 entry_proto->directory_specific_info().changestamp()); | 1313 entry_proto->directory_specific_info().changestamp()); |
| 1297 } | 1314 } |
| 1298 | 1315 |
| 1299 TEST_F(DriveResourceMetadataTest, SaveAndLoad) { | 1316 TEST_F(DriveResourceMetadataTest, SaveAndLoad) { |
| 1300 // Save metadata and reset. | 1317 // Save metadata and reset. |
| 1301 resource_metadata_->MaybeSave(); | 1318 resource_metadata_->MaybeSave(); |
| 1302 | 1319 |
| 1303 resource_metadata_.reset(new DriveResourceMetadata(kTestRootResourceId, | 1320 resource_metadata_.reset(new DriveResourceMetadata( |
| 1304 temp_dir_.path(), | 1321 util::kDriveGrandRootSpecialResourceId, |
| 1305 blocking_task_runner_)); | 1322 temp_dir_.path(), |
| 1323 blocking_task_runner_)); |
| 1306 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 1324 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 1307 resource_metadata_->Initialize( | 1325 resource_metadata_->Initialize( |
| 1308 google_apis::test_util::CreateCopyResultCallback(&error)); | 1326 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1309 google_apis::test_util::RunBlockingPoolTask(); | 1327 google_apis::test_util::RunBlockingPoolTask(); |
| 1310 ASSERT_EQ(DRIVE_FILE_OK, error); | 1328 ASSERT_EQ(DRIVE_FILE_OK, error); |
| 1311 | 1329 |
| 1312 // Load metadata. | 1330 // Load metadata. |
| 1313 resource_metadata_->Load( | 1331 resource_metadata_->Load( |
| 1314 google_apis::test_util::CreateCopyResultCallback(&error)); | 1332 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 1315 google_apis::test_util::RunBlockingPoolTask(); | 1333 google_apis::test_util::RunBlockingPoolTask(); |
| 1316 EXPECT_EQ(DRIVE_FILE_OK, error); | 1334 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 1317 | 1335 |
| 1318 // Try to get some data. | 1336 // Try to get some data. |
| 1319 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync( | 1337 scoped_ptr<DriveEntryProto> entry = GetEntryInfoByPathSync( |
| 1320 base::FilePath::FromUTF8Unsafe("drive/dir1/dir3/file9")); | 1338 base::FilePath::FromUTF8Unsafe("drive/root/dir1/dir3/file9")); |
| 1321 ASSERT_TRUE(entry.get()); | 1339 ASSERT_TRUE(entry.get()); |
| 1322 EXPECT_EQ("file9", entry->base_name()); | 1340 EXPECT_EQ("file9", entry->base_name()); |
| 1323 ASSERT_TRUE(!entry->file_info().is_directory()); | 1341 ASSERT_TRUE(!entry->file_info().is_directory()); |
| 1324 EXPECT_EQ("md5:file9", entry->file_specific_info().file_md5()); | 1342 EXPECT_EQ("md5:file9", entry->file_specific_info().file_md5()); |
| 1325 } | 1343 } |
| 1326 | 1344 |
| 1327 } // namespace drive | 1345 } // namespace drive |
| OLD | NEW |