OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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" |
11 #include "chrome/browser/chromeos/drive/file_system_util.h" | 11 #include "chrome/browser/chromeos/drive/file_system_util.h" |
12 #include "chrome/browser/chromeos/drive/resource_metadata.h" | 12 #include "chrome/browser/chromeos/drive/resource_metadata.h" |
13 #include "chrome/browser/chromeos/drive/test_util.h" | 13 #include "chrome/browser/chromeos/drive/test_util.h" |
14 #include "chrome/browser/google_apis/drive_api_parser.h" | 14 #include "chrome/browser/google_apis/drive_api_parser.h" |
15 #include "chrome/browser/google_apis/gdata_wapi_parser.h" | 15 #include "chrome/browser/google_apis/gdata_wapi_parser.h" |
16 #include "chrome/browser/google_apis/test_util.h" | 16 #include "chrome/browser/google_apis/test_util.h" |
17 #include "content/public/test/test_browser_thread_bundle.h" | 17 #include "content/public/test/test_browser_thread_bundle.h" |
18 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
19 | 19 |
20 namespace drive { | 20 namespace drive { |
21 namespace internal { | 21 namespace internal { |
22 | 22 |
23 namespace { | 23 namespace { |
24 | 24 |
25 const int64 kBaseResourceListChangestamp = 123; | 25 const int64 kBaseResourceListChangestamp = 123; |
26 const char kBaseResourceListFile[] = "chromeos/gdata/root_feed.json"; | 26 const char kBaseResourceListFile[] = "gdata/root_feed.json"; |
27 | 27 |
28 enum FileOrDirectory { | 28 enum FileOrDirectory { |
29 FILE, | 29 FILE, |
30 DIRECTORY, | 30 DIRECTORY, |
31 }; | 31 }; |
32 | 32 |
33 struct EntryExpectation { | 33 struct EntryExpectation { |
34 std::string path; | 34 std::string path; |
35 std::string id; | 35 std::string id; |
36 std::string parent_id; | 36 std::string parent_id; |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 EXPECT_EQ(kExpected[i].parent_id, entry->parent_resource_id()); | 158 EXPECT_EQ(kExpected[i].parent_id, entry->parent_resource_id()); |
159 EXPECT_EQ(kExpected[i].type, | 159 EXPECT_EQ(kExpected[i].type, |
160 entry->file_info().is_directory() ? DIRECTORY : FILE); | 160 entry->file_info().is_directory() ? DIRECTORY : FILE); |
161 } | 161 } |
162 | 162 |
163 EXPECT_EQ(kBaseResourceListChangestamp, metadata_->GetLargestChangestamp()); | 163 EXPECT_EQ(kBaseResourceListChangestamp, metadata_->GetLargestChangestamp()); |
164 } | 164 } |
165 | 165 |
166 TEST_F(ChangeListProcessorTest, DeltaFileAddedInNewDirectory) { | 166 TEST_F(ChangeListProcessorTest, DeltaFileAddedInNewDirectory) { |
167 const char kTestJson[] = | 167 const char kTestJson[] = |
168 "chromeos/gdata/delta_file_added_in_new_directory.json"; | 168 "gdata/delta_file_added_in_new_directory.json"; |
169 | 169 |
170 ChangeListProcessor::ResourceEntryMap entry_map; | 170 ChangeListProcessor::ResourceEntryMap entry_map; |
171 ChangeListProcessor::ConvertToMap( | 171 ChangeListProcessor::ConvertToMap( |
172 ParseChangeList(kTestJson), &entry_map, NULL); | 172 ParseChangeList(kTestJson), &entry_map, NULL); |
173 | 173 |
174 const std::string kRootId("fake_root"); | 174 const std::string kRootId("fake_root"); |
175 const std::string kNewFolderId("folder:new_folder_resource_id"); | 175 const std::string kNewFolderId("folder:new_folder_resource_id"); |
176 const std::string kNewFileId("document:file_added_in_new_dir_id"); | 176 const std::string kNewFileId("document:file_added_in_new_dir_id"); |
177 | 177 |
178 // Check the content of parsed ResourceEntryMap. | 178 // Check the content of parsed ResourceEntryMap. |
(...skipping 20 matching lines...) Expand all Loading... |
199 | 199 |
200 EXPECT_EQ(2U, changed_dirs.size()); | 200 EXPECT_EQ(2U, changed_dirs.size()); |
201 EXPECT_TRUE(changed_dirs.count( | 201 EXPECT_TRUE(changed_dirs.count( |
202 base::FilePath::FromUTF8Unsafe("drive/root"))); | 202 base::FilePath::FromUTF8Unsafe("drive/root"))); |
203 EXPECT_TRUE(changed_dirs.count( | 203 EXPECT_TRUE(changed_dirs.count( |
204 base::FilePath::FromUTF8Unsafe("drive/root/New Directory"))); | 204 base::FilePath::FromUTF8Unsafe("drive/root/New Directory"))); |
205 } | 205 } |
206 | 206 |
207 TEST_F(ChangeListProcessorTest, DeltaDirMovedFromRootToDirectory) { | 207 TEST_F(ChangeListProcessorTest, DeltaDirMovedFromRootToDirectory) { |
208 const char kTestJson[] = | 208 const char kTestJson[] = |
209 "chromeos/gdata/delta_dir_moved_from_root_to_directory.json"; | 209 "gdata/delta_dir_moved_from_root_to_directory.json"; |
210 | 210 |
211 ChangeListProcessor::ResourceEntryMap entry_map; | 211 ChangeListProcessor::ResourceEntryMap entry_map; |
212 ChangeListProcessor::ConvertToMap( | 212 ChangeListProcessor::ConvertToMap( |
213 ParseChangeList(kTestJson), &entry_map, NULL); | 213 ParseChangeList(kTestJson), &entry_map, NULL); |
214 | 214 |
215 const std::string kMovedId("folder:1_folder_resource_id"); | 215 const std::string kMovedId("folder:1_folder_resource_id"); |
216 const std::string kDestId("folder:sub_dir_folder_2_self_link"); | 216 const std::string kDestId("folder:sub_dir_folder_2_self_link"); |
217 | 217 |
218 // Check the content of parsed ResourceEntryMap. | 218 // Check the content of parsed ResourceEntryMap. |
219 EXPECT_EQ(2U, entry_map.size()); | 219 EXPECT_EQ(2U, entry_map.size()); |
(...skipping 20 matching lines...) Expand all Loading... |
240 EXPECT_TRUE(changed_dirs.count( | 240 EXPECT_TRUE(changed_dirs.count( |
241 base::FilePath::FromUTF8Unsafe( | 241 base::FilePath::FromUTF8Unsafe( |
242 "drive/root/Directory 2 excludeDir-test"))); | 242 "drive/root/Directory 2 excludeDir-test"))); |
243 EXPECT_TRUE(changed_dirs.count( | 243 EXPECT_TRUE(changed_dirs.count( |
244 base::FilePath::FromUTF8Unsafe( | 244 base::FilePath::FromUTF8Unsafe( |
245 "drive/root/Directory 2 excludeDir-test/Directory 1"))); | 245 "drive/root/Directory 2 excludeDir-test/Directory 1"))); |
246 } | 246 } |
247 | 247 |
248 TEST_F(ChangeListProcessorTest, DeltaFileMovedFromDirectoryToRoot) { | 248 TEST_F(ChangeListProcessorTest, DeltaFileMovedFromDirectoryToRoot) { |
249 const char kTestJson[] = | 249 const char kTestJson[] = |
250 "chromeos/gdata/delta_file_moved_from_directory_to_root.json"; | 250 "gdata/delta_file_moved_from_directory_to_root.json"; |
251 | 251 |
252 ChangeListProcessor::ResourceEntryMap entry_map; | 252 ChangeListProcessor::ResourceEntryMap entry_map; |
253 ChangeListProcessor::ConvertToMap( | 253 ChangeListProcessor::ConvertToMap( |
254 ParseChangeList(kTestJson), &entry_map, NULL); | 254 ParseChangeList(kTestJson), &entry_map, NULL); |
255 | 255 |
256 const std::string kRootId("fake_root"); | 256 const std::string kRootId("fake_root"); |
257 const std::string kMovedId("file:subdirectory_file_1_id"); | 257 const std::string kMovedId("file:subdirectory_file_1_id"); |
258 const std::string kSrcId("folder:1_folder_resource_id"); | 258 const std::string kSrcId("folder:1_folder_resource_id"); |
259 | 259 |
260 // Check the content of parsed ResourceEntryMap. | 260 // Check the content of parsed ResourceEntryMap. |
(...skipping 15 matching lines...) Expand all Loading... |
276 | 276 |
277 EXPECT_EQ(2U, changed_dirs.size()); | 277 EXPECT_EQ(2U, changed_dirs.size()); |
278 EXPECT_TRUE(changed_dirs.count( | 278 EXPECT_TRUE(changed_dirs.count( |
279 base::FilePath::FromUTF8Unsafe("drive/root"))); | 279 base::FilePath::FromUTF8Unsafe("drive/root"))); |
280 EXPECT_TRUE(changed_dirs.count( | 280 EXPECT_TRUE(changed_dirs.count( |
281 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"))); | 281 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"))); |
282 } | 282 } |
283 | 283 |
284 TEST_F(ChangeListProcessorTest, DeltaFileRenamedInDirectory) { | 284 TEST_F(ChangeListProcessorTest, DeltaFileRenamedInDirectory) { |
285 const char kTestJson[] = | 285 const char kTestJson[] = |
286 "chromeos/gdata/delta_file_renamed_in_directory.json"; | 286 "gdata/delta_file_renamed_in_directory.json"; |
287 | 287 |
288 ChangeListProcessor::ResourceEntryMap entry_map; | 288 ChangeListProcessor::ResourceEntryMap entry_map; |
289 ChangeListProcessor::ConvertToMap( | 289 ChangeListProcessor::ConvertToMap( |
290 ParseChangeList(kTestJson), &entry_map, NULL); | 290 ParseChangeList(kTestJson), &entry_map, NULL); |
291 | 291 |
292 const std::string kRootId("fake_root"); | 292 const std::string kRootId("fake_root"); |
293 const std::string kRenamedId("file:subdirectory_file_1_id"); | 293 const std::string kRenamedId("file:subdirectory_file_1_id"); |
294 const std::string kParentId("folder:1_folder_resource_id"); | 294 const std::string kParentId("folder:1_folder_resource_id"); |
295 | 295 |
296 // Check the content of parsed ResourceEntryMap. | 296 // Check the content of parsed ResourceEntryMap. |
(...skipping 17 matching lines...) Expand all Loading... |
314 | 314 |
315 EXPECT_EQ(2U, changed_dirs.size()); | 315 EXPECT_EQ(2U, changed_dirs.size()); |
316 EXPECT_TRUE(changed_dirs.count( | 316 EXPECT_TRUE(changed_dirs.count( |
317 base::FilePath::FromUTF8Unsafe("drive/root"))); | 317 base::FilePath::FromUTF8Unsafe("drive/root"))); |
318 EXPECT_TRUE(changed_dirs.count( | 318 EXPECT_TRUE(changed_dirs.count( |
319 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"))); | 319 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"))); |
320 } | 320 } |
321 | 321 |
322 TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileInRoot) { | 322 TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileInRoot) { |
323 const char kTestJsonAdd[] = | 323 const char kTestJsonAdd[] = |
324 "chromeos/gdata/delta_file_added_in_root.json"; | 324 "gdata/delta_file_added_in_root.json"; |
325 const char kTestJsonDelete[] = | 325 const char kTestJsonDelete[] = |
326 "chromeos/gdata/delta_file_deleted_in_root.json"; | 326 "gdata/delta_file_deleted_in_root.json"; |
327 | 327 |
328 const std::string kParentId("fake_root"); | 328 const std::string kParentId("fake_root"); |
329 const std::string kFileId("document:added_in_root_id"); | 329 const std::string kFileId("document:added_in_root_id"); |
330 | 330 |
331 ChangeListProcessor::ResourceEntryMap entry_map; | 331 ChangeListProcessor::ResourceEntryMap entry_map; |
332 | 332 |
333 // Check the content of kTestJsonAdd. | 333 // Check the content of kTestJsonAdd. |
334 ChangeListProcessor::ConvertToMap( | 334 ChangeListProcessor::ConvertToMap( |
335 ParseChangeList(kTestJsonAdd), &entry_map, NULL); | 335 ParseChangeList(kTestJsonAdd), &entry_map, NULL); |
336 EXPECT_EQ(1U, entry_map.size()); | 336 EXPECT_EQ(1U, entry_map.size()); |
(...skipping 27 matching lines...) Expand all Loading... |
364 EXPECT_EQ(16687, metadata_->GetLargestChangestamp()); | 364 EXPECT_EQ(16687, metadata_->GetLargestChangestamp()); |
365 EXPECT_FALSE(GetResourceEntry("drive/root/Added file.gdoc")); | 365 EXPECT_FALSE(GetResourceEntry("drive/root/Added file.gdoc")); |
366 EXPECT_EQ(1U, changed_dirs.size()); | 366 EXPECT_EQ(1U, changed_dirs.size()); |
367 EXPECT_TRUE(changed_dirs.count( | 367 EXPECT_TRUE(changed_dirs.count( |
368 base::FilePath::FromUTF8Unsafe("drive/root"))); | 368 base::FilePath::FromUTF8Unsafe("drive/root"))); |
369 } | 369 } |
370 | 370 |
371 | 371 |
372 TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileFromExistingDirectory) { | 372 TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileFromExistingDirectory) { |
373 const char kTestJsonAdd[] = | 373 const char kTestJsonAdd[] = |
374 "chromeos/gdata/delta_file_added_in_directory.json"; | 374 "gdata/delta_file_added_in_directory.json"; |
375 const char kTestJsonDelete[] = | 375 const char kTestJsonDelete[] = |
376 "chromeos/gdata/delta_file_deleted_in_directory.json"; | 376 "gdata/delta_file_deleted_in_directory.json"; |
377 | 377 |
378 const std::string kParentId("folder:1_folder_resource_id"); | 378 const std::string kParentId("folder:1_folder_resource_id"); |
379 const std::string kFileId("document:added_in_root_id"); | 379 const std::string kFileId("document:added_in_root_id"); |
380 | 380 |
381 ChangeListProcessor::ResourceEntryMap entry_map; | 381 ChangeListProcessor::ResourceEntryMap entry_map; |
382 | 382 |
383 // Check the content of kTestJsonAdd. | 383 // Check the content of kTestJsonAdd. |
384 ChangeListProcessor::ConvertToMap( | 384 ChangeListProcessor::ConvertToMap( |
385 ParseChangeList(kTestJsonAdd), &entry_map, NULL); | 385 ParseChangeList(kTestJsonAdd), &entry_map, NULL); |
386 EXPECT_EQ(2U, entry_map.size()); | 386 EXPECT_EQ(2U, entry_map.size()); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
422 EXPECT_TRUE(changed_dirs.count( | 422 EXPECT_TRUE(changed_dirs.count( |
423 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"))); | 423 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"))); |
424 } | 424 } |
425 | 425 |
426 TEST_F(ChangeListProcessorTest, DeltaAddFileToNewButDeletedDirectory) { | 426 TEST_F(ChangeListProcessorTest, DeltaAddFileToNewButDeletedDirectory) { |
427 // This file contains the following updates: | 427 // This file contains the following updates: |
428 // 1) A new PDF file is added to a new directory | 428 // 1) A new PDF file is added to a new directory |
429 // 2) but the new directory is marked "deleted" (i.e. moved to Trash) | 429 // 2) but the new directory is marked "deleted" (i.e. moved to Trash) |
430 // Hence, the PDF file should be just ignored. | 430 // Hence, the PDF file should be just ignored. |
431 const char kTestJson[] = | 431 const char kTestJson[] = |
432 "chromeos/gdata/delta_file_added_in_new_but_deleted_directory.json"; | 432 "gdata/delta_file_added_in_new_but_deleted_directory.json"; |
433 | 433 |
434 ChangeListProcessor::ResourceEntryMap entry_map; | 434 ChangeListProcessor::ResourceEntryMap entry_map; |
435 ChangeListProcessor::ConvertToMap( | 435 ChangeListProcessor::ConvertToMap( |
436 ParseChangeList(kTestJson), &entry_map, NULL); | 436 ParseChangeList(kTestJson), &entry_map, NULL); |
437 | 437 |
438 const std::string kRootId("fake_root"); | 438 const std::string kRootId("fake_root"); |
439 const std::string kDirId("folder:new_folder_resource_id"); | 439 const std::string kDirId("folder:new_folder_resource_id"); |
440 const std::string kFileId("pdf:file_added_in_deleted_dir_id"); | 440 const std::string kFileId("pdf:file_added_in_deleted_dir_id"); |
441 | 441 |
442 // Check the content of parsed ResourceEntryMap. | 442 // Check the content of parsed ResourceEntryMap. |
(...skipping 10 matching lines...) Expand all Loading... |
453 | 453 |
454 // The value is written in kTestJson. | 454 // The value is written in kTestJson. |
455 EXPECT_EQ(16730, metadata_->GetLargestChangestamp()); | 455 EXPECT_EQ(16730, metadata_->GetLargestChangestamp()); |
456 EXPECT_FALSE(GetResourceEntry("drive/root/New Directory/new_pdf_file.pdf")); | 456 EXPECT_FALSE(GetResourceEntry("drive/root/New Directory/new_pdf_file.pdf")); |
457 | 457 |
458 EXPECT_TRUE(changed_dirs.empty()); | 458 EXPECT_TRUE(changed_dirs.empty()); |
459 } | 459 } |
460 | 460 |
461 } // namespace internal | 461 } // namespace internal |
462 } // namespace drive | 462 } // namespace drive |
OLD | NEW |