Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(214)

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer_unittest.cc

Issue 2613223002: Remove ScopedVector from base::JSONValueConverter (Closed)
Patch Set: Rebase and address comments from mmenke@ Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/sync_file_system/drive_backend/local_to_remote_syncer.h " 5 #include "chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.h "
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 if (retry_count++ > kRetryLimit) 203 if (retry_count++ > kRetryLimit)
204 break; 204 break;
205 status = RunRemoteToLocalSyncer(); 205 status = RunRemoteToLocalSyncer();
206 } while (status == SYNC_STATUS_OK || 206 } while (status == SYNC_STATUS_OK ||
207 status == SYNC_STATUS_RETRY || 207 status == SYNC_STATUS_RETRY ||
208 GetMetadataDatabase()->PromoteDemotedTrackers()); 208 GetMetadataDatabase()->PromoteDemotedTrackers());
209 EXPECT_EQ(SYNC_STATUS_NO_CHANGE_TO_SYNC, status); 209 EXPECT_EQ(SYNC_STATUS_NO_CHANGE_TO_SYNC, status);
210 return status; 210 return status;
211 } 211 }
212 212
213 ScopedVector<google_apis::FileResource> 213 std::vector<std::unique_ptr<google_apis::FileResource>>
214 GetResourceEntriesForParentAndTitle(const std::string& parent_folder_id, 214 GetResourceEntriesForParentAndTitle(const std::string& parent_folder_id,
215 const std::string& title) { 215 const std::string& title) {
216 ScopedVector<google_apis::FileResource> entries; 216 std::vector<std::unique_ptr<google_apis::FileResource>> entries;
217 EXPECT_EQ(google_apis::HTTP_SUCCESS, 217 EXPECT_EQ(google_apis::HTTP_SUCCESS,
218 fake_drive_helper_->SearchByTitle( 218 fake_drive_helper_->SearchByTitle(
219 parent_folder_id, title, &entries)); 219 parent_folder_id, title, &entries));
220 return entries; 220 return entries;
221 } 221 }
222 222
223 std::string GetFileIDForParentAndTitle(const std::string& parent_folder_id, 223 std::string GetFileIDForParentAndTitle(const std::string& parent_folder_id,
224 const std::string& title) { 224 const std::string& title) {
225 ScopedVector<google_apis::FileResource> entries = 225 std::vector<std::unique_ptr<google_apis::FileResource>> entries =
226 GetResourceEntriesForParentAndTitle(parent_folder_id, title); 226 GetResourceEntriesForParentAndTitle(parent_folder_id, title);
227 if (entries.size() != 1) 227 if (entries.size() != 1)
228 return std::string(); 228 return std::string();
229 return entries[0]->file_id(); 229 return entries[0]->file_id();
230 } 230 }
231 231
232 void VerifyTitleUniqueness( 232 void VerifyTitleUniqueness(
233 const std::string& parent_folder_id, 233 const std::string& parent_folder_id,
234 const std::string& title, 234 const std::string& title,
235 test_util::FileResourceKind kind) { 235 test_util::FileResourceKind kind) {
236 ScopedVector<google_apis::FileResource> entries; 236 std::vector<std::unique_ptr<google_apis::FileResource>> entries;
237 EXPECT_EQ(google_apis::HTTP_SUCCESS, 237 EXPECT_EQ(google_apis::HTTP_SUCCESS,
238 fake_drive_helper_->SearchByTitle( 238 fake_drive_helper_->SearchByTitle(
239 parent_folder_id, title, &entries)); 239 parent_folder_id, title, &entries));
240 ASSERT_EQ(1u, entries.size()); 240 ASSERT_EQ(1u, entries.size());
241 EXPECT_EQ(kind, test_util::GetFileResourceKind(*entries[0])); 241 EXPECT_EQ(kind, test_util::GetFileResourceKind(*entries[0]));
242 } 242 }
243 243
244 void VerifyFileDeletion(const std::string& parent_folder_id, 244 void VerifyFileDeletion(const std::string& parent_folder_id,
245 const std::string& title) { 245 const std::string& title) {
246 ScopedVector<google_apis::FileResource> entries; 246 std::vector<std::unique_ptr<google_apis::FileResource>> entries;
247 EXPECT_EQ(google_apis::HTTP_SUCCESS, 247 EXPECT_EQ(google_apis::HTTP_SUCCESS,
248 fake_drive_helper_->SearchByTitle( 248 fake_drive_helper_->SearchByTitle(
249 parent_folder_id, title, &entries)); 249 parent_folder_id, title, &entries));
250 EXPECT_TRUE(entries.empty()); 250 EXPECT_TRUE(entries.empty());
251 } 251 }
252 252
253 private: 253 private:
254 content::TestBrowserThreadBundle thread_bundle_; 254 content::TestBrowserThreadBundle thread_bundle_;
255 base::ScopedTempDir database_dir_; 255 base::ScopedTempDir database_dir_;
256 std::unique_ptr<leveldb::Env> in_memory_env_; 256 std::unique_ptr<leveldb::Env> in_memory_env_;
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 RegisterApp(kOrigin.host(), app_root); 370 RegisterApp(kOrigin.host(), app_root);
371 371
372 CreateRemoteFolder(app_root, "foo"); 372 CreateRemoteFolder(app_root, "foo");
373 EXPECT_EQ(SYNC_STATUS_OK, ListChanges()); 373 EXPECT_EQ(SYNC_STATUS_OK, ListChanges());
374 EXPECT_EQ(SYNC_STATUS_OK, RunLocalToRemoteSyncer( 374 EXPECT_EQ(SYNC_STATUS_OK, RunLocalToRemoteSyncer(
375 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 375 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
376 SYNC_FILE_TYPE_FILE), 376 SYNC_FILE_TYPE_FILE),
377 URL(kOrigin, "foo"))); 377 URL(kOrigin, "foo")));
378 378
379 // There should exist both file and folder on remote. 379 // There should exist both file and folder on remote.
380 ScopedVector<google_apis::FileResource> entries = 380 std::vector<std::unique_ptr<google_apis::FileResource>> entries =
381 GetResourceEntriesForParentAndTitle(app_root, "foo"); 381 GetResourceEntriesForParentAndTitle(app_root, "foo");
382 ASSERT_EQ(2u, entries.size()); 382 ASSERT_EQ(2u, entries.size());
383 EXPECT_EQ(test_util::RESOURCE_KIND_FOLDER, 383 EXPECT_EQ(test_util::RESOURCE_KIND_FOLDER,
384 test_util::GetFileResourceKind(*entries[0])); 384 test_util::GetFileResourceKind(*entries[0]));
385 EXPECT_EQ(test_util::RESOURCE_KIND_FILE, 385 EXPECT_EQ(test_util::RESOURCE_KIND_FILE,
386 test_util::GetFileResourceKind(*entries[1])); 386 test_util::GetFileResourceKind(*entries[1]));
387 } 387 }
388 388
389 TEST_F(LocalToRemoteSyncerTest, Conflict_CreateFolderOnFile) { 389 TEST_F(LocalToRemoteSyncerTest, Conflict_CreateFolderOnFile) {
390 const GURL kOrigin("chrome-extension://example"); 390 const GURL kOrigin("chrome-extension://example");
391 const std::string sync_root = CreateSyncRoot(); 391 const std::string sync_root = CreateSyncRoot();
392 const std::string app_root = CreateRemoteFolder(sync_root, kOrigin.host()); 392 const std::string app_root = CreateRemoteFolder(sync_root, kOrigin.host());
393 InitializeMetadataDatabase(); 393 InitializeMetadataDatabase();
394 RegisterApp(kOrigin.host(), app_root); 394 RegisterApp(kOrigin.host(), app_root);
395 395
396 CreateRemoteFile(app_root, "foo", "data"); 396 CreateRemoteFile(app_root, "foo", "data");
397 EXPECT_EQ(SYNC_STATUS_OK, ListChanges()); 397 EXPECT_EQ(SYNC_STATUS_OK, ListChanges());
398 398
399 EXPECT_EQ(SYNC_STATUS_OK, RunLocalToRemoteSyncer( 399 EXPECT_EQ(SYNC_STATUS_OK, RunLocalToRemoteSyncer(
400 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 400 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
401 SYNC_FILE_TYPE_DIRECTORY), 401 SYNC_FILE_TYPE_DIRECTORY),
402 URL(kOrigin, "foo"))); 402 URL(kOrigin, "foo")));
403 403
404 // There should exist both file and folder on remote. 404 // There should exist both file and folder on remote.
405 ScopedVector<google_apis::FileResource> entries = 405 std::vector<std::unique_ptr<google_apis::FileResource>> entries =
406 GetResourceEntriesForParentAndTitle(app_root, "foo"); 406 GetResourceEntriesForParentAndTitle(app_root, "foo");
407 ASSERT_EQ(2u, entries.size()); 407 ASSERT_EQ(2u, entries.size());
408 EXPECT_EQ(test_util::RESOURCE_KIND_FILE, 408 EXPECT_EQ(test_util::RESOURCE_KIND_FILE,
409 test_util::GetFileResourceKind(*entries[0])); 409 test_util::GetFileResourceKind(*entries[0]));
410 EXPECT_EQ(test_util::RESOURCE_KIND_FOLDER, 410 EXPECT_EQ(test_util::RESOURCE_KIND_FOLDER,
411 test_util::GetFileResourceKind(*entries[1])); 411 test_util::GetFileResourceKind(*entries[1]));
412 } 412 }
413 413
414 TEST_F(LocalToRemoteSyncerTest, Conflict_CreateFileOnFile) { 414 TEST_F(LocalToRemoteSyncerTest, Conflict_CreateFileOnFile) {
415 const GURL kOrigin("chrome-extension://example"); 415 const GURL kOrigin("chrome-extension://example");
416 const std::string sync_root = CreateSyncRoot(); 416 const std::string sync_root = CreateSyncRoot();
417 const std::string app_root = CreateRemoteFolder(sync_root, kOrigin.host()); 417 const std::string app_root = CreateRemoteFolder(sync_root, kOrigin.host());
418 InitializeMetadataDatabase(); 418 InitializeMetadataDatabase();
419 RegisterApp(kOrigin.host(), app_root); 419 RegisterApp(kOrigin.host(), app_root);
420 420
421 CreateRemoteFile(app_root, "foo", "data"); 421 CreateRemoteFile(app_root, "foo", "data");
422 EXPECT_EQ(SYNC_STATUS_OK, ListChanges()); 422 EXPECT_EQ(SYNC_STATUS_OK, ListChanges());
423 423
424 EXPECT_EQ(SYNC_STATUS_OK, RunLocalToRemoteSyncer( 424 EXPECT_EQ(SYNC_STATUS_OK, RunLocalToRemoteSyncer(
425 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 425 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
426 SYNC_FILE_TYPE_FILE), 426 SYNC_FILE_TYPE_FILE),
427 URL(kOrigin, "foo"))); 427 URL(kOrigin, "foo")));
428 428
429 // There should exist both files on remote. 429 // There should exist both files on remote.
430 ScopedVector<google_apis::FileResource> entries = 430 std::vector<std::unique_ptr<google_apis::FileResource>> entries =
431 GetResourceEntriesForParentAndTitle(app_root, "foo"); 431 GetResourceEntriesForParentAndTitle(app_root, "foo");
432 ASSERT_EQ(2u, entries.size()); 432 ASSERT_EQ(2u, entries.size());
433 EXPECT_EQ(test_util::RESOURCE_KIND_FILE, 433 EXPECT_EQ(test_util::RESOURCE_KIND_FILE,
434 test_util::GetFileResourceKind(*entries[0])); 434 test_util::GetFileResourceKind(*entries[0]));
435 EXPECT_EQ(test_util::RESOURCE_KIND_FILE, 435 EXPECT_EQ(test_util::RESOURCE_KIND_FILE,
436 test_util::GetFileResourceKind(*entries[1])); 436 test_util::GetFileResourceKind(*entries[1]));
437 } 437 }
438 438
439 TEST_F(LocalToRemoteSyncerTest, Conflict_UpdateDeleteOnFile) { 439 TEST_F(LocalToRemoteSyncerTest, Conflict_UpdateDeleteOnFile) {
440 const GURL kOrigin("chrome-extension://example"); 440 const GURL kOrigin("chrome-extension://example");
(...skipping 11 matching lines...) Expand all
452 452
453 EXPECT_EQ(SYNC_STATUS_FILE_BUSY, RunLocalToRemoteSyncer( 453 EXPECT_EQ(SYNC_STATUS_FILE_BUSY, RunLocalToRemoteSyncer(
454 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 454 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
455 SYNC_FILE_TYPE_FILE), 455 SYNC_FILE_TYPE_FILE),
456 URL(kOrigin, "foo"))); 456 URL(kOrigin, "foo")));
457 EXPECT_EQ(SYNC_STATUS_OK, RunLocalToRemoteSyncer( 457 EXPECT_EQ(SYNC_STATUS_OK, RunLocalToRemoteSyncer(
458 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 458 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
459 SYNC_FILE_TYPE_FILE), 459 SYNC_FILE_TYPE_FILE),
460 URL(kOrigin, "foo"))); 460 URL(kOrigin, "foo")));
461 461
462 ScopedVector<google_apis::FileResource> entries = 462 std::vector<std::unique_ptr<google_apis::FileResource>> entries =
463 GetResourceEntriesForParentAndTitle(app_root, "foo"); 463 GetResourceEntriesForParentAndTitle(app_root, "foo");
464 ASSERT_EQ(1u, entries.size()); 464 ASSERT_EQ(1u, entries.size());
465 EXPECT_EQ(test_util::RESOURCE_KIND_FILE, 465 EXPECT_EQ(test_util::RESOURCE_KIND_FILE,
466 test_util::GetFileResourceKind(*entries[0])); 466 test_util::GetFileResourceKind(*entries[0]));
467 EXPECT_TRUE(!entries[0]->labels().is_trashed()); 467 EXPECT_TRUE(!entries[0]->labels().is_trashed());
468 EXPECT_NE(file_id, entries[0]->file_id()); 468 EXPECT_NE(file_id, entries[0]->file_id());
469 } 469 }
470 470
471 TEST_F(LocalToRemoteSyncerTest, Conflict_CreateDeleteOnFile) { 471 TEST_F(LocalToRemoteSyncerTest, Conflict_CreateDeleteOnFile) {
472 const GURL kOrigin("chrome-extension://example"); 472 const GURL kOrigin("chrome-extension://example");
473 const std::string sync_root = CreateSyncRoot(); 473 const std::string sync_root = CreateSyncRoot();
474 const std::string app_root = CreateRemoteFolder(sync_root, kOrigin.host()); 474 const std::string app_root = CreateRemoteFolder(sync_root, kOrigin.host());
475 InitializeMetadataDatabase(); 475 InitializeMetadataDatabase();
476 RegisterApp(kOrigin.host(), app_root); 476 RegisterApp(kOrigin.host(), app_root);
477 477
478 const std::string file_id = CreateRemoteFile(app_root, "foo", "data"); 478 const std::string file_id = CreateRemoteFile(app_root, "foo", "data");
479 EXPECT_EQ(SYNC_STATUS_OK, ListChanges()); 479 EXPECT_EQ(SYNC_STATUS_OK, ListChanges());
480 EXPECT_EQ(SYNC_STATUS_NO_CHANGE_TO_SYNC, 480 EXPECT_EQ(SYNC_STATUS_NO_CHANGE_TO_SYNC,
481 RunRemoteToLocalSyncerUntilIdle()); 481 RunRemoteToLocalSyncerUntilIdle());
482 482
483 DeleteResource(file_id); 483 DeleteResource(file_id);
484 484
485 EXPECT_EQ(SYNC_STATUS_OK, ListChanges()); 485 EXPECT_EQ(SYNC_STATUS_OK, ListChanges());
486 486
487 EXPECT_EQ(SYNC_STATUS_OK, RunLocalToRemoteSyncer( 487 EXPECT_EQ(SYNC_STATUS_OK, RunLocalToRemoteSyncer(
488 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 488 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
489 SYNC_FILE_TYPE_FILE), 489 SYNC_FILE_TYPE_FILE),
490 URL(kOrigin, "foo"))); 490 URL(kOrigin, "foo")));
491 491
492 ScopedVector<google_apis::FileResource> entries = 492 std::vector<std::unique_ptr<google_apis::FileResource>> entries =
493 GetResourceEntriesForParentAndTitle(app_root, "foo"); 493 GetResourceEntriesForParentAndTitle(app_root, "foo");
494 ASSERT_EQ(1u, entries.size()); 494 ASSERT_EQ(1u, entries.size());
495 EXPECT_EQ(test_util::RESOURCE_KIND_FILE, 495 EXPECT_EQ(test_util::RESOURCE_KIND_FILE,
496 test_util::GetFileResourceKind(*entries[0])); 496 test_util::GetFileResourceKind(*entries[0]));
497 EXPECT_TRUE(!entries[0]->labels().is_trashed()); 497 EXPECT_TRUE(!entries[0]->labels().is_trashed());
498 EXPECT_NE(file_id, entries[0]->file_id()); 498 EXPECT_NE(file_id, entries[0]->file_id());
499 } 499 }
500 500
501 TEST_F(LocalToRemoteSyncerTest, Conflict_CreateFolderOnFolder) { 501 TEST_F(LocalToRemoteSyncerTest, Conflict_CreateFolderOnFolder) {
502 const GURL kOrigin("chrome-extension://example"); 502 const GURL kOrigin("chrome-extension://example");
503 const std::string sync_root = CreateSyncRoot(); 503 const std::string sync_root = CreateSyncRoot();
504 const std::string app_root = CreateRemoteFolder(sync_root, kOrigin.host()); 504 const std::string app_root = CreateRemoteFolder(sync_root, kOrigin.host());
505 InitializeMetadataDatabase(); 505 InitializeMetadataDatabase();
506 RegisterApp(kOrigin.host(), app_root); 506 RegisterApp(kOrigin.host(), app_root);
507 507
508 const std::string folder_id = CreateRemoteFolder(app_root, "foo"); 508 const std::string folder_id = CreateRemoteFolder(app_root, "foo");
509 509
510 EXPECT_EQ(SYNC_STATUS_OK, RunLocalToRemoteSyncer( 510 EXPECT_EQ(SYNC_STATUS_OK, RunLocalToRemoteSyncer(
511 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 511 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
512 SYNC_FILE_TYPE_DIRECTORY), 512 SYNC_FILE_TYPE_DIRECTORY),
513 URL(kOrigin, "foo"))); 513 URL(kOrigin, "foo")));
514 514
515 ScopedVector<google_apis::FileResource> entries = 515 std::vector<std::unique_ptr<google_apis::FileResource>> entries =
516 GetResourceEntriesForParentAndTitle(app_root, "foo"); 516 GetResourceEntriesForParentAndTitle(app_root, "foo");
517 ASSERT_EQ(2u, entries.size()); 517 ASSERT_EQ(2u, entries.size());
518 EXPECT_EQ(test_util::RESOURCE_KIND_FOLDER, 518 EXPECT_EQ(test_util::RESOURCE_KIND_FOLDER,
519 test_util::GetFileResourceKind(*entries[0])); 519 test_util::GetFileResourceKind(*entries[0]));
520 EXPECT_EQ(test_util::RESOURCE_KIND_FOLDER, 520 EXPECT_EQ(test_util::RESOURCE_KIND_FOLDER,
521 test_util::GetFileResourceKind(*entries[1])); 521 test_util::GetFileResourceKind(*entries[1]));
522 EXPECT_TRUE(!entries[0]->labels().is_trashed()); 522 EXPECT_TRUE(!entries[0]->labels().is_trashed());
523 EXPECT_TRUE(!entries[1]->labels().is_trashed()); 523 EXPECT_TRUE(!entries[1]->labels().is_trashed());
524 EXPECT_TRUE(folder_id == entries[0]->file_id() || 524 EXPECT_TRUE(folder_id == entries[0]->file_id() ||
525 folder_id == entries[1]->file_id()); 525 folder_id == entries[1]->file_id());
(...skipping 20 matching lines...) Expand all
546 EXPECT_EQ(SYNC_STATUS_UNKNOWN_ORIGIN, RunLocalToRemoteSyncer( 546 EXPECT_EQ(SYNC_STATUS_UNKNOWN_ORIGIN, RunLocalToRemoteSyncer(
547 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 547 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
548 SYNC_FILE_TYPE_DIRECTORY), 548 SYNC_FILE_TYPE_DIRECTORY),
549 URL(kOrigin, "foo"))); 549 URL(kOrigin, "foo")));
550 550
551 // SyncEngine will re-register the app and resurrect the app root later. 551 // SyncEngine will re-register the app and resurrect the app root later.
552 } 552 }
553 553
554 } // namespace drive_backend 554 } // namespace drive_backend
555 } // namespace sync_file_system 555 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698