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/sync_file_system/drive_metadata_store.h" | 5 #include "chrome/browser/sync_file_system/drive_metadata_store.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 void MarkAsCreated() { | 214 void MarkAsCreated() { |
215 created_ = true; | 215 created_ = true; |
216 } | 216 } |
217 | 217 |
218 void VerifyUntrackedOrigin(const GURL& origin) { | 218 void VerifyUntrackedOrigin(const GURL& origin) { |
219 EXPECT_FALSE(metadata_store()->IsBatchSyncOrigin(origin)); | 219 EXPECT_FALSE(metadata_store()->IsBatchSyncOrigin(origin)); |
220 EXPECT_FALSE(metadata_store()->IsIncrementalSyncOrigin(origin)); | 220 EXPECT_FALSE(metadata_store()->IsIncrementalSyncOrigin(origin)); |
221 EXPECT_FALSE(metadata_store()->IsOriginDisabled(origin)); | 221 EXPECT_FALSE(metadata_store()->IsOriginDisabled(origin)); |
222 } | 222 } |
223 | 223 |
224 void VerifyBatchSyncOrigin(const GURL& origin, | |
225 const std::string& resource_id) { | |
226 EXPECT_TRUE(metadata_store()->IsBatchSyncOrigin(origin)); | |
227 EXPECT_FALSE(metadata_store()->IsIncrementalSyncOrigin(origin)); | |
228 EXPECT_FALSE(metadata_store()->IsOriginDisabled(origin)); | |
229 EXPECT_EQ(resource_id, | |
230 GetResourceID(metadata_store()->batch_sync_origins(), origin)); | |
231 } | |
232 | |
233 void VerifyIncrementalSyncOrigin(const GURL& origin, | 224 void VerifyIncrementalSyncOrigin(const GURL& origin, |
234 const std::string& resource_id) { | 225 const std::string& resource_id) { |
235 EXPECT_FALSE(metadata_store()->IsBatchSyncOrigin(origin)); | 226 EXPECT_FALSE(metadata_store()->IsBatchSyncOrigin(origin)); |
236 EXPECT_TRUE(metadata_store()->IsIncrementalSyncOrigin(origin)); | 227 EXPECT_TRUE(metadata_store()->IsIncrementalSyncOrigin(origin)); |
237 EXPECT_FALSE(metadata_store()->IsOriginDisabled(origin)); | 228 EXPECT_FALSE(metadata_store()->IsOriginDisabled(origin)); |
238 EXPECT_EQ(resource_id, | 229 EXPECT_EQ(resource_id, |
239 GetResourceID(metadata_store()->incremental_sync_origins(), | 230 GetResourceID(metadata_store()->incremental_sync_origins(), |
240 origin)); | 231 origin)); |
241 } | 232 } |
242 | 233 |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 | 432 |
442 RestoreSyncRootDirectoryFromDB(); | 433 RestoreSyncRootDirectoryFromDB(); |
443 EXPECT_EQ(kResourceId, metadata_store()->sync_root_directory()); | 434 EXPECT_EQ(kResourceId, metadata_store()->sync_root_directory()); |
444 | 435 |
445 VerifyReverseMap(); | 436 VerifyReverseMap(); |
446 } | 437 } |
447 | 438 |
448 TEST_F(DriveMetadataStoreTest, StoreSyncOrigin) { | 439 TEST_F(DriveMetadataStoreTest, StoreSyncOrigin) { |
449 const GURL kOrigin1("chrome-extension://example1"); | 440 const GURL kOrigin1("chrome-extension://example1"); |
450 const GURL kOrigin2("chrome-extension://example2"); | 441 const GURL kOrigin2("chrome-extension://example2"); |
451 const GURL kOrigin3("chrome-extension://example3"); | |
452 const std::string kResourceId1("hoge"); | 442 const std::string kResourceId1("hoge"); |
453 const std::string kResourceId2("fuga"); | 443 const std::string kResourceId2("fuga"); |
454 const std::string kResourceId3("foo"); | |
455 | 444 |
456 InitializeDatabase(); | 445 InitializeDatabase(); |
457 | 446 |
458 // Make sure origins have not been marked yet. | 447 // Make sure origins have not been marked yet. |
459 VerifyUntrackedOrigin(kOrigin1); | 448 VerifyUntrackedOrigin(kOrigin1); |
460 VerifyUntrackedOrigin(kOrigin2); | 449 VerifyUntrackedOrigin(kOrigin2); |
461 VerifyUntrackedOrigin(kOrigin3); | |
462 | 450 |
463 // Mark origins as batch sync origins. | 451 // Mark origins as incremental sync origins. |
464 metadata_store()->AddBatchSyncOrigin(kOrigin1, kResourceId1); | 452 metadata_store()->AddIncrementalSyncOrigin(kOrigin1, kResourceId1); |
465 metadata_store()->AddBatchSyncOrigin(kOrigin2, kResourceId2); | 453 metadata_store()->AddIncrementalSyncOrigin(kOrigin2, kResourceId2); |
466 metadata_store()->AddBatchSyncOrigin(kOrigin3, kResourceId3); | 454 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId1); |
467 VerifyBatchSyncOrigin(kOrigin1, kResourceId1); | 455 VerifyIncrementalSyncOrigin(kOrigin2, kResourceId2); |
468 VerifyBatchSyncOrigin(kOrigin2, kResourceId2); | |
469 VerifyBatchSyncOrigin(kOrigin3, kResourceId3); | |
470 | 456 |
471 // Mark |kOrigin1| as an incremental sync origin, and disable |kOrigin3| as | 457 // Disabled origin 2, origin 1 should still be incremental. |
472 // a disabled sync origin. |kOrigin2| should have still been marked as a | 458 DisableOrigin(kOrigin2); |
473 // batch sync origin. | |
474 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin1); | |
475 DisableOrigin(kOrigin3); | |
476 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId1); | 459 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId1); |
477 VerifyBatchSyncOrigin(kOrigin2, kResourceId2); | 460 VerifyDisabledOrigin(kOrigin2, kResourceId2); |
478 VerifyDisabledOrigin(kOrigin3, kResourceId3); | |
479 | 461 |
480 DropSyncOriginsInStore(); | 462 DropSyncOriginsInStore(); |
481 | 463 |
482 // Make sure origins have been dropped. | 464 // Make sure origins have been dropped. |
483 VerifyUntrackedOrigin(kOrigin1); | 465 VerifyUntrackedOrigin(kOrigin1); |
484 VerifyUntrackedOrigin(kOrigin2); | 466 VerifyUntrackedOrigin(kOrigin2); |
485 VerifyUntrackedOrigin(kOrigin3); | |
486 | 467 |
487 RestoreOriginsFromDB(); | 468 RestoreOriginsFromDB(); |
488 | 469 |
489 // Make sure origins have been restored. | 470 // Make sure origins have been restored. |
490 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId1); | 471 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId1); |
491 VerifyBatchSyncOrigin(kOrigin2, kResourceId2); | 472 VerifyDisabledOrigin(kOrigin2, kResourceId2); |
492 VerifyDisabledOrigin(kOrigin3, kResourceId3); | |
493 | 473 |
494 VerifyReverseMap(); | 474 VerifyReverseMap(); |
495 } | 475 } |
496 | 476 |
497 TEST_F(DriveMetadataStoreTest, DisableOrigin) { | 477 TEST_F(DriveMetadataStoreTest, DisableOrigin) { |
498 const GURL kOrigin1("chrome-extension://example1"); | 478 const GURL kOrigin1("chrome-extension://example1"); |
499 const GURL kOrigin2("chrome-extension://example2"); | |
500 const std::string kResourceId1("hoge"); | 479 const std::string kResourceId1("hoge"); |
501 const std::string kResourceId2("fuga"); | |
502 | 480 |
503 InitializeDatabase(); | 481 InitializeDatabase(); |
504 EXPECT_EQ(SYNC_STATUS_OK, SetLargestChangeStamp(1)); | 482 EXPECT_EQ(SYNC_STATUS_OK, SetLargestChangeStamp(1)); |
505 | 483 |
506 metadata_store()->AddBatchSyncOrigin(kOrigin1, kResourceId1); | 484 metadata_store()->AddIncrementalSyncOrigin(kOrigin1, kResourceId1); |
507 metadata_store()->AddBatchSyncOrigin(kOrigin2, kResourceId2); | 485 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId1); |
508 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin2); | |
509 VerifyBatchSyncOrigin(kOrigin1, kResourceId1); | |
510 VerifyIncrementalSyncOrigin(kOrigin2, kResourceId2); | |
511 | 486 |
512 DisableOrigin(kOrigin1); | 487 DisableOrigin(kOrigin1); |
513 DisableOrigin(kOrigin2); | |
514 VerifyDisabledOrigin(kOrigin1, kResourceId1); | 488 VerifyDisabledOrigin(kOrigin1, kResourceId1); |
515 VerifyDisabledOrigin(kOrigin2, kResourceId2); | |
516 | 489 |
| 490 // Re-enabled origins go back to DriveFileSyncService and are not tracked |
| 491 // in DriveMetadataStore. |
517 EnableOrigin(kOrigin1); | 492 EnableOrigin(kOrigin1); |
518 EnableOrigin(kOrigin2); | 493 VerifyUntrackedOrigin(kOrigin1); |
519 VerifyBatchSyncOrigin(kOrigin1, kResourceId1); | |
520 VerifyBatchSyncOrigin(kOrigin2, kResourceId2); | |
521 } | 494 } |
522 | 495 |
523 TEST_F(DriveMetadataStoreTest, RemoveOrigin) { | 496 TEST_F(DriveMetadataStoreTest, RemoveOrigin) { |
524 const GURL kOrigin1("chrome-extension://example1"); | 497 const GURL kOrigin1("chrome-extension://example1"); |
525 const GURL kOrigin2("chrome-extension://example2"); | 498 const GURL kOrigin2("chrome-extension://example2"); |
526 const GURL kOrigin3("chrome-extension://example3"); | 499 const GURL kOrigin3("chrome-extension://example3"); |
527 const GURL kOrigin4("chrome-extension://example4"); | |
528 const GURL kOrigin5("chrome-extension://example5"); | |
529 const std::string kResourceId1("hogera"); | 500 const std::string kResourceId1("hogera"); |
530 const std::string kResourceId2("fugaga"); | 501 const std::string kResourceId2("fugaga"); |
531 const std::string kResourceId3("piyopiyo"); | 502 const std::string kResourceId3("piyopiyo"); |
532 const std::string kResourceId5("hogehoge"); | |
533 | 503 |
534 InitializeDatabase(); | 504 InitializeDatabase(); |
535 EXPECT_EQ(SYNC_STATUS_OK, SetLargestChangeStamp(1)); | 505 EXPECT_EQ(SYNC_STATUS_OK, SetLargestChangeStamp(1)); |
536 | 506 |
537 metadata_store()->AddBatchSyncOrigin(kOrigin1, kResourceId1); | 507 metadata_store()->AddIncrementalSyncOrigin(kOrigin1, kResourceId1); |
538 metadata_store()->AddBatchSyncOrigin(kOrigin2, kResourceId2); | 508 metadata_store()->AddIncrementalSyncOrigin(kOrigin2, kResourceId2); |
539 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin2); | 509 metadata_store()->AddIncrementalSyncOrigin(kOrigin3, kResourceId3); |
540 metadata_store()->AddBatchSyncOrigin(kOrigin3, kResourceId3); | 510 DisableOrigin(kOrigin3); |
541 metadata_store()->AddBatchSyncOrigin(kOrigin5, kResourceId5); | 511 EXPECT_EQ(2u, metadata_store()->incremental_sync_origins().size()); |
| 512 EXPECT_EQ(1u, metadata_store()->disabled_origins().size()); |
542 | 513 |
543 EXPECT_EQ(SYNC_STATUS_OK, | 514 EXPECT_EQ(SYNC_STATUS_OK, |
544 UpdateEntry( | 515 UpdateEntry( |
545 CreateSyncableFileSystemURL( | 516 CreateSyncableFileSystemURL( |
546 kOrigin1, kServiceName, base::FilePath(FPL("guf"))), | 517 kOrigin1, kServiceName, base::FilePath(FPL("guf"))), |
547 CreateMetadata("foo", "spam", false, false))); | 518 CreateMetadata("foo", "spam", false, false))); |
548 EXPECT_EQ(SYNC_STATUS_OK, | 519 EXPECT_EQ(SYNC_STATUS_OK, |
549 UpdateEntry( | 520 UpdateEntry( |
550 CreateSyncableFileSystemURL( | 521 CreateSyncableFileSystemURL( |
551 kOrigin2, kServiceName, base::FilePath(FPL("mof"))), | 522 kOrigin2, kServiceName, base::FilePath(FPL("mof"))), |
552 CreateMetadata("bar", "ham", false, false))); | 523 CreateMetadata("bar", "ham", false, false))); |
553 EXPECT_EQ(SYNC_STATUS_OK, | 524 EXPECT_EQ(SYNC_STATUS_OK, |
554 UpdateEntry( | 525 UpdateEntry( |
555 CreateSyncableFileSystemURL( | 526 CreateSyncableFileSystemURL( |
556 kOrigin3, kServiceName, base::FilePath(FPL("waf"))), | 527 kOrigin3, kServiceName, base::FilePath(FPL("waf"))), |
557 CreateMetadata("baz", "egg", false, false))); | 528 CreateMetadata("baz", "egg", false, false))); |
558 EXPECT_EQ(SYNC_STATUS_OK, | |
559 UpdateEntry( | |
560 CreateSyncableFileSystemURL( | |
561 kOrigin4, kServiceName, base::FilePath(FPL("cue"))), | |
562 CreateMetadata("lat", "fork", false, false))); | |
563 EXPECT_EQ(SYNC_STATUS_OK, | |
564 UpdateEntry( | |
565 CreateSyncableFileSystemURL( | |
566 kOrigin5, kServiceName, base::FilePath(FPL("tac"))), | |
567 CreateMetadata("pov", "spoon", false, false))); | |
568 EXPECT_EQ(SYNC_STATUS_OK, | |
569 UpdateEntry( | |
570 CreateSyncableFileSystemURL( | |
571 kOrigin1, kServiceName, base::FilePath(FPL("tic"))), | |
572 CreateMetadata("zav", "sause", false, false))); | |
573 | 529 |
574 EXPECT_EQ(SYNC_STATUS_OK, RemoveOrigin(kOrigin1)); | |
575 EXPECT_EQ(SYNC_STATUS_OK, RemoveOrigin(kOrigin2)); | 530 EXPECT_EQ(SYNC_STATUS_OK, RemoveOrigin(kOrigin2)); |
576 EXPECT_EQ(SYNC_STATUS_OK, RemoveOrigin(kOrigin4)); | 531 EXPECT_EQ(SYNC_STATUS_OK, RemoveOrigin(kOrigin3)); |
577 EXPECT_EQ(SYNC_STATUS_OK, RemoveOrigin(kOrigin5)); | |
578 | 532 |
579 DropDatabase(); | 533 DropDatabase(); |
580 InitializeDatabase(); | 534 InitializeDatabase(); |
581 | 535 |
582 // kOrigin3 should be only remaining batch sync origin. | 536 // kOrigin1 should be the only one left. |
583 EXPECT_EQ(1u, metadata_store()->batch_sync_origins().size()); | 537 EXPECT_EQ(0u, metadata_store()->batch_sync_origins().size()); |
584 EXPECT_TRUE(metadata_store()->IsBatchSyncOrigin(kOrigin3)); | 538 EXPECT_EQ(1u, metadata_store()->incremental_sync_origins().size()); |
585 EXPECT_TRUE(metadata_store()->incremental_sync_origins().empty()); | 539 EXPECT_EQ(0u, metadata_store()->disabled_origins().size()); |
586 EXPECT_TRUE(metadata_store()->disabled_origins().empty()); | 540 EXPECT_TRUE(metadata_store()->IsIncrementalSyncOrigin(kOrigin1)); |
587 EXPECT_EQ(1u, metadata_map().size()); | 541 EXPECT_EQ(1u, metadata_map().size()); |
588 | 542 |
589 DriveMetadataStore::MetadataMap::const_iterator found = | 543 DriveMetadataStore::MetadataMap::const_iterator found = |
590 metadata_map().find(kOrigin3); | 544 metadata_map().find(kOrigin1); |
591 EXPECT_TRUE(found != metadata_map().end() && found->second.size() == 1u); | 545 EXPECT_TRUE(found != metadata_map().end() && found->second.size() == 1u); |
592 | 546 |
593 VerifyReverseMap(); | 547 VerifyReverseMap(); |
594 } | 548 } |
595 | 549 |
596 TEST_F(DriveMetadataStoreTest, GetResourceIdForOrigin) { | 550 TEST_F(DriveMetadataStoreTest, GetResourceIdForOrigin) { |
597 const GURL kOrigin1("chrome-extension://example1"); | 551 const GURL kOrigin1("chrome-extension://example1"); |
598 const GURL kOrigin2("chrome-extension://example2"); | 552 const GURL kOrigin2("chrome-extension://example2"); |
599 const GURL kOrigin3("chrome-extension://example3"); | 553 const GURL kOrigin3("chrome-extension://example3"); |
600 const std::string kResourceId1("hogera"); | 554 const std::string kResourceId1("hogera"); |
601 const std::string kResourceId2("fugaga"); | 555 const std::string kResourceId2("fugaga"); |
602 const std::string kResourceId3("piyopiyo"); | 556 const std::string kResourceId3("piyopiyo"); |
603 | 557 |
604 InitializeDatabase(); | 558 InitializeDatabase(); |
605 EXPECT_EQ(SYNC_STATUS_OK, SetLargestChangeStamp(1)); | 559 EXPECT_EQ(SYNC_STATUS_OK, SetLargestChangeStamp(1)); |
606 metadata_store()->SetSyncRootDirectory("root"); | 560 metadata_store()->SetSyncRootDirectory("root"); |
607 | 561 |
608 metadata_store()->AddBatchSyncOrigin(kOrigin1, kResourceId1); | 562 metadata_store()->AddIncrementalSyncOrigin(kOrigin1, kResourceId1); |
609 metadata_store()->AddBatchSyncOrigin(kOrigin2, kResourceId2); | 563 metadata_store()->AddIncrementalSyncOrigin(kOrigin2, kResourceId2); |
610 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin2); | 564 metadata_store()->AddIncrementalSyncOrigin(kOrigin3, kResourceId3); |
611 metadata_store()->AddBatchSyncOrigin(kOrigin3, kResourceId3); | |
612 DisableOrigin(kOrigin3); | 565 DisableOrigin(kOrigin3); |
613 | 566 |
614 EXPECT_EQ(kResourceId1, metadata_store()->GetResourceIdForOrigin(kOrigin1)); | 567 EXPECT_EQ(kResourceId1, metadata_store()->GetResourceIdForOrigin(kOrigin1)); |
615 EXPECT_EQ(kResourceId2, metadata_store()->GetResourceIdForOrigin(kOrigin2)); | 568 EXPECT_EQ(kResourceId2, metadata_store()->GetResourceIdForOrigin(kOrigin2)); |
616 EXPECT_EQ(kResourceId3, metadata_store()->GetResourceIdForOrigin(kOrigin3)); | 569 EXPECT_EQ(kResourceId3, metadata_store()->GetResourceIdForOrigin(kOrigin3)); |
617 | 570 |
618 DropDatabase(); | 571 DropDatabase(); |
619 InitializeDatabase(); | 572 InitializeDatabase(); |
620 | 573 |
621 EXPECT_EQ(kResourceId1, metadata_store()->GetResourceIdForOrigin(kOrigin1)); | 574 EXPECT_EQ(kResourceId1, metadata_store()->GetResourceIdForOrigin(kOrigin1)); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
710 EXPECT_EQ(kFileResourceId, metadata.resource_id()); | 663 EXPECT_EQ(kFileResourceId, metadata.resource_id()); |
711 EXPECT_EQ(kFileMD5, metadata.md5_checksum()); | 664 EXPECT_EQ(kFileMD5, metadata.md5_checksum()); |
712 EXPECT_FALSE(metadata.conflicted()); | 665 EXPECT_FALSE(metadata.conflicted()); |
713 EXPECT_FALSE(metadata.to_be_fetched()); | 666 EXPECT_FALSE(metadata.to_be_fetched()); |
714 | 667 |
715 VerifyReverseMap(); | 668 VerifyReverseMap(); |
716 } | 669 } |
717 | 670 |
718 TEST_F(DriveMetadataStoreTest, ResetOriginRootDirectory) { | 671 TEST_F(DriveMetadataStoreTest, ResetOriginRootDirectory) { |
719 const GURL kOrigin1("chrome-extension://example1"); | 672 const GURL kOrigin1("chrome-extension://example1"); |
720 const GURL kOrigin2("chrome-extension://example2"); | |
721 const std::string kResourceId1("hoge"); | 673 const std::string kResourceId1("hoge"); |
722 const std::string kResourceId2("fuga"); | 674 const std::string kResourceId2("fuga"); |
723 const std::string kResourceId3("piyo"); | |
724 | 675 |
725 InitializeDatabase(); | 676 InitializeDatabase(); |
726 EXPECT_EQ(SYNC_STATUS_OK, SetLargestChangeStamp(1)); | 677 EXPECT_EQ(SYNC_STATUS_OK, SetLargestChangeStamp(1)); |
727 | 678 |
728 metadata_store()->AddBatchSyncOrigin(kOrigin1, kResourceId1); | 679 metadata_store()->AddIncrementalSyncOrigin(kOrigin1, kResourceId1); |
729 metadata_store()->AddBatchSyncOrigin(kOrigin2, kResourceId2); | 680 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId1); |
730 metadata_store()->MoveBatchSyncOriginToIncremental(kOrigin2); | |
731 VerifyBatchSyncOrigin(kOrigin1, kResourceId1); | |
732 VerifyIncrementalSyncOrigin(kOrigin2, kResourceId2); | |
733 VerifyReverseMap(); | 681 VerifyReverseMap(); |
734 | 682 |
735 metadata_store()->SetOriginRootDirectory(kOrigin2, kResourceId3); | 683 metadata_store()->SetOriginRootDirectory(kOrigin1, kResourceId2); |
736 VerifyIncrementalSyncOrigin(kOrigin2, kResourceId3); | 684 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId2); |
737 VerifyReverseMap(); | 685 VerifyReverseMap(); |
738 } | 686 } |
739 | 687 |
740 } // namespace sync_file_system | 688 } // namespace sync_file_system |
OLD | NEW |