| 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 "components/drive/sync/entry_update_performer.h" | 5 #include "components/drive/sync/entry_update_performer.h" |
| 6 | 6 |
| 7 #include <stdint.h> |
| 8 |
| 7 #include "base/callback_helpers.h" | 9 #include "base/callback_helpers.h" |
| 8 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
| 9 #include "base/md5.h" | 11 #include "base/md5.h" |
| 10 #include "base/task_runner_util.h" | 12 #include "base/task_runner_util.h" |
| 11 #include "components/drive/drive_api_util.h" | 13 #include "components/drive/drive_api_util.h" |
| 12 #include "components/drive/file_cache.h" | 14 #include "components/drive/file_cache.h" |
| 13 #include "components/drive/file_system/download_operation.h" | 15 #include "components/drive/file_system/download_operation.h" |
| 14 #include "components/drive/file_system/operation_test_base.h" | 16 #include "components/drive/file_system/operation_test_base.h" |
| 15 #include "components/drive/job_scheduler.h" | 17 #include "components/drive/job_scheduler.h" |
| 16 #include "components/drive/resource_metadata.h" | 18 #include "components/drive/resource_metadata.h" |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 TEST_F(EntryUpdatePerformerTest, UpdateEntry_ContentUpdate) { | 258 TEST_F(EntryUpdatePerformerTest, UpdateEntry_ContentUpdate) { |
| 257 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 259 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 258 const std::string kResourceId("2_file_resource_id"); | 260 const std::string kResourceId("2_file_resource_id"); |
| 259 | 261 |
| 260 const std::string local_id = GetLocalId(kFilePath); | 262 const std::string local_id = GetLocalId(kFilePath); |
| 261 EXPECT_FALSE(local_id.empty()); | 263 EXPECT_FALSE(local_id.empty()); |
| 262 | 264 |
| 263 const std::string kTestFileContent = "I'm being uploaded! Yay!"; | 265 const std::string kTestFileContent = "I'm being uploaded! Yay!"; |
| 264 EXPECT_EQ(FILE_ERROR_OK, StoreAndMarkDirty(local_id, kTestFileContent)); | 266 EXPECT_EQ(FILE_ERROR_OK, StoreAndMarkDirty(local_id, kTestFileContent)); |
| 265 | 267 |
| 266 int64 original_changestamp = | 268 int64_t original_changestamp = |
| 267 fake_service()->about_resource().largest_change_id(); | 269 fake_service()->about_resource().largest_change_id(); |
| 268 | 270 |
| 269 // The callback will be called upon completion of UpdateEntry(). | 271 // The callback will be called upon completion of UpdateEntry(). |
| 270 FileError error = FILE_ERROR_FAILED; | 272 FileError error = FILE_ERROR_FAILED; |
| 271 performer_->UpdateEntry( | 273 performer_->UpdateEntry( |
| 272 local_id, | 274 local_id, |
| 273 ClientContext(USER_INITIATED), | 275 ClientContext(USER_INITIATED), |
| 274 google_apis::test_util::CreateCopyResultCallback(&error)); | 276 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 275 content::RunAllBlockingPoolTasksUntilIdle(); | 277 content::RunAllBlockingPoolTasksUntilIdle(); |
| 276 EXPECT_EQ(FILE_ERROR_OK, error); | 278 EXPECT_EQ(FILE_ERROR_OK, error); |
| 277 | 279 |
| 278 // Check that the server has received an update. | 280 // Check that the server has received an update. |
| 279 EXPECT_LT(original_changestamp, | 281 EXPECT_LT(original_changestamp, |
| 280 fake_service()->about_resource().largest_change_id()); | 282 fake_service()->about_resource().largest_change_id()); |
| 281 | 283 |
| 282 // Check that the file size is updated to that of the updated content. | 284 // Check that the file size is updated to that of the updated content. |
| 283 google_apis::DriveApiErrorCode gdata_error = google_apis::DRIVE_OTHER_ERROR; | 285 google_apis::DriveApiErrorCode gdata_error = google_apis::DRIVE_OTHER_ERROR; |
| 284 scoped_ptr<google_apis::FileResource> server_entry; | 286 scoped_ptr<google_apis::FileResource> server_entry; |
| 285 fake_service()->GetFileResource( | 287 fake_service()->GetFileResource( |
| 286 kResourceId, | 288 kResourceId, |
| 287 google_apis::test_util::CreateCopyResultCallback(&gdata_error, | 289 google_apis::test_util::CreateCopyResultCallback(&gdata_error, |
| 288 &server_entry)); | 290 &server_entry)); |
| 289 content::RunAllBlockingPoolTasksUntilIdle(); | 291 content::RunAllBlockingPoolTasksUntilIdle(); |
| 290 EXPECT_EQ(google_apis::HTTP_SUCCESS, gdata_error); | 292 EXPECT_EQ(google_apis::HTTP_SUCCESS, gdata_error); |
| 291 EXPECT_EQ(static_cast<int64>(kTestFileContent.size()), | 293 EXPECT_EQ(static_cast<int64_t>(kTestFileContent.size()), |
| 292 server_entry->file_size()); | 294 server_entry->file_size()); |
| 293 | 295 |
| 294 // Make sure that the cache is no longer dirty. | 296 // Make sure that the cache is no longer dirty. |
| 295 ResourceEntry entry; | 297 ResourceEntry entry; |
| 296 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(kFilePath, &entry)); | 298 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(kFilePath, &entry)); |
| 297 EXPECT_FALSE(entry.file_specific_info().cache_state().is_dirty()); | 299 EXPECT_FALSE(entry.file_specific_info().cache_state().is_dirty()); |
| 298 } | 300 } |
| 299 | 301 |
| 300 TEST_F(EntryUpdatePerformerTest, UpdateEntry_ContentUpdateMd5Check) { | 302 TEST_F(EntryUpdatePerformerTest, UpdateEntry_ContentUpdateMd5Check) { |
| 301 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/File 1.txt")); | 303 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/File 1.txt")); |
| 302 const std::string kResourceId("2_file_resource_id"); | 304 const std::string kResourceId("2_file_resource_id"); |
| 303 | 305 |
| 304 const std::string local_id = GetLocalId(kFilePath); | 306 const std::string local_id = GetLocalId(kFilePath); |
| 305 EXPECT_FALSE(local_id.empty()); | 307 EXPECT_FALSE(local_id.empty()); |
| 306 | 308 |
| 307 const std::string kTestFileContent = "I'm being uploaded! Yay!"; | 309 const std::string kTestFileContent = "I'm being uploaded! Yay!"; |
| 308 EXPECT_EQ(FILE_ERROR_OK, StoreAndMarkDirty(local_id, kTestFileContent)); | 310 EXPECT_EQ(FILE_ERROR_OK, StoreAndMarkDirty(local_id, kTestFileContent)); |
| 309 | 311 |
| 310 int64 original_changestamp = | 312 int64_t original_changestamp = |
| 311 fake_service()->about_resource().largest_change_id(); | 313 fake_service()->about_resource().largest_change_id(); |
| 312 | 314 |
| 313 // The callback will be called upon completion of UpdateEntry(). | 315 // The callback will be called upon completion of UpdateEntry(). |
| 314 FileError error = FILE_ERROR_FAILED; | 316 FileError error = FILE_ERROR_FAILED; |
| 315 performer_->UpdateEntry( | 317 performer_->UpdateEntry( |
| 316 local_id, | 318 local_id, |
| 317 ClientContext(USER_INITIATED), | 319 ClientContext(USER_INITIATED), |
| 318 google_apis::test_util::CreateCopyResultCallback(&error)); | 320 google_apis::test_util::CreateCopyResultCallback(&error)); |
| 319 content::RunAllBlockingPoolTasksUntilIdle(); | 321 content::RunAllBlockingPoolTasksUntilIdle(); |
| 320 EXPECT_EQ(FILE_ERROR_OK, error); | 322 EXPECT_EQ(FILE_ERROR_OK, error); |
| 321 | 323 |
| 322 // Check that the server has received an update. | 324 // Check that the server has received an update. |
| 323 EXPECT_LT(original_changestamp, | 325 EXPECT_LT(original_changestamp, |
| 324 fake_service()->about_resource().largest_change_id()); | 326 fake_service()->about_resource().largest_change_id()); |
| 325 | 327 |
| 326 // Check that the file size is updated to that of the updated content. | 328 // Check that the file size is updated to that of the updated content. |
| 327 google_apis::DriveApiErrorCode gdata_error = google_apis::DRIVE_OTHER_ERROR; | 329 google_apis::DriveApiErrorCode gdata_error = google_apis::DRIVE_OTHER_ERROR; |
| 328 scoped_ptr<google_apis::FileResource> server_entry; | 330 scoped_ptr<google_apis::FileResource> server_entry; |
| 329 fake_service()->GetFileResource( | 331 fake_service()->GetFileResource( |
| 330 kResourceId, | 332 kResourceId, |
| 331 google_apis::test_util::CreateCopyResultCallback(&gdata_error, | 333 google_apis::test_util::CreateCopyResultCallback(&gdata_error, |
| 332 &server_entry)); | 334 &server_entry)); |
| 333 content::RunAllBlockingPoolTasksUntilIdle(); | 335 content::RunAllBlockingPoolTasksUntilIdle(); |
| 334 EXPECT_EQ(google_apis::HTTP_SUCCESS, gdata_error); | 336 EXPECT_EQ(google_apis::HTTP_SUCCESS, gdata_error); |
| 335 EXPECT_EQ(static_cast<int64>(kTestFileContent.size()), | 337 EXPECT_EQ(static_cast<int64_t>(kTestFileContent.size()), |
| 336 server_entry->file_size()); | 338 server_entry->file_size()); |
| 337 | 339 |
| 338 // Make sure that the cache is no longer dirty. | 340 // Make sure that the cache is no longer dirty. |
| 339 ResourceEntry entry; | 341 ResourceEntry entry; |
| 340 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(kFilePath, &entry)); | 342 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(kFilePath, &entry)); |
| 341 EXPECT_FALSE(entry.file_specific_info().cache_state().is_dirty()); | 343 EXPECT_FALSE(entry.file_specific_info().cache_state().is_dirty()); |
| 342 | 344 |
| 343 // Again mark the cache file dirty. | 345 // Again mark the cache file dirty. |
| 344 scoped_ptr<base::ScopedClosureRunner> file_closer; | 346 scoped_ptr<base::ScopedClosureRunner> file_closer; |
| 345 error = FILE_ERROR_FAILED; | 347 error = FILE_ERROR_FAILED; |
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 649 | 651 |
| 650 // This should result in reverting the local change. | 652 // This should result in reverting the local change. |
| 651 ResourceEntry result_entry; | 653 ResourceEntry result_entry; |
| 652 EXPECT_EQ(FILE_ERROR_OK, | 654 EXPECT_EQ(FILE_ERROR_OK, |
| 653 GetLocalResourceEntryById(src_entry.local_id(), &result_entry)); | 655 GetLocalResourceEntryById(src_entry.local_id(), &result_entry)); |
| 654 EXPECT_EQ(src_entry.title(), result_entry.title()); | 656 EXPECT_EQ(src_entry.title(), result_entry.title()); |
| 655 } | 657 } |
| 656 | 658 |
| 657 } // namespace internal | 659 } // namespace internal |
| 658 } // namespace drive | 660 } // namespace drive |
| OLD | NEW |