| 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 "components/drive/change_list_processor.h" | 5 #include "components/drive/change_list_processor.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 #include <utility> |
| 9 | 10 |
| 10 #include "base/files/scoped_temp_dir.h" | 11 #include "base/files/scoped_temp_dir.h" |
| 11 #include "base/macros.h" | 12 #include "base/macros.h" |
| 12 #include "base/single_thread_task_runner.h" | 13 #include "base/single_thread_task_runner.h" |
| 13 #include "base/thread_task_runner_handle.h" | 14 #include "base/thread_task_runner_handle.h" |
| 14 #include "base/values.h" | 15 #include "base/values.h" |
| 15 #include "components/drive/drive.pb.h" | 16 #include "components/drive/drive.pb.h" |
| 16 #include "components/drive/drive_test_util.h" | 17 #include "components/drive/drive_test_util.h" |
| 17 #include "components/drive/fake_free_disk_space_getter.h" | 18 #include "components/drive/fake_free_disk_space_getter.h" |
| 18 #include "components/drive/file_cache.h" | 19 #include "components/drive/file_cache.h" |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 change_lists[0]->mutable_entries()->push_back(file); | 92 change_lists[0]->mutable_entries()->push_back(file); |
| 92 change_lists[0]->mutable_parent_resource_ids()->push_back( | 93 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 93 "1_folder_resource_id"); | 94 "1_folder_resource_id"); |
| 94 | 95 |
| 95 file.set_title("Orphan File 1.txt"); | 96 file.set_title("Orphan File 1.txt"); |
| 96 file.set_resource_id("1_orphanfile_resource_id"); | 97 file.set_resource_id("1_orphanfile_resource_id"); |
| 97 change_lists[0]->mutable_entries()->push_back(file); | 98 change_lists[0]->mutable_entries()->push_back(file); |
| 98 change_lists[0]->mutable_parent_resource_ids()->push_back(""); | 99 change_lists[0]->mutable_parent_resource_ids()->push_back(""); |
| 99 | 100 |
| 100 change_lists[0]->set_largest_changestamp(kBaseResourceListChangestamp); | 101 change_lists[0]->set_largest_changestamp(kBaseResourceListChangestamp); |
| 101 return change_lists.Pass(); | 102 return change_lists; |
| 102 } | 103 } |
| 103 | 104 |
| 104 class ChangeListProcessorTest : public testing::Test { | 105 class ChangeListProcessorTest : public testing::Test { |
| 105 protected: | 106 protected: |
| 106 void SetUp() override { | 107 void SetUp() override { |
| 107 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 108 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
| 108 | 109 |
| 109 metadata_storage_.reset(new ResourceMetadataStorage( | 110 metadata_storage_.reset(new ResourceMetadataStorage( |
| 110 temp_dir_.path(), base::ThreadTaskRunnerHandle::Get().get())); | 111 temp_dir_.path(), base::ThreadTaskRunnerHandle::Get().get())); |
| 111 ASSERT_TRUE(metadata_storage_->Initialize()); | 112 ASSERT_TRUE(metadata_storage_->Initialize()); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 125 | 126 |
| 126 // Applies the |changes| to |metadata_| as a full resource list of changestamp | 127 // Applies the |changes| to |metadata_| as a full resource list of changestamp |
| 127 // |kBaseResourceListChangestamp|. | 128 // |kBaseResourceListChangestamp|. |
| 128 FileError ApplyFullResourceList(ScopedVector<ChangeList> changes) { | 129 FileError ApplyFullResourceList(ScopedVector<ChangeList> changes) { |
| 129 scoped_ptr<google_apis::AboutResource> about_resource( | 130 scoped_ptr<google_apis::AboutResource> about_resource( |
| 130 new google_apis::AboutResource); | 131 new google_apis::AboutResource); |
| 131 about_resource->set_largest_change_id(kBaseResourceListChangestamp); | 132 about_resource->set_largest_change_id(kBaseResourceListChangestamp); |
| 132 about_resource->set_root_folder_id(kRootId); | 133 about_resource->set_root_folder_id(kRootId); |
| 133 | 134 |
| 134 ChangeListProcessor processor(metadata_.get(), nullptr); | 135 ChangeListProcessor processor(metadata_.get(), nullptr); |
| 135 return processor.Apply(about_resource.Pass(), | 136 return processor.Apply(std::move(about_resource), std::move(changes), |
| 136 changes.Pass(), | |
| 137 false /* is_delta_update */); | 137 false /* is_delta_update */); |
| 138 } | 138 } |
| 139 | 139 |
| 140 // Applies the |changes| to |metadata_| as a delta update. Delta changelists | 140 // Applies the |changes| to |metadata_| as a delta update. Delta changelists |
| 141 // should contain their changestamp in themselves. | 141 // should contain their changestamp in themselves. |
| 142 FileError ApplyChangeList(ScopedVector<ChangeList> changes, | 142 FileError ApplyChangeList(ScopedVector<ChangeList> changes, |
| 143 FileChange* changed_files) { | 143 FileChange* changed_files) { |
| 144 scoped_ptr<google_apis::AboutResource> about_resource( | 144 scoped_ptr<google_apis::AboutResource> about_resource( |
| 145 new google_apis::AboutResource); | 145 new google_apis::AboutResource); |
| 146 about_resource->set_largest_change_id(kBaseResourceListChangestamp); | 146 about_resource->set_largest_change_id(kBaseResourceListChangestamp); |
| 147 about_resource->set_root_folder_id(kRootId); | 147 about_resource->set_root_folder_id(kRootId); |
| 148 | 148 |
| 149 ChangeListProcessor processor(metadata_.get(), nullptr); | 149 ChangeListProcessor processor(metadata_.get(), nullptr); |
| 150 FileError error = processor.Apply(about_resource.Pass(), | 150 FileError error = |
| 151 changes.Pass(), | 151 processor.Apply(std::move(about_resource), std::move(changes), |
| 152 true /* is_delta_update */); | 152 true /* is_delta_update */); |
| 153 *changed_files = processor.changed_files(); | 153 *changed_files = processor.changed_files(); |
| 154 return error; | 154 return error; |
| 155 } | 155 } |
| 156 | 156 |
| 157 // Gets the resource entry for the path from |metadata_| synchronously. | 157 // Gets the resource entry for the path from |metadata_| synchronously. |
| 158 // Returns null if the entry does not exist. | 158 // Returns null if the entry does not exist. |
| 159 scoped_ptr<ResourceEntry> GetResourceEntry(const std::string& path) { | 159 scoped_ptr<ResourceEntry> GetResourceEntry(const std::string& path) { |
| 160 scoped_ptr<ResourceEntry> entry(new ResourceEntry); | 160 scoped_ptr<ResourceEntry> entry(new ResourceEntry); |
| 161 FileError error = metadata_->GetResourceEntryByPath( | 161 FileError error = metadata_->GetResourceEntryByPath( |
| 162 base::FilePath::FromUTF8Unsafe(path), entry.get()); | 162 base::FilePath::FromUTF8Unsafe(path), entry.get()); |
| 163 if (error != FILE_ERROR_OK) | 163 if (error != FILE_ERROR_OK) |
| 164 entry.reset(); | 164 entry.reset(); |
| 165 return entry.Pass(); | 165 return entry; |
| 166 } | 166 } |
| 167 | 167 |
| 168 content::TestBrowserThreadBundle thread_bundle_; | 168 content::TestBrowserThreadBundle thread_bundle_; |
| 169 base::ScopedTempDir temp_dir_; | 169 base::ScopedTempDir temp_dir_; |
| 170 scoped_ptr<ResourceMetadataStorage, | 170 scoped_ptr<ResourceMetadataStorage, |
| 171 test_util::DestroyHelperForTests> metadata_storage_; | 171 test_util::DestroyHelperForTests> metadata_storage_; |
| 172 scoped_ptr<FakeFreeDiskSpaceGetter> fake_free_disk_space_getter_; | 172 scoped_ptr<FakeFreeDiskSpaceGetter> fake_free_disk_space_getter_; |
| 173 scoped_ptr<FileCache, test_util::DestroyHelperForTests> cache_; | 173 scoped_ptr<FileCache, test_util::DestroyHelperForTests> cache_; |
| 174 scoped_ptr<ResourceMetadata, test_util::DestroyHelperForTests> metadata_; | 174 scoped_ptr<ResourceMetadata, test_util::DestroyHelperForTests> metadata_; |
| 175 }; | 175 }; |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 change_lists[0]->mutable_parent_resource_ids()->push_back( | 239 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 240 new_folder.resource_id()); | 240 new_folder.resource_id()); |
| 241 | 241 |
| 242 change_lists[0]->set_largest_changestamp(16730); | 242 change_lists[0]->set_largest_changestamp(16730); |
| 243 | 243 |
| 244 // Apply the changelist and check the effect. | 244 // Apply the changelist and check the effect. |
| 245 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 245 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 246 | 246 |
| 247 FileChange changed_files; | 247 FileChange changed_files; |
| 248 EXPECT_EQ(FILE_ERROR_OK, | 248 EXPECT_EQ(FILE_ERROR_OK, |
| 249 ApplyChangeList(change_lists.Pass(), &changed_files)); | 249 ApplyChangeList(std::move(change_lists), &changed_files)); |
| 250 | 250 |
| 251 int64_t changestamp = 0; | 251 int64_t changestamp = 0; |
| 252 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); | 252 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); |
| 253 EXPECT_EQ(16730, changestamp); | 253 EXPECT_EQ(16730, changestamp); |
| 254 EXPECT_TRUE(GetResourceEntry("drive/root/New Directory")); | 254 EXPECT_TRUE(GetResourceEntry("drive/root/New Directory")); |
| 255 EXPECT_TRUE(GetResourceEntry( | 255 EXPECT_TRUE(GetResourceEntry( |
| 256 "drive/root/New Directory/File in new dir.txt")); | 256 "drive/root/New Directory/File in new dir.txt")); |
| 257 | 257 |
| 258 EXPECT_EQ(2U, changed_files.size()); | 258 EXPECT_EQ(2U, changed_files.size()); |
| 259 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe( | 259 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe( |
| (...skipping 14 matching lines...) Expand all Loading... |
| 274 change_lists[0]->mutable_parent_resource_ids()->push_back( | 274 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 275 "sub_dir_folder_2_self_link"); | 275 "sub_dir_folder_2_self_link"); |
| 276 | 276 |
| 277 change_lists[0]->set_largest_changestamp(16809); | 277 change_lists[0]->set_largest_changestamp(16809); |
| 278 | 278 |
| 279 // Apply the changelist and check the effect. | 279 // Apply the changelist and check the effect. |
| 280 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 280 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 281 | 281 |
| 282 FileChange changed_files; | 282 FileChange changed_files; |
| 283 EXPECT_EQ(FILE_ERROR_OK, | 283 EXPECT_EQ(FILE_ERROR_OK, |
| 284 ApplyChangeList(change_lists.Pass(), &changed_files)); | 284 ApplyChangeList(std::move(change_lists), &changed_files)); |
| 285 | 285 |
| 286 int64_t changestamp = 0; | 286 int64_t changestamp = 0; |
| 287 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); | 287 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); |
| 288 EXPECT_EQ(16809, changestamp); | 288 EXPECT_EQ(16809, changestamp); |
| 289 EXPECT_FALSE(GetResourceEntry("drive/root/Directory 1")); | 289 EXPECT_FALSE(GetResourceEntry("drive/root/Directory 1")); |
| 290 EXPECT_TRUE(GetResourceEntry( | 290 EXPECT_TRUE(GetResourceEntry( |
| 291 "drive/root/Directory 2 excludeDir-test/Directory 1")); | 291 "drive/root/Directory 2 excludeDir-test/Directory 1")); |
| 292 | 292 |
| 293 EXPECT_EQ(2U, changed_files.size()); | 293 EXPECT_EQ(2U, changed_files.size()); |
| 294 EXPECT_TRUE(changed_files.CountDirectory( | 294 EXPECT_TRUE(changed_files.CountDirectory( |
| (...skipping 15 matching lines...) Expand all Loading... |
| 310 entry.set_title("SubDirectory File 1.txt"); | 310 entry.set_title("SubDirectory File 1.txt"); |
| 311 change_lists[0]->mutable_entries()->push_back(entry); | 311 change_lists[0]->mutable_entries()->push_back(entry); |
| 312 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); | 312 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); |
| 313 | 313 |
| 314 change_lists[0]->set_largest_changestamp(16815); | 314 change_lists[0]->set_largest_changestamp(16815); |
| 315 | 315 |
| 316 // Apply the changelist and check the effect. | 316 // Apply the changelist and check the effect. |
| 317 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 317 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 318 FileChange changed_files; | 318 FileChange changed_files; |
| 319 EXPECT_EQ(FILE_ERROR_OK, | 319 EXPECT_EQ(FILE_ERROR_OK, |
| 320 ApplyChangeList(change_lists.Pass(), &changed_files)); | 320 ApplyChangeList(std::move(change_lists), &changed_files)); |
| 321 | 321 |
| 322 int64_t changestamp = 0; | 322 int64_t changestamp = 0; |
| 323 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); | 323 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); |
| 324 EXPECT_EQ(16815, changestamp); | 324 EXPECT_EQ(16815, changestamp); |
| 325 EXPECT_FALSE(GetResourceEntry( | 325 EXPECT_FALSE(GetResourceEntry( |
| 326 "drive/root/Directory 1/SubDirectory File 1.txt")); | 326 "drive/root/Directory 1/SubDirectory File 1.txt")); |
| 327 EXPECT_TRUE(GetResourceEntry("drive/root/SubDirectory File 1.txt")); | 327 EXPECT_TRUE(GetResourceEntry("drive/root/SubDirectory File 1.txt")); |
| 328 | 328 |
| 329 EXPECT_EQ(2U, changed_files.size()); | 329 EXPECT_EQ(2U, changed_files.size()); |
| 330 EXPECT_TRUE(changed_files.count( | 330 EXPECT_TRUE(changed_files.count( |
| (...skipping 12 matching lines...) Expand all Loading... |
| 343 change_lists[0]->mutable_entries()->push_back(entry); | 343 change_lists[0]->mutable_entries()->push_back(entry); |
| 344 change_lists[0]->mutable_parent_resource_ids()->push_back( | 344 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 345 "1_folder_resource_id"); | 345 "1_folder_resource_id"); |
| 346 | 346 |
| 347 change_lists[0]->set_largest_changestamp(16767); | 347 change_lists[0]->set_largest_changestamp(16767); |
| 348 | 348 |
| 349 // Apply the changelist and check the effect. | 349 // Apply the changelist and check the effect. |
| 350 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 350 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 351 FileChange changed_files; | 351 FileChange changed_files; |
| 352 EXPECT_EQ(FILE_ERROR_OK, | 352 EXPECT_EQ(FILE_ERROR_OK, |
| 353 ApplyChangeList(change_lists.Pass(), &changed_files)); | 353 ApplyChangeList(std::move(change_lists), &changed_files)); |
| 354 EXPECT_EQ(2U, changed_files.size()); | 354 EXPECT_EQ(2U, changed_files.size()); |
| 355 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe( | 355 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe( |
| 356 "drive/root/Directory 1/SubDirectory File 1.txt"))); | 356 "drive/root/Directory 1/SubDirectory File 1.txt"))); |
| 357 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe( | 357 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe( |
| 358 "drive/root/Directory 1/New SubDirectory File 1.txt"))); | 358 "drive/root/Directory 1/New SubDirectory File 1.txt"))); |
| 359 | 359 |
| 360 int64_t changestamp = 0; | 360 int64_t changestamp = 0; |
| 361 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); | 361 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); |
| 362 EXPECT_EQ(16767, changestamp); | 362 EXPECT_EQ(16767, changestamp); |
| 363 EXPECT_FALSE(GetResourceEntry( | 363 EXPECT_FALSE(GetResourceEntry( |
| (...skipping 18 matching lines...) Expand all Loading... |
| 382 entry.set_title("Added file.txt"); | 382 entry.set_title("Added file.txt"); |
| 383 change_lists[0]->mutable_entries()->push_back(entry); | 383 change_lists[0]->mutable_entries()->push_back(entry); |
| 384 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); | 384 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); |
| 385 | 385 |
| 386 change_lists[0]->set_largest_changestamp(16683); | 386 change_lists[0]->set_largest_changestamp(16683); |
| 387 | 387 |
| 388 // Apply. | 388 // Apply. |
| 389 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 389 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 390 FileChange changed_files; | 390 FileChange changed_files; |
| 391 EXPECT_EQ(FILE_ERROR_OK, | 391 EXPECT_EQ(FILE_ERROR_OK, |
| 392 ApplyChangeList(change_lists.Pass(), &changed_files)); | 392 ApplyChangeList(std::move(change_lists), &changed_files)); |
| 393 | 393 |
| 394 int64_t changestamp = 0; | 394 int64_t changestamp = 0; |
| 395 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); | 395 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); |
| 396 EXPECT_EQ(16683, changestamp); | 396 EXPECT_EQ(16683, changestamp); |
| 397 EXPECT_TRUE(GetResourceEntry("drive/root/Added file.txt")); | 397 EXPECT_TRUE(GetResourceEntry("drive/root/Added file.txt")); |
| 398 EXPECT_EQ(1U, changed_files.size()); | 398 EXPECT_EQ(1U, changed_files.size()); |
| 399 EXPECT_TRUE(changed_files.count( | 399 EXPECT_TRUE(changed_files.count( |
| 400 base::FilePath::FromUTF8Unsafe("drive/root/Added file.txt"))); | 400 base::FilePath::FromUTF8Unsafe("drive/root/Added file.txt"))); |
| 401 | 401 |
| 402 // Create ChangeList to delete the file. | 402 // Create ChangeList to delete the file. |
| 403 change_lists.push_back(new ChangeList); | 403 change_lists.push_back(new ChangeList); |
| 404 | 404 |
| 405 entry.set_deleted(true); | 405 entry.set_deleted(true); |
| 406 change_lists[0]->mutable_entries()->push_back(entry); | 406 change_lists[0]->mutable_entries()->push_back(entry); |
| 407 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); | 407 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); |
| 408 | 408 |
| 409 change_lists[0]->set_largest_changestamp(16687); | 409 change_lists[0]->set_largest_changestamp(16687); |
| 410 | 410 |
| 411 // Apply. | 411 // Apply. |
| 412 EXPECT_EQ(FILE_ERROR_OK, | 412 EXPECT_EQ(FILE_ERROR_OK, |
| 413 ApplyChangeList(change_lists.Pass(), &changed_files)); | 413 ApplyChangeList(std::move(change_lists), &changed_files)); |
| 414 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); | 414 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); |
| 415 EXPECT_EQ(16687, changestamp); | 415 EXPECT_EQ(16687, changestamp); |
| 416 EXPECT_FALSE(GetResourceEntry("drive/root/Added file.txt")); | 416 EXPECT_FALSE(GetResourceEntry("drive/root/Added file.txt")); |
| 417 EXPECT_EQ(1U, changed_files.size()); | 417 EXPECT_EQ(1U, changed_files.size()); |
| 418 EXPECT_TRUE(changed_files.count( | 418 EXPECT_TRUE(changed_files.count( |
| 419 base::FilePath::FromUTF8Unsafe("drive/root/Added file.txt"))); | 419 base::FilePath::FromUTF8Unsafe("drive/root/Added file.txt"))); |
| 420 } | 420 } |
| 421 | 421 |
| 422 | 422 |
| 423 TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileFromExistingDirectory) { | 423 TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileFromExistingDirectory) { |
| 424 // Create ChangeList to add a file. | 424 // Create ChangeList to add a file. |
| 425 ScopedVector<ChangeList> change_lists; | 425 ScopedVector<ChangeList> change_lists; |
| 426 change_lists.push_back(new ChangeList); | 426 change_lists.push_back(new ChangeList); |
| 427 | 427 |
| 428 ResourceEntry entry; | 428 ResourceEntry entry; |
| 429 entry.set_resource_id("added_in_root_id"); | 429 entry.set_resource_id("added_in_root_id"); |
| 430 entry.set_title("Added file.txt"); | 430 entry.set_title("Added file.txt"); |
| 431 change_lists[0]->mutable_entries()->push_back(entry); | 431 change_lists[0]->mutable_entries()->push_back(entry); |
| 432 change_lists[0]->mutable_parent_resource_ids()->push_back( | 432 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 433 "1_folder_resource_id"); | 433 "1_folder_resource_id"); |
| 434 | 434 |
| 435 change_lists[0]->set_largest_changestamp(16730); | 435 change_lists[0]->set_largest_changestamp(16730); |
| 436 | 436 |
| 437 // Apply. | 437 // Apply. |
| 438 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 438 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 439 FileChange changed_files; | 439 FileChange changed_files; |
| 440 EXPECT_EQ(FILE_ERROR_OK, | 440 EXPECT_EQ(FILE_ERROR_OK, |
| 441 ApplyChangeList(change_lists.Pass(), &changed_files)); | 441 ApplyChangeList(std::move(change_lists), &changed_files)); |
| 442 int64_t changestamp = 0; | 442 int64_t changestamp = 0; |
| 443 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); | 443 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); |
| 444 EXPECT_EQ(16730, changestamp); | 444 EXPECT_EQ(16730, changestamp); |
| 445 EXPECT_TRUE(GetResourceEntry("drive/root/Directory 1/Added file.txt")); | 445 EXPECT_TRUE(GetResourceEntry("drive/root/Directory 1/Added file.txt")); |
| 446 | 446 |
| 447 EXPECT_EQ(1U, changed_files.size()); | 447 EXPECT_EQ(1U, changed_files.size()); |
| 448 EXPECT_TRUE(changed_files.count( | 448 EXPECT_TRUE(changed_files.count( |
| 449 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1/Added file.txt"))); | 449 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1/Added file.txt"))); |
| 450 | 450 |
| 451 // Create ChangeList to delete the file. | 451 // Create ChangeList to delete the file. |
| 452 change_lists.push_back(new ChangeList); | 452 change_lists.push_back(new ChangeList); |
| 453 | 453 |
| 454 entry.set_deleted(true); | 454 entry.set_deleted(true); |
| 455 change_lists[0]->mutable_entries()->push_back(entry); | 455 change_lists[0]->mutable_entries()->push_back(entry); |
| 456 change_lists[0]->mutable_parent_resource_ids()->push_back( | 456 change_lists[0]->mutable_parent_resource_ids()->push_back( |
| 457 "1_folder_resource_id"); | 457 "1_folder_resource_id"); |
| 458 | 458 |
| 459 change_lists[0]->set_largest_changestamp(16770); | 459 change_lists[0]->set_largest_changestamp(16770); |
| 460 | 460 |
| 461 // Apply. | 461 // Apply. |
| 462 EXPECT_EQ(FILE_ERROR_OK, | 462 EXPECT_EQ(FILE_ERROR_OK, |
| 463 ApplyChangeList(change_lists.Pass(), &changed_files)); | 463 ApplyChangeList(std::move(change_lists), &changed_files)); |
| 464 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); | 464 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); |
| 465 EXPECT_EQ(16770, changestamp); | 465 EXPECT_EQ(16770, changestamp); |
| 466 EXPECT_FALSE(GetResourceEntry("drive/root/Directory 1/Added file.txt")); | 466 EXPECT_FALSE(GetResourceEntry("drive/root/Directory 1/Added file.txt")); |
| 467 | 467 |
| 468 EXPECT_EQ(1U, changed_files.size()); | 468 EXPECT_EQ(1U, changed_files.size()); |
| 469 EXPECT_TRUE(changed_files.count( | 469 EXPECT_TRUE(changed_files.count( |
| 470 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1/Added file.txt"))); | 470 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1/Added file.txt"))); |
| 471 } | 471 } |
| 472 | 472 |
| 473 TEST_F(ChangeListProcessorTest, DeltaAddFileToNewButDeletedDirectory) { | 473 TEST_F(ChangeListProcessorTest, DeltaAddFileToNewButDeletedDirectory) { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 493 directory.set_deleted(true); | 493 directory.set_deleted(true); |
| 494 change_lists[0]->mutable_entries()->push_back(directory); | 494 change_lists[0]->mutable_entries()->push_back(directory); |
| 495 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); | 495 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); |
| 496 | 496 |
| 497 change_lists[0]->set_largest_changestamp(16730); | 497 change_lists[0]->set_largest_changestamp(16730); |
| 498 | 498 |
| 499 // Apply the changelist and check the effect. | 499 // Apply the changelist and check the effect. |
| 500 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 500 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 501 FileChange changed_files; | 501 FileChange changed_files; |
| 502 EXPECT_EQ(FILE_ERROR_OK, | 502 EXPECT_EQ(FILE_ERROR_OK, |
| 503 ApplyChangeList(change_lists.Pass(), &changed_files)); | 503 ApplyChangeList(std::move(change_lists), &changed_files)); |
| 504 | 504 |
| 505 int64_t changestamp = 0; | 505 int64_t changestamp = 0; |
| 506 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); | 506 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); |
| 507 EXPECT_EQ(16730, changestamp); | 507 EXPECT_EQ(16730, changestamp); |
| 508 EXPECT_FALSE(GetResourceEntry("drive/root/New Directory/new_pdf_file.pdf")); | 508 EXPECT_FALSE(GetResourceEntry("drive/root/New Directory/new_pdf_file.pdf")); |
| 509 | 509 |
| 510 EXPECT_TRUE(changed_files.empty()); | 510 EXPECT_TRUE(changed_files.empty()); |
| 511 } | 511 } |
| 512 | 512 |
| 513 TEST_F(ChangeListProcessorTest, RefreshDirectory) { | 513 TEST_F(ChangeListProcessorTest, RefreshDirectory) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 531 dir1.set_title(dir1.title() + " (renamed)"); | 531 dir1.set_title(dir1.title() + " (renamed)"); |
| 532 change_list->mutable_entries()->push_back(dir1); | 532 change_list->mutable_entries()->push_back(dir1); |
| 533 change_list->mutable_parent_resource_ids()->push_back(kRootId); | 533 change_list->mutable_parent_resource_ids()->push_back(kRootId); |
| 534 | 534 |
| 535 // Update the directory with the map. | 535 // Update the directory with the map. |
| 536 ResourceEntry root; | 536 ResourceEntry root; |
| 537 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryByPath( | 537 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryByPath( |
| 538 util::GetDriveMyDriveRootPath(), &root)); | 538 util::GetDriveMyDriveRootPath(), &root)); |
| 539 const int64_t kNewChangestamp = 12345; | 539 const int64_t kNewChangestamp = 12345; |
| 540 ResourceEntryVector refreshed_entries; | 540 ResourceEntryVector refreshed_entries; |
| 541 EXPECT_EQ(FILE_ERROR_OK, ChangeListProcessor::RefreshDirectory( | 541 EXPECT_EQ(FILE_ERROR_OK, |
| 542 metadata_.get(), | 542 ChangeListProcessor::RefreshDirectory( |
| 543 DirectoryFetchInfo(root.local_id(), kRootId, kNewChangestamp), | 543 metadata_.get(), |
| 544 change_list.Pass(), | 544 DirectoryFetchInfo(root.local_id(), kRootId, kNewChangestamp), |
| 545 &refreshed_entries)); | 545 std::move(change_list), &refreshed_entries)); |
| 546 | 546 |
| 547 // "new_file" should be added. | 547 // "new_file" should be added. |
| 548 ResourceEntry entry; | 548 ResourceEntry entry; |
| 549 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryByPath( | 549 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryByPath( |
| 550 util::GetDriveMyDriveRootPath().AppendASCII(new_file.title()), &entry)); | 550 util::GetDriveMyDriveRootPath().AppendASCII(new_file.title()), &entry)); |
| 551 | 551 |
| 552 // "Directory 1" should be renamed. | 552 // "Directory 1" should be renamed. |
| 553 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryByPath( | 553 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryByPath( |
| 554 util::GetDriveMyDriveRootPath().AppendASCII(dir1.title()), &entry)); | 554 util::GetDriveMyDriveRootPath().AppendASCII(dir1.title()), &entry)); |
| 555 } | 555 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 568 "some-random-resource-id"); | 568 "some-random-resource-id"); |
| 569 change_list->mutable_entries()->push_back(new_file); | 569 change_list->mutable_entries()->push_back(new_file); |
| 570 | 570 |
| 571 | 571 |
| 572 // Update the directory. | 572 // Update the directory. |
| 573 ResourceEntry root; | 573 ResourceEntry root; |
| 574 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryByPath( | 574 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryByPath( |
| 575 util::GetDriveMyDriveRootPath(), &root)); | 575 util::GetDriveMyDriveRootPath(), &root)); |
| 576 const int64_t kNewChangestamp = 12345; | 576 const int64_t kNewChangestamp = 12345; |
| 577 ResourceEntryVector refreshed_entries; | 577 ResourceEntryVector refreshed_entries; |
| 578 EXPECT_EQ(FILE_ERROR_OK, ChangeListProcessor::RefreshDirectory( | 578 EXPECT_EQ(FILE_ERROR_OK, |
| 579 metadata_.get(), | 579 ChangeListProcessor::RefreshDirectory( |
| 580 DirectoryFetchInfo(root.local_id(), kRootId, kNewChangestamp), | 580 metadata_.get(), |
| 581 change_list.Pass(), | 581 DirectoryFetchInfo(root.local_id(), kRootId, kNewChangestamp), |
| 582 &refreshed_entries)); | 582 std::move(change_list), &refreshed_entries)); |
| 583 | 583 |
| 584 // "new_file" should not be added. | 584 // "new_file" should not be added. |
| 585 ResourceEntry entry; | 585 ResourceEntry entry; |
| 586 EXPECT_EQ(FILE_ERROR_NOT_FOUND, metadata_->GetResourceEntryByPath( | 586 EXPECT_EQ(FILE_ERROR_NOT_FOUND, metadata_->GetResourceEntryByPath( |
| 587 util::GetDriveMyDriveRootPath().AppendASCII(new_file.title()), &entry)); | 587 util::GetDriveMyDriveRootPath().AppendASCII(new_file.title()), &entry)); |
| 588 } | 588 } |
| 589 | 589 |
| 590 TEST_F(ChangeListProcessorTest, SharedFilesWithNoParentInFeed) { | 590 TEST_F(ChangeListProcessorTest, SharedFilesWithNoParentInFeed) { |
| 591 // Prepare metadata. | 591 // Prepare metadata. |
| 592 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 592 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| 593 | 593 |
| 594 // Create change lists. | 594 // Create change lists. |
| 595 ScopedVector<ChangeList> change_lists; | 595 ScopedVector<ChangeList> change_lists; |
| 596 change_lists.push_back(new ChangeList); | 596 change_lists.push_back(new ChangeList); |
| 597 | 597 |
| 598 // Add a new file with non-existing parent resource id to the change lists. | 598 // Add a new file with non-existing parent resource id to the change lists. |
| 599 ResourceEntry new_file; | 599 ResourceEntry new_file; |
| 600 new_file.set_title("new_file"); | 600 new_file.set_title("new_file"); |
| 601 new_file.set_resource_id("new_file_id"); | 601 new_file.set_resource_id("new_file_id"); |
| 602 change_lists[0]->mutable_entries()->push_back(new_file); | 602 change_lists[0]->mutable_entries()->push_back(new_file); |
| 603 change_lists[0]->mutable_parent_resource_ids()->push_back("nonexisting"); | 603 change_lists[0]->mutable_parent_resource_ids()->push_back("nonexisting"); |
| 604 change_lists[0]->set_largest_changestamp(kBaseResourceListChangestamp + 1); | 604 change_lists[0]->set_largest_changestamp(kBaseResourceListChangestamp + 1); |
| 605 | 605 |
| 606 FileChange changed_files; | 606 FileChange changed_files; |
| 607 EXPECT_EQ(FILE_ERROR_OK, | 607 EXPECT_EQ(FILE_ERROR_OK, |
| 608 ApplyChangeList(change_lists.Pass(), &changed_files)); | 608 ApplyChangeList(std::move(change_lists), &changed_files)); |
| 609 | 609 |
| 610 // "new_file" should be added under drive/other. | 610 // "new_file" should be added under drive/other. |
| 611 ResourceEntry entry; | 611 ResourceEntry entry; |
| 612 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryByPath( | 612 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryByPath( |
| 613 util::GetDriveGrandRootPath().AppendASCII("other/new_file"), &entry)); | 613 util::GetDriveGrandRootPath().AppendASCII("other/new_file"), &entry)); |
| 614 } | 614 } |
| 615 | 615 |
| 616 TEST_F(ChangeListProcessorTest, ModificationDate) { | 616 TEST_F(ChangeListProcessorTest, ModificationDate) { |
| 617 // Prepare metadata. | 617 // Prepare metadata. |
| 618 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); | 618 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 643 new_file_local.set_title("new_file_local"); | 643 new_file_local.set_title("new_file_local"); |
| 644 new_file_local.set_metadata_edit_state(ResourceEntry::DIRTY); | 644 new_file_local.set_metadata_edit_state(ResourceEntry::DIRTY); |
| 645 new_file_local.set_modification_date( | 645 new_file_local.set_modification_date( |
| 646 (now + base::TimeDelta::FromSeconds(1)).ToInternalValue()); | 646 (now + base::TimeDelta::FromSeconds(1)).ToInternalValue()); |
| 647 std::string local_id; | 647 std::string local_id; |
| 648 EXPECT_EQ(FILE_ERROR_OK, metadata_->AddEntry(new_file_local, &local_id)); | 648 EXPECT_EQ(FILE_ERROR_OK, metadata_->AddEntry(new_file_local, &local_id)); |
| 649 | 649 |
| 650 // Apply the change. | 650 // Apply the change. |
| 651 FileChange changed_files; | 651 FileChange changed_files; |
| 652 EXPECT_EQ(FILE_ERROR_OK, | 652 EXPECT_EQ(FILE_ERROR_OK, |
| 653 ApplyChangeList(change_lists.Pass(), &changed_files)); | 653 ApplyChangeList(std::move(change_lists), &changed_files)); |
| 654 | 654 |
| 655 // The change is rejected due to the old modification date. | 655 // The change is rejected due to the old modification date. |
| 656 ResourceEntry entry; | 656 ResourceEntry entry; |
| 657 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryById(local_id, &entry)); | 657 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryById(local_id, &entry)); |
| 658 EXPECT_EQ(new_file_local.title(), entry.title()); | 658 EXPECT_EQ(new_file_local.title(), entry.title()); |
| 659 } | 659 } |
| 660 | 660 |
| 661 } // namespace internal | 661 } // namespace internal |
| 662 } // namespace drive | 662 } // namespace drive |
| OLD | NEW |