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

Unified Diff: webkit/fileapi/syncable/local_file_change_tracker_unittest.cc

Issue 12330169: Add separate LocalFileChangeTracer tests for Copy/Move (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/fileapi/syncable/local_file_change_tracker_unittest.cc
diff --git a/webkit/fileapi/syncable/local_file_change_tracker_unittest.cc b/webkit/fileapi/syncable/local_file_change_tracker_unittest.cc
index 618b129a52430c8c9f2d447dbd85a651d937449d..083ec45f9063db4f14a746fe567fdbd3cb9ce33f 100644
--- a/webkit/fileapi/syncable/local_file_change_tracker_unittest.cc
+++ b/webkit/fileapi/syncable/local_file_change_tracker_unittest.cc
@@ -198,12 +198,6 @@ TEST_F(LocalFileChangeTrackerTest, RestoreCreateAndModifyChanges) {
const char kPath3[] = "dir a/file a";
const char kPath4[] = "dir a/file b";
- const char kPath0Copy[] = "file b"; // To be copied from kPath0
- const char kPath1Copy[] = "dir b"; // To be copied from kPath1
- const char kPath2Copy[] = "dir b/dir"; // To be copied from kPath2
- const char kPath3Copy[] = "dir b/file a"; // To be copied from kPath3
- const char kPath4Copy[] = "dir b/file b"; // To be copied from kPath4
-
file_system_.GetChangedURLsInTracker(&urls);
ASSERT_EQ(0U, urls.size());
@@ -212,7 +206,7 @@ TEST_F(LocalFileChangeTrackerTest, RestoreCreateAndModifyChanges) {
MockBlobURLRequestContext url_request_context(file_system_context());
ScopedTextBlob blob(url_request_context, blob_url, kData);
- // Creates files and nested directories.
+ // Create files and nested directories.
EXPECT_EQ(base::PLATFORM_FILE_OK,
file_system_.CreateFile(URL(kPath0))); // Creates a file.
EXPECT_EQ(base::PLATFORM_FILE_OK,
@@ -229,28 +223,22 @@ TEST_F(LocalFileChangeTrackerTest, RestoreCreateAndModifyChanges) {
file_system_.Write(&url_request_context,
URL(kPath4), blob_url)); // Modifies the file.
- // Copies the file and the parent directory.
- EXPECT_EQ(base::PLATFORM_FILE_OK,
- file_system_.Copy(URL(kPath0), URL(kPath0Copy))); // Copy the file.
- EXPECT_EQ(base::PLATFORM_FILE_OK,
- file_system_.Copy(URL(kPath1), URL(kPath1Copy))); // Copy the dir.
-
+ // Verify the changes.
file_system_.GetChangedURLsInTracker(&urls);
- EXPECT_EQ(10U, urls.size());
+ EXPECT_EQ(5U, urls.size());
+ // Reset the changes in in-memory tracker.
DropChangesInTracker();
// Make sure we have no in-memory changes in the tracker.
- urls.clear();
file_system_.GetChangedURLsInTracker(&urls);
ASSERT_EQ(0U, urls.size());
RestoreChangesFromTrackerDB();
// Make sure the changes are restored from the DB.
- urls.clear();
file_system_.GetChangedURLsInTracker(&urls);
- EXPECT_EQ(10U, urls.size());
+ EXPECT_EQ(5U, urls.size());
VerifyAndClearChange(URL(kPath0),
FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
@@ -267,22 +255,6 @@ TEST_F(LocalFileChangeTrackerTest, RestoreCreateAndModifyChanges) {
VerifyAndClearChange(URL(kPath4),
FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
sync_file_system::SYNC_FILE_TYPE_FILE));
-
- VerifyAndClearChange(URL(kPath0Copy),
- FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
- sync_file_system::SYNC_FILE_TYPE_FILE));
- VerifyAndClearChange(URL(kPath1Copy),
- FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
- sync_file_system::SYNC_FILE_TYPE_DIRECTORY));
- VerifyAndClearChange(URL(kPath2Copy),
- FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
- sync_file_system::SYNC_FILE_TYPE_DIRECTORY));
- VerifyAndClearChange(URL(kPath3Copy),
- FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
- sync_file_system::SYNC_FILE_TYPE_FILE));
- VerifyAndClearChange(URL(kPath4Copy),
- FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
- sync_file_system::SYNC_FILE_TYPE_FILE));
}
TEST_F(LocalFileChangeTrackerTest, RestoreRemoveChanges) {
@@ -324,21 +296,18 @@ TEST_F(LocalFileChangeTrackerTest, RestoreRemoveChanges) {
EXPECT_EQ(base::PLATFORM_FILE_OK,
file_system_.Remove(URL(kPath2), true /* recursive */));
- urls.clear();
file_system_.GetChangedURLsInTracker(&urls);
EXPECT_EQ(3U, urls.size());
DropChangesInTracker();
// Make sure we have no in-memory changes in the tracker.
- urls.clear();
file_system_.GetChangedURLsInTracker(&urls);
ASSERT_EQ(0U, urls.size());
RestoreChangesFromTrackerDB();
// Make sure the changes are restored from the DB.
- urls.clear();
file_system_.GetChangedURLsInTracker(&urls);
// Since directories to have been reverted (kPath1, kPath2, kPath4) are
// treated as FILE_CHANGE_DELETE, the number of changes should be 6.
@@ -364,6 +333,98 @@ TEST_F(LocalFileChangeTrackerTest, RestoreRemoveChanges) {
sync_file_system::SYNC_FILE_TYPE_UNKNOWN));
}
+TEST_F(LocalFileChangeTrackerTest, RestoreCopyChanges) {
+ EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_.OpenFileSystem());
+
+ FileSystemURLSet urls;
+
+ const char kPath0[] = "file a";
+ const char kPath1[] = "dir a";
+ const char kPath2[] = "dir a/dir";
+ const char kPath3[] = "dir a/file a";
+ const char kPath4[] = "dir a/file b";
+
+ const char kPath0Copy[] = "file b"; // To be copied from kPath0
+ const char kPath1Copy[] = "dir b"; // To be copied from kPath1
+ const char kPath2Copy[] = "dir b/dir"; // To be copied from kPath2
+ const char kPath3Copy[] = "dir b/file a"; // To be copied from kPath3
+ const char kPath4Copy[] = "dir b/file b"; // To be copied from kPath4
+
+ file_system_.GetChangedURLsInTracker(&urls);
+ ASSERT_EQ(0U, urls.size());
+
+ const GURL blob_url("blob:test");
+ const std::string kData("Lorem ipsum.");
+ MockBlobURLRequestContext url_request_context(file_system_context());
+ ScopedTextBlob blob(url_request_context, blob_url, kData);
+
+ // Create files and nested directories.
+ EXPECT_EQ(base::PLATFORM_FILE_OK,
+ file_system_.CreateFile(URL(kPath0))); // Creates a file.
+ EXPECT_EQ(base::PLATFORM_FILE_OK,
+ file_system_.CreateDirectory(URL(kPath1))); // Creates a dir.
+ EXPECT_EQ(base::PLATFORM_FILE_OK,
+ file_system_.CreateDirectory(URL(kPath2))); // Creates another dir.
+ EXPECT_EQ(base::PLATFORM_FILE_OK,
+ file_system_.CreateFile(URL(kPath3))); // Creates a file.
+ EXPECT_EQ(base::PLATFORM_FILE_OK,
+ file_system_.TruncateFile(URL(kPath3), 1)); // Modifies the file.
+ EXPECT_EQ(base::PLATFORM_FILE_OK,
+ file_system_.CreateFile(URL(kPath4))); // Creates another file.
+ EXPECT_EQ(static_cast<int64>(kData.size()),
+ file_system_.Write(&url_request_context,
+ URL(kPath4), blob_url)); // Modifies the file.
+
+ // Verify we have 5 changes for preparation.
+ file_system_.GetChangedURLsInTracker(&urls);
+ EXPECT_EQ(5U, urls.size());
+ change_tracker()->ClearChangesForURL(URL(kPath0));
+ change_tracker()->ClearChangesForURL(URL(kPath1));
+ change_tracker()->ClearChangesForURL(URL(kPath2));
+ change_tracker()->ClearChangesForURL(URL(kPath3));
+ change_tracker()->ClearChangesForURL(URL(kPath4));
+
+ // Make sure we have no changes.
+ file_system_.GetChangedURLsInTracker(&urls);
+ EXPECT_TRUE(urls.empty());
+
+ // Copy the file and the parent directory.
+ EXPECT_EQ(base::PLATFORM_FILE_OK,
+ file_system_.Copy(URL(kPath0), URL(kPath0Copy))); // Copy the file.
+ EXPECT_EQ(base::PLATFORM_FILE_OK,
+ file_system_.Copy(URL(kPath1), URL(kPath1Copy))); // Copy the dir.
+
+ file_system_.GetChangedURLsInTracker(&urls);
+ EXPECT_EQ(5U, urls.size());
+ DropChangesInTracker();
+
+ // Make sure we have no in-memory changes in the tracker.
+ file_system_.GetChangedURLsInTracker(&urls);
+ ASSERT_EQ(0U, urls.size());
+
+ RestoreChangesFromTrackerDB();
+
+ // Make sure the changes are restored from the DB.
+ file_system_.GetChangedURLsInTracker(&urls);
+ EXPECT_EQ(5U, urls.size());
+
+ VerifyAndClearChange(URL(kPath0Copy),
+ FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
+ sync_file_system::SYNC_FILE_TYPE_FILE));
+ VerifyAndClearChange(URL(kPath1Copy),
+ FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
+ sync_file_system::SYNC_FILE_TYPE_DIRECTORY));
+ VerifyAndClearChange(URL(kPath2Copy),
+ FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
+ sync_file_system::SYNC_FILE_TYPE_DIRECTORY));
+ VerifyAndClearChange(URL(kPath3Copy),
+ FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
+ sync_file_system::SYNC_FILE_TYPE_FILE));
+ VerifyAndClearChange(URL(kPath4Copy),
+ FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
+ sync_file_system::SYNC_FILE_TYPE_FILE));
+}
+
TEST_F(LocalFileChangeTrackerTest, RestoreMoveChanges) {
EXPECT_EQ(base::PLATFORM_FILE_OK, file_system_.OpenFileSystem());
@@ -384,14 +445,10 @@ TEST_F(LocalFileChangeTrackerTest, RestoreMoveChanges) {
file_system_.GetChangedURLsInTracker(&urls);
ASSERT_EQ(0U, urls.size());
- // Creates and moves a same file.
+ // Create files and nested directories.
EXPECT_EQ(base::PLATFORM_FILE_OK,
file_system_.CreateFile(URL(kPath0)));
EXPECT_EQ(base::PLATFORM_FILE_OK,
- file_system_.Move(URL(kPath0), URL(kPath5)));
-
- // Creates files and nested directories, then moves the parent directory.
- EXPECT_EQ(base::PLATFORM_FILE_OK,
file_system_.CreateDirectory(URL(kPath1)));
EXPECT_EQ(base::PLATFORM_FILE_OK,
file_system_.CreateFile(URL(kPath2)));
@@ -399,29 +456,42 @@ TEST_F(LocalFileChangeTrackerTest, RestoreMoveChanges) {
file_system_.CreateDirectory(URL(kPath3)));
EXPECT_EQ(base::PLATFORM_FILE_OK,
file_system_.CreateFile(URL(kPath4)));
+
+ // Verify we have 5 changes for preparation.
+ file_system_.GetChangedURLsInTracker(&urls);
+ EXPECT_EQ(5U, urls.size());
+ change_tracker()->ClearChangesForURL(URL(kPath0));
+ change_tracker()->ClearChangesForURL(URL(kPath1));
+ change_tracker()->ClearChangesForURL(URL(kPath2));
+ change_tracker()->ClearChangesForURL(URL(kPath3));
+ change_tracker()->ClearChangesForURL(URL(kPath4));
+
+ // Make sure we have no changes.
+ file_system_.GetChangedURLsInTracker(&urls);
+ EXPECT_TRUE(urls.empty());
+
+ // Move the file and the parent directory.
+ EXPECT_EQ(base::PLATFORM_FILE_OK,
+ file_system_.Move(URL(kPath0), URL(kPath5)));
EXPECT_EQ(base::PLATFORM_FILE_OK,
file_system_.Move(URL(kPath1), URL(kPath6)));
- urls.clear();
file_system_.GetChangedURLsInTracker(&urls);
- // Since kPath1 and kPath3 were reverted, the number of changes should be 8.
- EXPECT_EQ(8U, urls.size());
+ EXPECT_EQ(10U, urls.size());
DropChangesInTracker();
// Make sure we have no in-memory changes in the tracker.
- urls.clear();
file_system_.GetChangedURLsInTracker(&urls);
ASSERT_EQ(0U, urls.size());
RestoreChangesFromTrackerDB();
// Make sure the changes are restored from the DB.
- urls.clear();
file_system_.GetChangedURLsInTracker(&urls);
- // Since directories to have been reverted (kPath1 and kPath3) are treated as
- // FILE_CHANGE_DELETE, the number of changes should be 10.
- EXPECT_EQ(10U, urls.size());
+ // Deletion for children in the deleted directory cannot be restored,
+ // so we will only have 7 changes.
+ EXPECT_EQ(7U, urls.size());
VerifyAndClearChange(URL(kPath0),
FileChange(FileChange::FILE_CHANGE_DELETE,
@@ -429,15 +499,6 @@ TEST_F(LocalFileChangeTrackerTest, RestoreMoveChanges) {
VerifyAndClearChange(URL(kPath1),
FileChange(FileChange::FILE_CHANGE_DELETE,
sync_file_system::SYNC_FILE_TYPE_UNKNOWN));
- VerifyAndClearChange(URL(kPath2),
- FileChange(FileChange::FILE_CHANGE_DELETE,
- sync_file_system::SYNC_FILE_TYPE_UNKNOWN));
- VerifyAndClearChange(URL(kPath3),
- FileChange(FileChange::FILE_CHANGE_DELETE,
- sync_file_system::SYNC_FILE_TYPE_UNKNOWN));
- VerifyAndClearChange(URL(kPath4),
- FileChange(FileChange::FILE_CHANGE_DELETE,
- sync_file_system::SYNC_FILE_TYPE_UNKNOWN));
VerifyAndClearChange(URL(kPath5),
FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
sync_file_system::SYNC_FILE_TYPE_FILE));
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698