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 |