Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(417)

Unified Diff: chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc

Issue 23288007: [SyncFS] Add MetadataDatabase::UpdateTracker (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc
diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc
index 0c1971113070988a005825233b1e79b0a001dbc7..b843f079704116887753a5c26773538d43ab4fb2 100644
--- a/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc
+++ b/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc
@@ -28,7 +28,11 @@ const int64 kInitialChangeID = 1234;
const int64 kSyncRootTrackerID = 100;
const char kSyncRootFolderID[] = "sync_root_folder_id";
+// This struct is used to setup initial state of the database in the test and
+// also used to match to the modified content of the database as the
+// expectation.
struct TrackedFile {
+ // Holds the latest remote metadata which may be not-yet-synced to |tracker|.
FileMetadata metadata;
FileTracker tracker;
@@ -585,13 +589,22 @@ class MetadataDatabaseTest : public testing::Test {
SyncStatusCode PopulateFolder(const std::string& folder_id,
const FileIDList& listed_children) {
SyncStatusCode status = SYNC_STATUS_UNKNOWN;
- metadata_database_->PopulateFolder(
+ metadata_database_->PopulateFolderByChildList(
folder_id, listed_children,
base::Bind(&SyncStatusResultCallback, &status));
message_loop_.RunUntilIdle();
return status;
}
+ SyncStatusCode UpdateTracker(const FileTracker& tracker) {
+ SyncStatusCode status = SYNC_STATUS_UNKNOWN;
+ metadata_database_->UpdateTracker(
+ tracker.tracker_id(), tracker.synced_details(),
+ base::Bind(&SyncStatusResultCallback, &status));
+ message_loop_.RunUntilIdle();
+ return status;
+ }
+
private:
base::ScopedTempDir database_dir_;
base::MessageLoop message_loop_;
@@ -908,5 +921,56 @@ TEST_F(MetadataDatabaseTest, PopulateFolderTest_DisabledAppRoot) {
VerifyReloadConsistency();
}
+TEST_F(MetadataDatabaseTest, UpdateTrackerTest) {
+ TrackedFile sync_root(CreateTrackedSyncRoot());
+ TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_root"));
+ TrackedFile file(CreateTrackedFile(app_root, "file"));
+ file.tracker.set_dirty(true);
+ file.metadata.mutable_details()->set_title("renamed file");;
+
+ TrackedFile inactive_file(CreateTrackedFile(app_root, "inactive_file"));
+ inactive_file.tracker.set_active(false);
+ inactive_file.tracker.set_dirty(true);
+ inactive_file.metadata.mutable_details()->set_title("renamed inactive file");
+ inactive_file.metadata.mutable_details()->set_md5("modified_md5");
+
+ TrackedFile new_conflict(CreateTrackedFile(app_root, "new conflict file"));
+ new_conflict.tracker.set_dirty(true);
+ new_conflict.metadata.mutable_details()->set_title("renamed file");
+
+ const TrackedFile* tracked_files[] = {
+ &sync_root, &app_root, &file, &inactive_file, &new_conflict
+ };
+
+ SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
+ EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ VerifyReloadConsistency();
+
+ *file.tracker.mutable_synced_details() = file.metadata.details();
+ file.tracker.set_dirty(false);
+ EXPECT_EQ(SYNC_STATUS_OK, UpdateTracker(file.tracker));
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ VerifyReloadConsistency();
+
+ *inactive_file.tracker.mutable_synced_details() =
+ inactive_file.metadata.details();
+ inactive_file.tracker.set_dirty(false);
+ inactive_file.tracker.set_active(true);
+ EXPECT_EQ(SYNC_STATUS_OK, UpdateTracker(inactive_file.tracker));
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ VerifyReloadConsistency();
+
+ *new_conflict.tracker.mutable_synced_details() =
+ new_conflict.metadata.details();
+ new_conflict.tracker.set_dirty(false);
+ new_conflict.tracker.set_active(true);
+ file.tracker.set_dirty(true);
+ file.tracker.set_active(false);
+ EXPECT_EQ(SYNC_STATUS_OK, UpdateTracker(new_conflict.tracker));
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ VerifyReloadConsistency();
+}
+
} // namespace drive_backend
} // namespace sync_file_system

Powered by Google App Engine
This is Rietveld 408576698