| 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/change_list_processor.h" | 5 #include "chrome/browser/chromeos/drive/change_list_processor.h" |
| 6 | 6 |
| 7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
| 8 #include "base/message_loop/message_loop_proxy.h" | 8 #include "base/message_loop/message_loop_proxy.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chrome/browser/chromeos/drive/drive.pb.h" | 10 #include "chrome/browser/chromeos/drive/drive.pb.h" |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 // Returns a basic change list which contains some files and directories. | 42 // Returns a basic change list which contains some files and directories. |
| 43 ScopedVector<ChangeList> CreateBaseChangeList() { | 43 ScopedVector<ChangeList> CreateBaseChangeList() { |
| 44 ScopedVector<ChangeList> change_lists; | 44 ScopedVector<ChangeList> change_lists; |
| 45 change_lists.push_back(new ChangeList); | 45 change_lists.push_back(new ChangeList); |
| 46 | 46 |
| 47 // Add directories to the change list. | 47 // Add directories to the change list. |
| 48 ResourceEntry directory; | 48 ResourceEntry directory; |
| 49 directory.mutable_file_info()->set_is_directory(true); | 49 directory.mutable_file_info()->set_is_directory(true); |
| 50 | 50 |
| 51 directory.set_title("Directory 1"); | 51 directory.set_title("Directory 1"); |
| 52 directory.set_resource_id("folder:1_folder_resource_id"); | 52 directory.set_resource_id("1_folder_resource_id"); |
| 53 change_lists[0]->mutable_entries()->push_back(directory); | 53 change_lists[0]->mutable_entries()->push_back(directory); |
| 54 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); | 54 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); |
| 55 | 55 |
| 56 directory.set_title("Sub Directory Folder"); | 56 directory.set_title("Sub Directory Folder"); |
| 57 directory.set_resource_id("folder:sub_dir_folder_resource_id"); | 57 directory.set_resource_id("sub_dir_folder_resource_id"); |
| 58 change_lists[0]->mutable_entries()->push_back(directory); | 58 change_lists[0]->mutable_entries()->push_back(directory); |
| 59 change_lists[0]->mutable_parent_resource_ids()->push_back( | 59 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 60 "folder:1_folder_resource_id"); | 60 "1_folder_resource_id"); |
| 61 | 61 |
| 62 directory.set_title("Sub Sub Directory Folder"); | 62 directory.set_title("Sub Sub Directory Folder"); |
| 63 directory.set_resource_id("folder:sub_sub_directory_folder_id"); | 63 directory.set_resource_id("sub_sub_directory_folder_id"); |
| 64 change_lists[0]->mutable_entries()->push_back(directory); | 64 change_lists[0]->mutable_entries()->push_back(directory); |
| 65 change_lists[0]->mutable_parent_resource_ids()->push_back( | 65 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 66 "folder:sub_dir_folder_resource_id"); | 66 "sub_dir_folder_resource_id"); |
| 67 | 67 |
| 68 directory.set_title("Directory 2 excludeDir-test"); | 68 directory.set_title("Directory 2 excludeDir-test"); |
| 69 directory.set_resource_id("folder:sub_dir_folder_2_self_link"); | 69 directory.set_resource_id("sub_dir_folder_2_self_link"); |
| 70 change_lists[0]->mutable_entries()->push_back(directory); | 70 change_lists[0]->mutable_entries()->push_back(directory); |
| 71 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); | 71 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); |
| 72 | 72 |
| 73 // Add files to the change list. | 73 // Add files to the change list. |
| 74 ResourceEntry file; | 74 ResourceEntry file; |
| 75 | 75 |
| 76 file.set_title("File 1.txt"); | 76 file.set_title("File 1.txt"); |
| 77 file.set_resource_id("file:2_file_resource_id"); | 77 file.set_resource_id("2_file_resource_id"); |
| 78 change_lists[0]->mutable_entries()->push_back(file); | 78 change_lists[0]->mutable_entries()->push_back(file); |
| 79 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); | 79 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); |
| 80 | 80 |
| 81 file.set_title("SubDirectory File 1.txt"); | 81 file.set_title("SubDirectory File 1.txt"); |
| 82 file.set_resource_id("file:subdirectory_file_1_id"); | 82 file.set_resource_id("subdirectory_file_1_id"); |
| 83 change_lists[0]->mutable_entries()->push_back(file); | 83 change_lists[0]->mutable_entries()->push_back(file); |
| 84 change_lists[0]->mutable_parent_resource_ids()->push_back( | 84 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 85 "folder:1_folder_resource_id"); | 85 "1_folder_resource_id"); |
| 86 | 86 |
| 87 file.set_title("Orphan File 1.txt"); | 87 file.set_title("Orphan File 1.txt"); |
| 88 file.set_resource_id("file:1_orphanfile_resource_id"); | 88 file.set_resource_id("1_orphanfile_resource_id"); |
| 89 change_lists[0]->mutable_entries()->push_back(file); | 89 change_lists[0]->mutable_entries()->push_back(file); |
| 90 change_lists[0]->mutable_parent_resource_ids()->push_back(""); | 90 change_lists[0]->mutable_parent_resource_ids()->push_back(""); |
| 91 | 91 |
| 92 change_lists[0]->set_largest_changestamp(kBaseResourceListChangestamp); | 92 change_lists[0]->set_largest_changestamp(kBaseResourceListChangestamp); |
| 93 return change_lists.Pass(); | 93 return change_lists.Pass(); |
| 94 } | 94 } |
| 95 | 95 |
| 96 class ChangeListProcessorTest : public testing::Test { | 96 class ChangeListProcessorTest : public testing::Test { |
| 97 protected: | 97 protected: |
| 98 virtual void SetUp() OVERRIDE { | 98 virtual void SetUp() OVERRIDE { |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 | 168 |
| 169 } // namespace | 169 } // namespace |
| 170 | 170 |
| 171 TEST_F(ChangeListProcessorTest, ApplyFullResourceList) { | 171 TEST_F(ChangeListProcessorTest, ApplyFullResourceList) { |
| 172 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 172 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 173 | 173 |
| 174 const EntryExpectation kExpected[] = { | 174 const EntryExpectation kExpected[] = { |
| 175 // Root files | 175 // Root files |
| 176 {"drive/root", kRootId, "", DIRECTORY}, | 176 {"drive/root", kRootId, "", DIRECTORY}, |
| 177 {"drive/root/File 1.txt", | 177 {"drive/root/File 1.txt", |
| 178 "file:2_file_resource_id", kRootId, FILE}, | 178 "2_file_resource_id", kRootId, FILE}, |
| 179 // Subdirectory files | 179 // Subdirectory files |
| 180 {"drive/root/Directory 1", | 180 {"drive/root/Directory 1", |
| 181 "folder:1_folder_resource_id", kRootId, DIRECTORY}, | 181 "1_folder_resource_id", kRootId, DIRECTORY}, |
| 182 {"drive/root/Directory 1/SubDirectory File 1.txt", | 182 {"drive/root/Directory 1/SubDirectory File 1.txt", |
| 183 "file:subdirectory_file_1_id", "folder:1_folder_resource_id", FILE}, | 183 "subdirectory_file_1_id", "1_folder_resource_id", FILE}, |
| 184 {"drive/root/Directory 2 excludeDir-test", | 184 {"drive/root/Directory 2 excludeDir-test", |
| 185 "folder:sub_dir_folder_2_self_link", kRootId, DIRECTORY}, | 185 "sub_dir_folder_2_self_link", kRootId, DIRECTORY}, |
| 186 // Deeper | 186 // Deeper |
| 187 {"drive/root/Directory 1/Sub Directory Folder", | 187 {"drive/root/Directory 1/Sub Directory Folder", |
| 188 "folder:sub_dir_folder_resource_id", | 188 "sub_dir_folder_resource_id", |
| 189 "folder:1_folder_resource_id", DIRECTORY}, | 189 "1_folder_resource_id", DIRECTORY}, |
| 190 {"drive/root/Directory 1/Sub Directory Folder/Sub Sub Directory Folder", | 190 {"drive/root/Directory 1/Sub Directory Folder/Sub Sub Directory Folder", |
| 191 "folder:sub_sub_directory_folder_id", | 191 "sub_sub_directory_folder_id", |
| 192 "folder:sub_dir_folder_resource_id", DIRECTORY}, | 192 "sub_dir_folder_resource_id", DIRECTORY}, |
| 193 // Orphan | 193 // Orphan |
| 194 {"drive/other/Orphan File 1.txt", "file:1_orphanfile_resource_id", | 194 {"drive/other/Orphan File 1.txt", "1_orphanfile_resource_id", |
| 195 "", FILE}, | 195 "", FILE}, |
| 196 }; | 196 }; |
| 197 | 197 |
| 198 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kExpected); ++i) { | 198 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kExpected); ++i) { |
| 199 scoped_ptr<ResourceEntry> entry = GetResourceEntry(kExpected[i].path); | 199 scoped_ptr<ResourceEntry> entry = GetResourceEntry(kExpected[i].path); |
| 200 ASSERT_TRUE(entry) << "for path: " << kExpected[i].path; | 200 ASSERT_TRUE(entry) << "for path: " << kExpected[i].path; |
| 201 EXPECT_EQ(kExpected[i].id, entry->resource_id()); | 201 EXPECT_EQ(kExpected[i].id, entry->resource_id()); |
| 202 | 202 |
| 203 ResourceEntry parent_entry; | 203 ResourceEntry parent_entry; |
| 204 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryById( | 204 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryById( |
| 205 entry->parent_local_id(), &parent_entry)); | 205 entry->parent_local_id(), &parent_entry)); |
| 206 EXPECT_EQ(kExpected[i].parent_id, parent_entry.resource_id()); | 206 EXPECT_EQ(kExpected[i].parent_id, parent_entry.resource_id()); |
| 207 EXPECT_EQ(kExpected[i].type, | 207 EXPECT_EQ(kExpected[i].type, |
| 208 entry->file_info().is_directory() ? DIRECTORY : FILE); | 208 entry->file_info().is_directory() ? DIRECTORY : FILE); |
| 209 } | 209 } |
| 210 | 210 |
| 211 int64 changestamp = 0; | 211 int64 changestamp = 0; |
| 212 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); | 212 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); |
| 213 EXPECT_EQ(kBaseResourceListChangestamp, changestamp); | 213 EXPECT_EQ(kBaseResourceListChangestamp, changestamp); |
| 214 } | 214 } |
| 215 | 215 |
| 216 TEST_F(ChangeListProcessorTest, DeltaFileAddedInNewDirectory) { | 216 TEST_F(ChangeListProcessorTest, DeltaFileAddedInNewDirectory) { |
| 217 ScopedVector<ChangeList> change_lists; | 217 ScopedVector<ChangeList> change_lists; |
| 218 change_lists.push_back(new ChangeList); | 218 change_lists.push_back(new ChangeList); |
| 219 | 219 |
| 220 ResourceEntry new_folder; | 220 ResourceEntry new_folder; |
| 221 new_folder.set_resource_id("folder:new_folder_resource_id"); | 221 new_folder.set_resource_id("new_folder_resource_id"); |
| 222 new_folder.set_title("New Directory"); | 222 new_folder.set_title("New Directory"); |
| 223 new_folder.mutable_file_info()->set_is_directory(true); | 223 new_folder.mutable_file_info()->set_is_directory(true); |
| 224 change_lists[0]->mutable_entries()->push_back(new_folder); | 224 change_lists[0]->mutable_entries()->push_back(new_folder); |
| 225 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); | 225 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); |
| 226 | 226 |
| 227 ResourceEntry new_file; | 227 ResourceEntry new_file; |
| 228 new_file.set_resource_id("document:file_added_in_new_dir_id"); | 228 new_file.set_resource_id("file_added_in_new_dir_id"); |
| 229 new_file.set_title("File in new dir.txt"); | 229 new_file.set_title("File in new dir.txt"); |
| 230 change_lists[0]->mutable_entries()->push_back(new_file); | 230 change_lists[0]->mutable_entries()->push_back(new_file); |
| 231 change_lists[0]->mutable_parent_resource_ids()->push_back( | 231 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 232 new_folder.resource_id()); | 232 new_folder.resource_id()); |
| 233 | 233 |
| 234 change_lists[0]->set_largest_changestamp(16730); | 234 change_lists[0]->set_largest_changestamp(16730); |
| 235 | 235 |
| 236 // Apply the changelist and check the effect. | 236 // Apply the changelist and check the effect. |
| 237 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 237 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 238 | 238 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 252 "drive/root/New Directory/File in new dir.txt"))); | 252 "drive/root/New Directory/File in new dir.txt"))); |
| 253 EXPECT_TRUE(changed_files.count( | 253 EXPECT_TRUE(changed_files.count( |
| 254 base::FilePath::FromUTF8Unsafe("drive/root/New Directory"))); | 254 base::FilePath::FromUTF8Unsafe("drive/root/New Directory"))); |
| 255 } | 255 } |
| 256 | 256 |
| 257 TEST_F(ChangeListProcessorTest, DeltaDirMovedFromRootToDirectory) { | 257 TEST_F(ChangeListProcessorTest, DeltaDirMovedFromRootToDirectory) { |
| 258 ScopedVector<ChangeList> change_lists; | 258 ScopedVector<ChangeList> change_lists; |
| 259 change_lists.push_back(new ChangeList); | 259 change_lists.push_back(new ChangeList); |
| 260 | 260 |
| 261 ResourceEntry entry; | 261 ResourceEntry entry; |
| 262 entry.set_resource_id("folder:1_folder_resource_id"); | 262 entry.set_resource_id("1_folder_resource_id"); |
| 263 entry.set_title("Directory 1"); | 263 entry.set_title("Directory 1"); |
| 264 entry.mutable_file_info()->set_is_directory(true); | 264 entry.mutable_file_info()->set_is_directory(true); |
| 265 change_lists[0]->mutable_entries()->push_back(entry); | 265 change_lists[0]->mutable_entries()->push_back(entry); |
| 266 change_lists[0]->mutable_parent_resource_ids()->push_back( | 266 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 267 "folder:sub_dir_folder_2_self_link"); | 267 "sub_dir_folder_2_self_link"); |
| 268 | 268 |
| 269 change_lists[0]->set_largest_changestamp(16809); | 269 change_lists[0]->set_largest_changestamp(16809); |
| 270 | 270 |
| 271 // Apply the changelist and check the effect. | 271 // Apply the changelist and check the effect. |
| 272 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 272 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 273 | 273 |
| 274 FileChange changed_files; | 274 FileChange changed_files; |
| 275 EXPECT_EQ(FILE_ERROR_OK, | 275 EXPECT_EQ(FILE_ERROR_OK, |
| 276 ApplyChangeList(change_lists.Pass(), &changed_files)); | 276 ApplyChangeList(change_lists.Pass(), &changed_files)); |
| 277 | 277 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 291 "drive/root/Directory 2 excludeDir-test"))); | 291 "drive/root/Directory 2 excludeDir-test"))); |
| 292 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe( | 292 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe( |
| 293 "drive/root/Directory 2 excludeDir-test/Directory 1"))); | 293 "drive/root/Directory 2 excludeDir-test/Directory 1"))); |
| 294 } | 294 } |
| 295 | 295 |
| 296 TEST_F(ChangeListProcessorTest, DeltaFileMovedFromDirectoryToRoot) { | 296 TEST_F(ChangeListProcessorTest, DeltaFileMovedFromDirectoryToRoot) { |
| 297 ScopedVector<ChangeList> change_lists; | 297 ScopedVector<ChangeList> change_lists; |
| 298 change_lists.push_back(new ChangeList); | 298 change_lists.push_back(new ChangeList); |
| 299 | 299 |
| 300 ResourceEntry entry; | 300 ResourceEntry entry; |
| 301 entry.set_resource_id("file:subdirectory_file_1_id"); | 301 entry.set_resource_id("subdirectory_file_1_id"); |
| 302 entry.set_title("SubDirectory File 1.txt"); | 302 entry.set_title("SubDirectory File 1.txt"); |
| 303 change_lists[0]->mutable_entries()->push_back(entry); | 303 change_lists[0]->mutable_entries()->push_back(entry); |
| 304 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); | 304 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); |
| 305 | 305 |
| 306 change_lists[0]->set_largest_changestamp(16815); | 306 change_lists[0]->set_largest_changestamp(16815); |
| 307 | 307 |
| 308 // Apply the changelist and check the effect. | 308 // Apply the changelist and check the effect. |
| 309 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 309 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 310 FileChange changed_files; | 310 FileChange changed_files; |
| 311 EXPECT_EQ(FILE_ERROR_OK, | 311 EXPECT_EQ(FILE_ERROR_OK, |
| (...skipping 11 matching lines...) Expand all Loading... |
| 323 base::FilePath::FromUTF8Unsafe("drive/root/SubDirectory File 1.txt"))); | 323 base::FilePath::FromUTF8Unsafe("drive/root/SubDirectory File 1.txt"))); |
| 324 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe( | 324 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe( |
| 325 "drive/root/Directory 1/SubDirectory File 1.txt"))); | 325 "drive/root/Directory 1/SubDirectory File 1.txt"))); |
| 326 } | 326 } |
| 327 | 327 |
| 328 TEST_F(ChangeListProcessorTest, DeltaFileRenamedInDirectory) { | 328 TEST_F(ChangeListProcessorTest, DeltaFileRenamedInDirectory) { |
| 329 ScopedVector<ChangeList> change_lists; | 329 ScopedVector<ChangeList> change_lists; |
| 330 change_lists.push_back(new ChangeList); | 330 change_lists.push_back(new ChangeList); |
| 331 | 331 |
| 332 ResourceEntry entry; | 332 ResourceEntry entry; |
| 333 entry.set_resource_id("file:subdirectory_file_1_id"); | 333 entry.set_resource_id("subdirectory_file_1_id"); |
| 334 entry.set_title("New SubDirectory File 1.txt"); | 334 entry.set_title("New SubDirectory File 1.txt"); |
| 335 change_lists[0]->mutable_entries()->push_back(entry); | 335 change_lists[0]->mutable_entries()->push_back(entry); |
| 336 change_lists[0]->mutable_parent_resource_ids()->push_back( | 336 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 337 "folder:1_folder_resource_id"); | 337 "1_folder_resource_id"); |
| 338 | 338 |
| 339 change_lists[0]->set_largest_changestamp(16767); | 339 change_lists[0]->set_largest_changestamp(16767); |
| 340 | 340 |
| 341 // Apply the changelist and check the effect. | 341 // Apply the changelist and check the effect. |
| 342 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 342 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 343 FileChange changed_files; | 343 FileChange changed_files; |
| 344 EXPECT_EQ(FILE_ERROR_OK, | 344 EXPECT_EQ(FILE_ERROR_OK, |
| 345 ApplyChangeList(change_lists.Pass(), &changed_files)); | 345 ApplyChangeList(change_lists.Pass(), &changed_files)); |
| 346 | 346 |
| 347 int64 changestamp = 0; | 347 int64 changestamp = 0; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 358 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe( | 358 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe( |
| 359 "drive/root/Directory 1/New SubDirectory File 1.txt"))); | 359 "drive/root/Directory 1/New SubDirectory File 1.txt"))); |
| 360 } | 360 } |
| 361 | 361 |
| 362 TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileInRoot) { | 362 TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileInRoot) { |
| 363 // Create ChangeList to add a file. | 363 // Create ChangeList to add a file. |
| 364 ScopedVector<ChangeList> change_lists; | 364 ScopedVector<ChangeList> change_lists; |
| 365 change_lists.push_back(new ChangeList); | 365 change_lists.push_back(new ChangeList); |
| 366 | 366 |
| 367 ResourceEntry entry; | 367 ResourceEntry entry; |
| 368 entry.set_resource_id("document:added_in_root_id"); | 368 entry.set_resource_id("added_in_root_id"); |
| 369 entry.set_title("Added file.txt"); | 369 entry.set_title("Added file.txt"); |
| 370 change_lists[0]->mutable_entries()->push_back(entry); | 370 change_lists[0]->mutable_entries()->push_back(entry); |
| 371 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); | 371 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); |
| 372 | 372 |
| 373 change_lists[0]->set_largest_changestamp(16683); | 373 change_lists[0]->set_largest_changestamp(16683); |
| 374 | 374 |
| 375 // Apply. | 375 // Apply. |
| 376 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 376 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 377 FileChange changed_files; | 377 FileChange changed_files; |
| 378 EXPECT_EQ(FILE_ERROR_OK, | 378 EXPECT_EQ(FILE_ERROR_OK, |
| (...skipping 27 matching lines...) Expand all Loading... |
| 406 base::FilePath::FromUTF8Unsafe("drive/root/Added file.txt"))); | 406 base::FilePath::FromUTF8Unsafe("drive/root/Added file.txt"))); |
| 407 } | 407 } |
| 408 | 408 |
| 409 | 409 |
| 410 TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileFromExistingDirectory) { | 410 TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileFromExistingDirectory) { |
| 411 // Create ChangeList to add a file. | 411 // Create ChangeList to add a file. |
| 412 ScopedVector<ChangeList> change_lists; | 412 ScopedVector<ChangeList> change_lists; |
| 413 change_lists.push_back(new ChangeList); | 413 change_lists.push_back(new ChangeList); |
| 414 | 414 |
| 415 ResourceEntry entry; | 415 ResourceEntry entry; |
| 416 entry.set_resource_id("document:added_in_root_id"); | 416 entry.set_resource_id("added_in_root_id"); |
| 417 entry.set_title("Added file.txt"); | 417 entry.set_title("Added file.txt"); |
| 418 change_lists[0]->mutable_entries()->push_back(entry); | 418 change_lists[0]->mutable_entries()->push_back(entry); |
| 419 change_lists[0]->mutable_parent_resource_ids()->push_back( | 419 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 420 "folder:1_folder_resource_id"); | 420 "1_folder_resource_id"); |
| 421 | 421 |
| 422 change_lists[0]->set_largest_changestamp(16730); | 422 change_lists[0]->set_largest_changestamp(16730); |
| 423 | 423 |
| 424 // Apply. | 424 // Apply. |
| 425 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 425 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 426 FileChange changed_files; | 426 FileChange changed_files; |
| 427 EXPECT_EQ(FILE_ERROR_OK, | 427 EXPECT_EQ(FILE_ERROR_OK, |
| 428 ApplyChangeList(change_lists.Pass(), &changed_files)); | 428 ApplyChangeList(change_lists.Pass(), &changed_files)); |
| 429 int64 changestamp = 0; | 429 int64 changestamp = 0; |
| 430 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); | 430 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); |
| 431 EXPECT_EQ(16730, changestamp); | 431 EXPECT_EQ(16730, changestamp); |
| 432 EXPECT_TRUE(GetResourceEntry("drive/root/Directory 1/Added file.txt")); | 432 EXPECT_TRUE(GetResourceEntry("drive/root/Directory 1/Added file.txt")); |
| 433 | 433 |
| 434 EXPECT_EQ(1U, changed_files.size()); | 434 EXPECT_EQ(1U, changed_files.size()); |
| 435 EXPECT_TRUE(changed_files.count( | 435 EXPECT_TRUE(changed_files.count( |
| 436 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1/Added file.txt"))); | 436 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1/Added file.txt"))); |
| 437 | 437 |
| 438 // Create ChangeList to delete the file. | 438 // Create ChangeList to delete the file. |
| 439 change_lists.push_back(new ChangeList); | 439 change_lists.push_back(new ChangeList); |
| 440 | 440 |
| 441 entry.set_deleted(true); | 441 entry.set_deleted(true); |
| 442 change_lists[0]->mutable_entries()->push_back(entry); | 442 change_lists[0]->mutable_entries()->push_back(entry); |
| 443 change_lists[0]->mutable_parent_resource_ids()->push_back( | 443 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 444 "folder:1_folder_resource_id"); | 444 "1_folder_resource_id"); |
| 445 | 445 |
| 446 change_lists[0]->set_largest_changestamp(16770); | 446 change_lists[0]->set_largest_changestamp(16770); |
| 447 | 447 |
| 448 // Apply. | 448 // Apply. |
| 449 EXPECT_EQ(FILE_ERROR_OK, | 449 EXPECT_EQ(FILE_ERROR_OK, |
| 450 ApplyChangeList(change_lists.Pass(), &changed_files)); | 450 ApplyChangeList(change_lists.Pass(), &changed_files)); |
| 451 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); | 451 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); |
| 452 EXPECT_EQ(16770, changestamp); | 452 EXPECT_EQ(16770, changestamp); |
| 453 EXPECT_FALSE(GetResourceEntry("drive/root/Directory 1/Added file.txt")); | 453 EXPECT_FALSE(GetResourceEntry("drive/root/Directory 1/Added file.txt")); |
| 454 | 454 |
| 455 EXPECT_EQ(1U, changed_files.size()); | 455 EXPECT_EQ(1U, changed_files.size()); |
| 456 EXPECT_TRUE(changed_files.count( | 456 EXPECT_TRUE(changed_files.count( |
| 457 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1/Added file.txt"))); | 457 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1/Added file.txt"))); |
| 458 } | 458 } |
| 459 | 459 |
| 460 TEST_F(ChangeListProcessorTest, DeltaAddFileToNewButDeletedDirectory) { | 460 TEST_F(ChangeListProcessorTest, DeltaAddFileToNewButDeletedDirectory) { |
| 461 // Create a change which contains the following updates: | 461 // Create a change which contains the following updates: |
| 462 // 1) A new PDF file is added to a new directory | 462 // 1) A new PDF file is added to a new directory |
| 463 // 2) but the new directory is marked "deleted" (i.e. moved to Trash) | 463 // 2) but the new directory is marked "deleted" (i.e. moved to Trash) |
| 464 // Hence, the PDF file should be just ignored. | 464 // Hence, the PDF file should be just ignored. |
| 465 ScopedVector<ChangeList> change_lists; | 465 ScopedVector<ChangeList> change_lists; |
| 466 change_lists.push_back(new ChangeList); | 466 change_lists.push_back(new ChangeList); |
| 467 | 467 |
| 468 ResourceEntry file; | 468 ResourceEntry file; |
| 469 file.set_resource_id("pdf:file_added_in_deleted_id"); | 469 file.set_resource_id("file_added_in_deleted_id"); |
| 470 file.set_title("new_pdf_file.pdf"); | 470 file.set_title("new_pdf_file.pdf"); |
| 471 file.set_deleted(true); | 471 file.set_deleted(true); |
| 472 change_lists[0]->mutable_entries()->push_back(file); | 472 change_lists[0]->mutable_entries()->push_back(file); |
| 473 change_lists[0]->mutable_parent_resource_ids()->push_back( | 473 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 474 "folder:new_folder_resource_id"); | 474 "new_folder_resource_id"); |
| 475 | 475 |
| 476 ResourceEntry directory; | 476 ResourceEntry directory; |
| 477 directory.set_resource_id("folder:new_folder_resource_id"); | 477 directory.set_resource_id("new_folder_resource_id"); |
| 478 directory.set_title("New Directory"); | 478 directory.set_title("New Directory"); |
| 479 directory.mutable_file_info()->set_is_directory(true); | 479 directory.mutable_file_info()->set_is_directory(true); |
| 480 directory.set_deleted(true); | 480 directory.set_deleted(true); |
| 481 change_lists[0]->mutable_entries()->push_back(directory); | 481 change_lists[0]->mutable_entries()->push_back(directory); |
| 482 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); | 482 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); |
| 483 | 483 |
| 484 change_lists[0]->set_largest_changestamp(16730); | 484 change_lists[0]->set_largest_changestamp(16730); |
| 485 | 485 |
| 486 // Apply the changelist and check the effect. | 486 // Apply the changelist and check the effect. |
| 487 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 487 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 640 ApplyChangeList(change_lists.Pass(), &changed_files)); | 640 ApplyChangeList(change_lists.Pass(), &changed_files)); |
| 641 | 641 |
| 642 // The change is rejected due to the old modification date. | 642 // The change is rejected due to the old modification date. |
| 643 ResourceEntry entry; | 643 ResourceEntry entry; |
| 644 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryById(local_id, &entry)); | 644 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryById(local_id, &entry)); |
| 645 EXPECT_EQ(new_file_local.title(), entry.title()); | 645 EXPECT_EQ(new_file_local.title(), entry.title()); |
| 646 } | 646 } |
| 647 | 647 |
| 648 } // namespace internal | 648 } // namespace internal |
| 649 } // namespace drive | 649 } // namespace drive |
| OLD | NEW |