| 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/sync_client.h" | 5 #include "chrome/browser/chromeos/drive/sync_client.h" |
| 6 | 6 |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 269 | 269 |
| 270 std::map<std::string, std::string> resource_ids_; // Name-to-id map. | 270 std::map<std::string, std::string> resource_ids_; // Name-to-id map. |
| 271 }; | 271 }; |
| 272 | 272 |
| 273 TEST_F(SyncClientTest, StartProcessingBacklog) { | 273 TEST_F(SyncClientTest, StartProcessingBacklog) { |
| 274 sync_client_->StartProcessingBacklog(); | 274 sync_client_->StartProcessingBacklog(); |
| 275 base::RunLoop().RunUntilIdle(); | 275 base::RunLoop().RunUntilIdle(); |
| 276 | 276 |
| 277 FileCacheEntry cache_entry; | 277 FileCacheEntry cache_entry; |
| 278 // Pinned files get downloaded. | 278 // Pinned files get downloaded. |
| 279 EXPECT_TRUE(cache_->GetCacheEntry(GetLocalId("foo"), &cache_entry)); | 279 EXPECT_EQ(FILE_ERROR_OK, |
| 280 cache_->GetCacheEntry(GetLocalId("foo"), &cache_entry)); |
| 280 EXPECT_TRUE(cache_entry.is_present()); | 281 EXPECT_TRUE(cache_entry.is_present()); |
| 281 | 282 |
| 282 EXPECT_TRUE(cache_->GetCacheEntry(GetLocalId("bar"), &cache_entry)); | 283 EXPECT_EQ(FILE_ERROR_OK, |
| 284 cache_->GetCacheEntry(GetLocalId("bar"), &cache_entry)); |
| 283 EXPECT_TRUE(cache_entry.is_present()); | 285 EXPECT_TRUE(cache_entry.is_present()); |
| 284 | 286 |
| 285 EXPECT_TRUE(cache_->GetCacheEntry(GetLocalId("baz"), &cache_entry)); | 287 EXPECT_EQ(FILE_ERROR_OK, |
| 288 cache_->GetCacheEntry(GetLocalId("baz"), &cache_entry)); |
| 286 EXPECT_TRUE(cache_entry.is_present()); | 289 EXPECT_TRUE(cache_entry.is_present()); |
| 287 | 290 |
| 288 // Dirty file gets uploaded. | 291 // Dirty file gets uploaded. |
| 289 EXPECT_TRUE(cache_->GetCacheEntry(GetLocalId("dirty"), &cache_entry)); | 292 EXPECT_EQ(FILE_ERROR_OK, |
| 293 cache_->GetCacheEntry(GetLocalId("dirty"), &cache_entry)); |
| 290 EXPECT_FALSE(cache_entry.is_dirty()); | 294 EXPECT_FALSE(cache_entry.is_dirty()); |
| 291 | 295 |
| 292 // Removed entry is not found. | 296 // Removed entry is not found. |
| 293 google_apis::GDataErrorCode status = google_apis::GDATA_OTHER_ERROR; | 297 google_apis::GDataErrorCode status = google_apis::GDATA_OTHER_ERROR; |
| 294 scoped_ptr<google_apis::ResourceEntry> resource_entry; | 298 scoped_ptr<google_apis::ResourceEntry> resource_entry; |
| 295 drive_service_->GetResourceEntry( | 299 drive_service_->GetResourceEntry( |
| 296 resource_ids_["removed"], | 300 resource_ids_["removed"], |
| 297 google_apis::test_util::CreateCopyResultCallback(&status, | 301 google_apis::test_util::CreateCopyResultCallback(&status, |
| 298 &resource_entry)); | 302 &resource_entry)); |
| 299 base::RunLoop().RunUntilIdle(); | 303 base::RunLoop().RunUntilIdle(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 311 EXPECT_EQ(google_apis::HTTP_SUCCESS, status); | 315 EXPECT_EQ(google_apis::HTTP_SUCCESS, status); |
| 312 ASSERT_TRUE(resource_entry); | 316 ASSERT_TRUE(resource_entry); |
| 313 EXPECT_EQ("moved_new_title", resource_entry->title()); | 317 EXPECT_EQ("moved_new_title", resource_entry->title()); |
| 314 } | 318 } |
| 315 | 319 |
| 316 TEST_F(SyncClientTest, AddFetchTask) { | 320 TEST_F(SyncClientTest, AddFetchTask) { |
| 317 sync_client_->AddFetchTask(GetLocalId("foo")); | 321 sync_client_->AddFetchTask(GetLocalId("foo")); |
| 318 base::RunLoop().RunUntilIdle(); | 322 base::RunLoop().RunUntilIdle(); |
| 319 | 323 |
| 320 FileCacheEntry cache_entry; | 324 FileCacheEntry cache_entry; |
| 321 EXPECT_TRUE(cache_->GetCacheEntry(GetLocalId("foo"), &cache_entry)); | 325 EXPECT_EQ(FILE_ERROR_OK, |
| 326 cache_->GetCacheEntry(GetLocalId("foo"), &cache_entry)); |
| 322 EXPECT_TRUE(cache_entry.is_present()); | 327 EXPECT_TRUE(cache_entry.is_present()); |
| 323 } | 328 } |
| 324 | 329 |
| 325 TEST_F(SyncClientTest, AddFetchTaskAndCancelled) { | 330 TEST_F(SyncClientTest, AddFetchTaskAndCancelled) { |
| 326 // Trigger fetching of a file which results in cancellation. | 331 // Trigger fetching of a file which results in cancellation. |
| 327 drive_service_->set_resource_id_to_be_cancelled(resource_ids_["foo"]); | 332 drive_service_->set_resource_id_to_be_cancelled(resource_ids_["foo"]); |
| 328 sync_client_->AddFetchTask(GetLocalId("foo")); | 333 sync_client_->AddFetchTask(GetLocalId("foo")); |
| 329 base::RunLoop().RunUntilIdle(); | 334 base::RunLoop().RunUntilIdle(); |
| 330 | 335 |
| 331 // The file should be unpinned if the user wants the download to be cancelled. | 336 // The file should be unpinned if the user wants the download to be cancelled. |
| 332 FileCacheEntry cache_entry; | 337 FileCacheEntry cache_entry; |
| 333 EXPECT_FALSE(cache_->GetCacheEntry(GetLocalId("foo"), &cache_entry)); | 338 EXPECT_EQ(FILE_ERROR_NOT_FOUND, |
| 339 cache_->GetCacheEntry(GetLocalId("foo"), &cache_entry)); |
| 334 } | 340 } |
| 335 | 341 |
| 336 TEST_F(SyncClientTest, RemoveFetchTask) { | 342 TEST_F(SyncClientTest, RemoveFetchTask) { |
| 337 sync_client_->AddFetchTask(GetLocalId("foo")); | 343 sync_client_->AddFetchTask(GetLocalId("foo")); |
| 338 sync_client_->AddFetchTask(GetLocalId("bar")); | 344 sync_client_->AddFetchTask(GetLocalId("bar")); |
| 339 sync_client_->AddFetchTask(GetLocalId("baz")); | 345 sync_client_->AddFetchTask(GetLocalId("baz")); |
| 340 | 346 |
| 341 sync_client_->RemoveFetchTask(GetLocalId("foo")); | 347 sync_client_->RemoveFetchTask(GetLocalId("foo")); |
| 342 sync_client_->RemoveFetchTask(GetLocalId("baz")); | 348 sync_client_->RemoveFetchTask(GetLocalId("baz")); |
| 343 base::RunLoop().RunUntilIdle(); | 349 base::RunLoop().RunUntilIdle(); |
| 344 | 350 |
| 345 // Only "bar" should be fetched. | 351 // Only "bar" should be fetched. |
| 346 FileCacheEntry cache_entry; | 352 FileCacheEntry cache_entry; |
| 347 EXPECT_TRUE(cache_->GetCacheEntry(GetLocalId("foo"), &cache_entry)); | 353 EXPECT_EQ(FILE_ERROR_OK, |
| 354 cache_->GetCacheEntry(GetLocalId("foo"), &cache_entry)); |
| 348 EXPECT_FALSE(cache_entry.is_present()); | 355 EXPECT_FALSE(cache_entry.is_present()); |
| 349 | 356 |
| 350 EXPECT_TRUE(cache_->GetCacheEntry(GetLocalId("bar"), &cache_entry)); | 357 EXPECT_EQ(FILE_ERROR_OK, |
| 358 cache_->GetCacheEntry(GetLocalId("bar"), &cache_entry)); |
| 351 EXPECT_TRUE(cache_entry.is_present()); | 359 EXPECT_TRUE(cache_entry.is_present()); |
| 352 | 360 |
| 353 EXPECT_TRUE(cache_->GetCacheEntry(GetLocalId("baz"), &cache_entry)); | 361 EXPECT_EQ(FILE_ERROR_OK, |
| 362 cache_->GetCacheEntry(GetLocalId("baz"), &cache_entry)); |
| 354 EXPECT_FALSE(cache_entry.is_present()); | 363 EXPECT_FALSE(cache_entry.is_present()); |
| 355 | 364 |
| 356 } | 365 } |
| 357 | 366 |
| 358 TEST_F(SyncClientTest, ExistingPinnedFiles) { | 367 TEST_F(SyncClientTest, ExistingPinnedFiles) { |
| 359 // Start checking the existing pinned files. This will collect the resource | 368 // Start checking the existing pinned files. This will collect the resource |
| 360 // IDs of pinned files, with stale local cache files. | 369 // IDs of pinned files, with stale local cache files. |
| 361 sync_client_->StartCheckingExistingPinnedFiles(); | 370 sync_client_->StartCheckingExistingPinnedFiles(); |
| 362 base::RunLoop().RunUntilIdle(); | 371 base::RunLoop().RunUntilIdle(); |
| 363 | 372 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 390 TestTimeouts::tiny_timeout()); | 399 TestTimeouts::tiny_timeout()); |
| 391 | 400 |
| 392 // Try fetch and upload. | 401 // Try fetch and upload. |
| 393 sync_client_->AddFetchTask(GetLocalId("foo")); | 402 sync_client_->AddFetchTask(GetLocalId("foo")); |
| 394 sync_client_->AddUpdateTask(ClientContext(USER_INITIATED), | 403 sync_client_->AddUpdateTask(ClientContext(USER_INITIATED), |
| 395 GetLocalId("dirty")); | 404 GetLocalId("dirty")); |
| 396 base::RunLoop().RunUntilIdle(); | 405 base::RunLoop().RunUntilIdle(); |
| 397 | 406 |
| 398 // Not yet fetched nor uploaded. | 407 // Not yet fetched nor uploaded. |
| 399 FileCacheEntry cache_entry; | 408 FileCacheEntry cache_entry; |
| 400 EXPECT_TRUE(cache_->GetCacheEntry(GetLocalId("foo"), &cache_entry)); | 409 EXPECT_EQ(FILE_ERROR_OK, |
| 410 cache_->GetCacheEntry(GetLocalId("foo"), &cache_entry)); |
| 401 EXPECT_FALSE(cache_entry.is_present()); | 411 EXPECT_FALSE(cache_entry.is_present()); |
| 402 EXPECT_TRUE(cache_->GetCacheEntry(GetLocalId("dirty"), &cache_entry)); | 412 EXPECT_EQ(FILE_ERROR_OK, |
| 413 cache_->GetCacheEntry(GetLocalId("dirty"), &cache_entry)); |
| 403 EXPECT_TRUE(cache_entry.is_dirty()); | 414 EXPECT_TRUE(cache_entry.is_dirty()); |
| 404 | 415 |
| 405 // Switch to online. | 416 // Switch to online. |
| 406 fake_network_change_notifier_->SetConnectionType( | 417 fake_network_change_notifier_->SetConnectionType( |
| 407 net::NetworkChangeNotifier::CONNECTION_WIFI); | 418 net::NetworkChangeNotifier::CONNECTION_WIFI); |
| 408 drive_service_->set_offline(false); | 419 drive_service_->set_offline(false); |
| 409 base::RunLoop().RunUntilIdle(); | 420 base::RunLoop().RunUntilIdle(); |
| 410 | 421 |
| 411 // Fetched and uploaded. | 422 // Fetched and uploaded. |
| 412 EXPECT_TRUE(cache_->GetCacheEntry(GetLocalId("foo"), &cache_entry)); | 423 EXPECT_EQ(FILE_ERROR_OK, |
| 424 cache_->GetCacheEntry(GetLocalId("foo"), &cache_entry)); |
| 413 EXPECT_TRUE(cache_entry.is_present()); | 425 EXPECT_TRUE(cache_entry.is_present()); |
| 414 EXPECT_TRUE(cache_->GetCacheEntry(GetLocalId("dirty"), &cache_entry)); | 426 EXPECT_EQ(FILE_ERROR_OK, |
| 427 cache_->GetCacheEntry(GetLocalId("dirty"), &cache_entry)); |
| 415 EXPECT_FALSE(cache_entry.is_dirty()); | 428 EXPECT_FALSE(cache_entry.is_dirty()); |
| 416 } | 429 } |
| 417 | 430 |
| 418 TEST_F(SyncClientTest, ScheduleRerun) { | 431 TEST_F(SyncClientTest, ScheduleRerun) { |
| 419 // Add a fetch task for "foo", this should result in being paused. | 432 // Add a fetch task for "foo", this should result in being paused. |
| 420 drive_service_->set_resource_id_to_be_paused(resource_ids_["foo"]); | 433 drive_service_->set_resource_id_to_be_paused(resource_ids_["foo"]); |
| 421 sync_client_->AddFetchTask(GetLocalId("foo")); | 434 sync_client_->AddFetchTask(GetLocalId("foo")); |
| 422 base::RunLoop().RunUntilIdle(); | 435 base::RunLoop().RunUntilIdle(); |
| 423 | 436 |
| 424 // While the first task is paused, add a task again. | 437 // While the first task is paused, add a task again. |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 470 | 483 |
| 471 // Both entries are synced. | 484 // Both entries are synced. |
| 472 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryById(local_id1, &entry1)); | 485 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryById(local_id1, &entry1)); |
| 473 EXPECT_EQ(ResourceEntry::CLEAN, entry1.metadata_edit_state()); | 486 EXPECT_EQ(ResourceEntry::CLEAN, entry1.metadata_edit_state()); |
| 474 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryById(local_id2, &entry2)); | 487 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryById(local_id2, &entry2)); |
| 475 EXPECT_EQ(ResourceEntry::CLEAN, entry2.metadata_edit_state()); | 488 EXPECT_EQ(ResourceEntry::CLEAN, entry2.metadata_edit_state()); |
| 476 } | 489 } |
| 477 | 490 |
| 478 } // namespace internal | 491 } // namespace internal |
| 479 } // namespace drive | 492 } // namespace drive |
| OLD | NEW |