| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 #include "components/sync/syncable/write_transaction.h" | 41 #include "components/sync/syncable/write_transaction.h" |
| 42 #include "testing/gmock/include/gmock/gmock.h" | 42 #include "testing/gmock/include/gmock/gmock.h" |
| 43 #include "testing/gtest/include/gtest/gtest.h" | 43 #include "testing/gtest/include/gtest/gtest.h" |
| 44 #include "url/gurl.h" | 44 #include "url/gurl.h" |
| 45 | 45 |
| 46 using history::HistoryBackend; | 46 using history::HistoryBackend; |
| 47 using history::HistoryBackendNotifier; | 47 using history::HistoryBackendNotifier; |
| 48 using history::TypedUrlSyncableService; | 48 using history::TypedUrlSyncableService; |
| 49 using testing::DoAll; | 49 using testing::DoAll; |
| 50 using testing::Return; | 50 using testing::Return; |
| 51 using testing::SetArgumentPointee; | 51 using testing::SetArgPointee; |
| 52 using testing::_; | 52 using testing::_; |
| 53 | 53 |
| 54 namespace browser_sync { | 54 namespace browser_sync { |
| 55 | 55 |
| 56 namespace { | 56 namespace { |
| 57 | 57 |
| 58 const char kDummySavingBrowserHistoryDisabled[] = "dummyPref"; | 58 const char kDummySavingBrowserHistoryDisabled[] = "dummyPref"; |
| 59 | 59 |
| 60 // Visits with this timestamp are treated as expired. | 60 // Visits with this timestamp are treated as expired. |
| 61 static const int EXPIRED_VISIT = -1; | 61 static const int EXPIRED_VISIT = -1; |
| (...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 ASSERT_EQ(0, syncable_service->GetErrorPercentage()); | 412 ASSERT_EQ(0, syncable_service->GetErrorPercentage()); |
| 413 } | 413 } |
| 414 | 414 |
| 415 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeEmptySync) { | 415 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeEmptySync) { |
| 416 history::URLRows entries; | 416 history::URLRows entries; |
| 417 history::VisitVector visits; | 417 history::VisitVector visits; |
| 418 entries.push_back( | 418 entries.push_back( |
| 419 MakeTypedUrlEntry("http://foo.com", "bar", 2, 15, false, &visits)); | 419 MakeTypedUrlEntry("http://foo.com", "bar", 2, 15, false, &visits)); |
| 420 | 420 |
| 421 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 421 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 422 .WillOnce(DoAll(SetArgumentPointee<0>(entries), Return(true))); | 422 .WillOnce(DoAll(SetArgPointee<0>(entries), Return(true))); |
| 423 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 423 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 424 .WillRepeatedly(DoAll(SetArgumentPointee<2>(visits), Return(true))); | 424 .WillRepeatedly(DoAll(SetArgPointee<2>(visits), Return(true))); |
| 425 SetIdleChangeProcessorExpectations(); | 425 SetIdleChangeProcessorExpectations(); |
| 426 CreateRootHelper create_root(this, syncer::TYPED_URLS); | 426 CreateRootHelper create_root(this, syncer::TYPED_URLS); |
| 427 TypedUrlSyncableService* syncable_service = | 427 TypedUrlSyncableService* syncable_service = |
| 428 StartSyncService(create_root.callback()); | 428 StartSyncService(create_root.callback()); |
| 429 history::URLRows sync_entries; | 429 history::URLRows sync_entries; |
| 430 GetTypedUrlsFromSyncDB(&sync_entries); | 430 GetTypedUrlsFromSyncDB(&sync_entries); |
| 431 ASSERT_EQ(1U, sync_entries.size()); | 431 ASSERT_EQ(1U, sync_entries.size()); |
| 432 EXPECT_TRUE(URLsEqual(entries[0], sync_entries[0])); | 432 EXPECT_TRUE(URLsEqual(entries[0], sync_entries[0])); |
| 433 ASSERT_EQ(0, syncable_service->GetErrorPercentage()); | 433 ASSERT_EQ(0, syncable_service->GetErrorPercentage()); |
| 434 } | 434 } |
| 435 | 435 |
| 436 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeErrorReadingVisits) { | 436 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeErrorReadingVisits) { |
| 437 history::URLRows entries; | 437 history::URLRows entries; |
| 438 history::VisitVector visits; | 438 history::VisitVector visits; |
| 439 history::URLRow native_entry1( | 439 history::URLRow native_entry1( |
| 440 MakeTypedUrlEntry("http://foo.com", "bar", 2, 15, false, &visits)); | 440 MakeTypedUrlEntry("http://foo.com", "bar", 2, 15, false, &visits)); |
| 441 history::URLRow native_entry2( | 441 history::URLRow native_entry2( |
| 442 MakeTypedUrlEntry("http://foo2.com", "bar", 3, 15, false, &visits)); | 442 MakeTypedUrlEntry("http://foo2.com", "bar", 3, 15, false, &visits)); |
| 443 entries.push_back(native_entry1); | 443 entries.push_back(native_entry1); |
| 444 entries.push_back(native_entry2); | 444 entries.push_back(native_entry2); |
| 445 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 445 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 446 .WillOnce(DoAll(SetArgumentPointee<0>(entries), Return(true))); | 446 .WillOnce(DoAll(SetArgPointee<0>(entries), Return(true))); |
| 447 // Return an error from GetMostRecentVisitsForURL() for the second URL. | 447 // Return an error from GetMostRecentVisitsForURL() for the second URL. |
| 448 EXPECT_CALL((history_backend()), | 448 EXPECT_CALL((history_backend()), |
| 449 GetMostRecentVisitsForURL(native_entry1.id(), _, _)) | 449 GetMostRecentVisitsForURL(native_entry1.id(), _, _)) |
| 450 .WillRepeatedly(Return(true)); | 450 .WillRepeatedly(Return(true)); |
| 451 EXPECT_CALL((history_backend()), | 451 EXPECT_CALL((history_backend()), |
| 452 GetMostRecentVisitsForURL(native_entry2.id(), _, _)) | 452 GetMostRecentVisitsForURL(native_entry2.id(), _, _)) |
| 453 .WillRepeatedly(Return(false)); | 453 .WillRepeatedly(Return(false)); |
| 454 SetIdleChangeProcessorExpectations(); | 454 SetIdleChangeProcessorExpectations(); |
| 455 CreateRootHelper create_root(this, syncer::TYPED_URLS); | 455 CreateRootHelper create_root(this, syncer::TYPED_URLS); |
| 456 StartSyncService(create_root.callback()); | 456 StartSyncService(create_root.callback()); |
| 457 history::URLRows sync_entries; | 457 history::URLRows sync_entries; |
| 458 GetTypedUrlsFromSyncDB(&sync_entries); | 458 GetTypedUrlsFromSyncDB(&sync_entries); |
| 459 ASSERT_EQ(1U, sync_entries.size()); | 459 ASSERT_EQ(1U, sync_entries.size()); |
| 460 EXPECT_TRUE(URLsEqual(native_entry1, sync_entries[0])); | 460 EXPECT_TRUE(URLsEqual(native_entry1, sync_entries[0])); |
| 461 } | 461 } |
| 462 | 462 |
| 463 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeWithBlankEmptySync) { | 463 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeWithBlankEmptySync) { |
| 464 std::vector<history::URLRow> entries; | 464 std::vector<history::URLRow> entries; |
| 465 history::VisitVector visits; | 465 history::VisitVector visits; |
| 466 // Add an empty URL. | 466 // Add an empty URL. |
| 467 entries.push_back(MakeTypedUrlEntry("", "bar", 2, 15, false, &visits)); | 467 entries.push_back(MakeTypedUrlEntry("", "bar", 2, 15, false, &visits)); |
| 468 entries.push_back( | 468 entries.push_back( |
| 469 MakeTypedUrlEntry("http://foo.com", "bar", 2, 15, false, &visits)); | 469 MakeTypedUrlEntry("http://foo.com", "bar", 2, 15, false, &visits)); |
| 470 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 470 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 471 .WillOnce(DoAll(SetArgumentPointee<0>(entries), Return(true))); | 471 .WillOnce(DoAll(SetArgPointee<0>(entries), Return(true))); |
| 472 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 472 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 473 .WillRepeatedly(DoAll(SetArgumentPointee<2>(visits), Return(true))); | 473 .WillRepeatedly(DoAll(SetArgPointee<2>(visits), Return(true))); |
| 474 SetIdleChangeProcessorExpectations(); | 474 SetIdleChangeProcessorExpectations(); |
| 475 CreateRootHelper create_root(this, syncer::TYPED_URLS); | 475 CreateRootHelper create_root(this, syncer::TYPED_URLS); |
| 476 StartSyncService(create_root.callback()); | 476 StartSyncService(create_root.callback()); |
| 477 std::vector<history::URLRow> sync_entries; | 477 std::vector<history::URLRow> sync_entries; |
| 478 GetTypedUrlsFromSyncDB(&sync_entries); | 478 GetTypedUrlsFromSyncDB(&sync_entries); |
| 479 // The empty URL should be ignored. | 479 // The empty URL should be ignored. |
| 480 ASSERT_EQ(1U, sync_entries.size()); | 480 ASSERT_EQ(1U, sync_entries.size()); |
| 481 EXPECT_TRUE(URLsEqual(entries[1], sync_entries[0])); | 481 EXPECT_TRUE(URLsEqual(entries[1], sync_entries[0])); |
| 482 } | 482 } |
| 483 | 483 |
| 484 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeHasSyncNoMerge) { | 484 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeHasSyncNoMerge) { |
| 485 history::VisitVector native_visits; | 485 history::VisitVector native_visits; |
| 486 history::VisitVector sync_visits; | 486 history::VisitVector sync_visits; |
| 487 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "entry", | 487 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "entry", |
| 488 2, 15, false, &native_visits)); | 488 2, 15, false, &native_visits)); |
| 489 history::URLRow sync_entry(MakeTypedUrlEntry("http://sync.com", "entry", 3, | 489 history::URLRow sync_entry(MakeTypedUrlEntry("http://sync.com", "entry", 3, |
| 490 16, false, &sync_visits)); | 490 16, false, &sync_visits)); |
| 491 | 491 |
| 492 history::URLRows native_entries; | 492 history::URLRows native_entries; |
| 493 native_entries.push_back(native_entry); | 493 native_entries.push_back(native_entry); |
| 494 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 494 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 495 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(true))); | 495 .WillOnce(DoAll(SetArgPointee<0>(native_entries), Return(true))); |
| 496 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 496 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 497 .WillRepeatedly( | 497 .WillRepeatedly(DoAll(SetArgPointee<2>(native_visits), Return(true))); |
| 498 DoAll(SetArgumentPointee<2>(native_visits), Return(true))); | |
| 499 EXPECT_CALL((history_backend()), AddVisits(_, _, history::SOURCE_SYNCED)) | 498 EXPECT_CALL((history_backend()), AddVisits(_, _, history::SOURCE_SYNCED)) |
| 500 .WillRepeatedly(Return(true)); | 499 .WillRepeatedly(Return(true)); |
| 501 | 500 |
| 502 history::URLRows sync_entries; | 501 history::URLRows sync_entries; |
| 503 sync_entries.push_back(sync_entry); | 502 sync_entries.push_back(sync_entry); |
| 504 | 503 |
| 505 EXPECT_CALL((history_backend()), UpdateURL(_, _)) | 504 EXPECT_CALL((history_backend()), UpdateURL(_, _)) |
| 506 .WillRepeatedly(Return(true)); | 505 .WillRepeatedly(Return(true)); |
| 507 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries)); | 506 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries)); |
| 508 | 507 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 546 merged_visits.push_back( | 545 merged_visits.push_back( |
| 547 history::VisitRow(sync_entry.id(), base::Time::FromInternalValue(15), 0, | 546 history::VisitRow(sync_entry.id(), base::Time::FromInternalValue(15), 0, |
| 548 ui::PageTransitionFromInt(0), 0)); | 547 ui::PageTransitionFromInt(0), 0)); |
| 549 | 548 |
| 550 history::URLRow merged_entry(MakeTypedUrlEntry("http://native.com", "name", 2, | 549 history::URLRow merged_entry(MakeTypedUrlEntry("http://native.com", "name", 2, |
| 551 17, false, &merged_visits)); | 550 17, false, &merged_visits)); |
| 552 | 551 |
| 553 history::URLRows native_entries; | 552 history::URLRows native_entries; |
| 554 native_entries.push_back(native_entry); | 553 native_entries.push_back(native_entry); |
| 555 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 554 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 556 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(true))); | 555 .WillOnce(DoAll(SetArgPointee<0>(native_entries), Return(true))); |
| 557 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 556 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 558 .WillRepeatedly( | 557 .WillRepeatedly(DoAll(SetArgPointee<2>(native_visits), Return(true))); |
| 559 DoAll(SetArgumentPointee<2>(native_visits), Return(true))); | |
| 560 EXPECT_CALL((history_backend()), AddVisits(_, _, history::SOURCE_SYNCED)) | 558 EXPECT_CALL((history_backend()), AddVisits(_, _, history::SOURCE_SYNCED)) |
| 561 .WillRepeatedly(Return(true)); | 559 .WillRepeatedly(Return(true)); |
| 562 | 560 |
| 563 history::URLRows sync_entries; | 561 history::URLRows sync_entries; |
| 564 sync_entries.push_back(sync_entry); | 562 sync_entries.push_back(sync_entry); |
| 565 | 563 |
| 566 EXPECT_CALL((history_backend()), UpdateURL(_, _)) | 564 EXPECT_CALL((history_backend()), UpdateURL(_, _)) |
| 567 .WillRepeatedly(Return(true)); | 565 .WillRepeatedly(Return(true)); |
| 568 EXPECT_CALL((history_backend()), SetPageTitle(_, _)).WillRepeatedly(Return()); | 566 EXPECT_CALL((history_backend()), SetPageTitle(_, _)).WillRepeatedly(Return()); |
| 569 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries)); | 567 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries)); |
| 570 | 568 |
| 571 history::URLRows new_sync_entries; | 569 history::URLRows new_sync_entries; |
| 572 GetTypedUrlsFromSyncDB(&new_sync_entries); | 570 GetTypedUrlsFromSyncDB(&new_sync_entries); |
| 573 ASSERT_EQ(1U, new_sync_entries.size()); | 571 ASSERT_EQ(1U, new_sync_entries.size()); |
| 574 EXPECT_TRUE(URLsEqual(merged_entry, new_sync_entries[0])); | 572 EXPECT_TRUE(URLsEqual(merged_entry, new_sync_entries[0])); |
| 575 } | 573 } |
| 576 | 574 |
| 577 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeWithErrorHasSyncMerge) { | 575 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeWithErrorHasSyncMerge) { |
| 578 history::VisitVector native_visits; | 576 history::VisitVector native_visits; |
| 579 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "native", | 577 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "native", |
| 580 2, 15, false, &native_visits)); | 578 2, 15, false, &native_visits)); |
| 581 history::VisitVector sync_visits; | 579 history::VisitVector sync_visits; |
| 582 history::URLRow sync_entry(MakeTypedUrlEntry("http://native.com", "sync", 1, | 580 history::URLRow sync_entry(MakeTypedUrlEntry("http://native.com", "sync", 1, |
| 583 17, false, &sync_visits)); | 581 17, false, &sync_visits)); |
| 584 | 582 |
| 585 history::URLRows native_entries; | 583 history::URLRows native_entries; |
| 586 native_entries.push_back(native_entry); | 584 native_entries.push_back(native_entry); |
| 587 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 585 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 588 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(true))); | 586 .WillOnce(DoAll(SetArgPointee<0>(native_entries), Return(true))); |
| 589 // Return an error getting the visits for the native URL. | 587 // Return an error getting the visits for the native URL. |
| 590 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 588 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 591 .WillRepeatedly(Return(false)); | 589 .WillRepeatedly(Return(false)); |
| 592 EXPECT_CALL((history_backend()), GetURL(_, _)) | 590 EXPECT_CALL((history_backend()), GetURL(_, _)) |
| 593 .WillRepeatedly(DoAll(SetArgumentPointee<1>(native_entry), Return(true))); | 591 .WillRepeatedly(DoAll(SetArgPointee<1>(native_entry), Return(true))); |
| 594 EXPECT_CALL((history_backend()), AddVisits(_, _, history::SOURCE_SYNCED)) | 592 EXPECT_CALL((history_backend()), AddVisits(_, _, history::SOURCE_SYNCED)) |
| 595 .WillRepeatedly(Return(true)); | 593 .WillRepeatedly(Return(true)); |
| 596 | 594 |
| 597 history::URLRows sync_entries; | 595 history::URLRows sync_entries; |
| 598 sync_entries.push_back(sync_entry); | 596 sync_entries.push_back(sync_entry); |
| 599 | 597 |
| 600 EXPECT_CALL((history_backend()), UpdateURL(_, _)) | 598 EXPECT_CALL((history_backend()), UpdateURL(_, _)) |
| 601 .WillRepeatedly(Return(true)); | 599 .WillRepeatedly(Return(true)); |
| 602 EXPECT_CALL((history_backend()), SetPageTitle(_, _)).WillRepeatedly(Return()); | 600 EXPECT_CALL((history_backend()), SetPageTitle(_, _)).WillRepeatedly(Return()); |
| 603 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries)); | 601 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries)); |
| 604 | 602 |
| 605 history::URLRows new_sync_entries; | 603 history::URLRows new_sync_entries; |
| 606 GetTypedUrlsFromSyncDB(&new_sync_entries); | 604 GetTypedUrlsFromSyncDB(&new_sync_entries); |
| 607 ASSERT_EQ(1U, new_sync_entries.size()); | 605 ASSERT_EQ(1U, new_sync_entries.size()); |
| 608 EXPECT_TRUE(URLsEqual(sync_entry, new_sync_entries[0])); | 606 EXPECT_TRUE(URLsEqual(sync_entry, new_sync_entries[0])); |
| 609 } | 607 } |
| 610 | 608 |
| 611 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeAdd) { | 609 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeAdd) { |
| 612 history::VisitVector added_visits; | 610 history::VisitVector added_visits; |
| 613 history::URLRow added_entry(MakeTypedUrlEntry("http://added.com", "entry", 2, | 611 history::URLRow added_entry(MakeTypedUrlEntry("http://added.com", "entry", 2, |
| 614 15, false, &added_visits)); | 612 15, false, &added_visits)); |
| 615 | 613 |
| 616 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true)); | 614 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true)); |
| 617 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 615 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 618 .WillOnce(DoAll(SetArgumentPointee<2>(added_visits), Return(true))); | 616 .WillOnce(DoAll(SetArgPointee<2>(added_visits), Return(true))); |
| 619 | 617 |
| 620 SetIdleChangeProcessorExpectations(); | 618 SetIdleChangeProcessorExpectations(); |
| 621 CreateRootHelper create_root(this, syncer::TYPED_URLS); | 619 CreateRootHelper create_root(this, syncer::TYPED_URLS); |
| 622 StartSyncService(create_root.callback()); | 620 StartSyncService(create_root.callback()); |
| 623 | 621 |
| 624 history::URLRows changed_urls; | 622 history::URLRows changed_urls; |
| 625 changed_urls.push_back(added_entry); | 623 changed_urls.push_back(added_entry); |
| 626 SendNotificationURLsModified(changed_urls); | 624 SendNotificationURLsModified(changed_urls); |
| 627 | 625 |
| 628 history::URLRows new_sync_entries; | 626 history::URLRows new_sync_entries; |
| 629 GetTypedUrlsFromSyncDB(&new_sync_entries); | 627 GetTypedUrlsFromSyncDB(&new_sync_entries); |
| 630 ASSERT_EQ(1U, new_sync_entries.size()); | 628 ASSERT_EQ(1U, new_sync_entries.size()); |
| 631 EXPECT_TRUE(URLsEqual(added_entry, new_sync_entries[0])); | 629 EXPECT_TRUE(URLsEqual(added_entry, new_sync_entries[0])); |
| 632 } | 630 } |
| 633 | 631 |
| 634 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeAddWithBlank) { | 632 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeAddWithBlank) { |
| 635 history::VisitVector added_visits; | 633 history::VisitVector added_visits; |
| 636 history::URLRow empty_entry( | 634 history::URLRow empty_entry( |
| 637 MakeTypedUrlEntry("", "entry", 2, 15, false, &added_visits)); | 635 MakeTypedUrlEntry("", "entry", 2, 15, false, &added_visits)); |
| 638 history::URLRow added_entry(MakeTypedUrlEntry("http://added.com", "entry", 2, | 636 history::URLRow added_entry(MakeTypedUrlEntry("http://added.com", "entry", 2, |
| 639 15, false, &added_visits)); | 637 15, false, &added_visits)); |
| 640 | 638 |
| 641 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true)); | 639 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true)); |
| 642 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 640 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 643 .WillRepeatedly(DoAll(SetArgumentPointee<2>(added_visits), Return(true))); | 641 .WillRepeatedly(DoAll(SetArgPointee<2>(added_visits), Return(true))); |
| 644 | 642 |
| 645 SetIdleChangeProcessorExpectations(); | 643 SetIdleChangeProcessorExpectations(); |
| 646 CreateRootHelper create_root(this, syncer::TYPED_URLS); | 644 CreateRootHelper create_root(this, syncer::TYPED_URLS); |
| 647 StartSyncService(create_root.callback()); | 645 StartSyncService(create_root.callback()); |
| 648 | 646 |
| 649 history::URLRows changed_urls; | 647 history::URLRows changed_urls; |
| 650 changed_urls.push_back(empty_entry); | 648 changed_urls.push_back(empty_entry); |
| 651 changed_urls.push_back(added_entry); | 649 changed_urls.push_back(added_entry); |
| 652 SendNotificationURLsModified(changed_urls); | 650 SendNotificationURLsModified(changed_urls); |
| 653 | 651 |
| 654 std::vector<history::URLRow> new_sync_entries; | 652 std::vector<history::URLRow> new_sync_entries; |
| 655 GetTypedUrlsFromSyncDB(&new_sync_entries); | 653 GetTypedUrlsFromSyncDB(&new_sync_entries); |
| 656 ASSERT_EQ(1U, new_sync_entries.size()); | 654 ASSERT_EQ(1U, new_sync_entries.size()); |
| 657 EXPECT_TRUE(URLsEqual(added_entry, new_sync_entries[0])); | 655 EXPECT_TRUE(URLsEqual(added_entry, new_sync_entries[0])); |
| 658 } | 656 } |
| 659 | 657 |
| 660 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeUpdate) { | 658 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeUpdate) { |
| 661 history::VisitVector original_visits; | 659 history::VisitVector original_visits; |
| 662 history::URLRow original_entry(MakeTypedUrlEntry( | 660 history::URLRow original_entry(MakeTypedUrlEntry( |
| 663 "http://mine.com", "entry", 2, 15, false, &original_visits)); | 661 "http://mine.com", "entry", 2, 15, false, &original_visits)); |
| 664 history::URLRows original_entries; | 662 history::URLRows original_entries; |
| 665 original_entries.push_back(original_entry); | 663 original_entries.push_back(original_entry); |
| 666 | 664 |
| 667 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 665 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 668 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true))); | 666 .WillOnce(DoAll(SetArgPointee<0>(original_entries), Return(true))); |
| 669 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 667 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 670 .WillOnce(DoAll(SetArgumentPointee<2>(original_visits), Return(true))); | 668 .WillOnce(DoAll(SetArgPointee<2>(original_visits), Return(true))); |
| 671 CreateRootHelper create_root(this, syncer::TYPED_URLS); | 669 CreateRootHelper create_root(this, syncer::TYPED_URLS); |
| 672 StartSyncService(create_root.callback()); | 670 StartSyncService(create_root.callback()); |
| 673 | 671 |
| 674 history::VisitVector updated_visits; | 672 history::VisitVector updated_visits; |
| 675 history::URLRow updated_entry(MakeTypedUrlEntry("http://mine.com", "entry", 7, | 673 history::URLRow updated_entry(MakeTypedUrlEntry("http://mine.com", "entry", 7, |
| 676 17, false, &updated_visits)); | 674 17, false, &updated_visits)); |
| 677 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 675 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 678 .WillOnce(DoAll(SetArgumentPointee<2>(updated_visits), Return(true))); | 676 .WillOnce(DoAll(SetArgPointee<2>(updated_visits), Return(true))); |
| 679 | 677 |
| 680 history::URLRows changed_urls; | 678 history::URLRows changed_urls; |
| 681 changed_urls.push_back(updated_entry); | 679 changed_urls.push_back(updated_entry); |
| 682 SendNotificationURLsModified(changed_urls); | 680 SendNotificationURLsModified(changed_urls); |
| 683 | 681 |
| 684 history::URLRows new_sync_entries; | 682 history::URLRows new_sync_entries; |
| 685 GetTypedUrlsFromSyncDB(&new_sync_entries); | 683 GetTypedUrlsFromSyncDB(&new_sync_entries); |
| 686 ASSERT_EQ(1U, new_sync_entries.size()); | 684 ASSERT_EQ(1U, new_sync_entries.size()); |
| 687 EXPECT_TRUE(URLsEqual(updated_entry, new_sync_entries[0])); | 685 EXPECT_TRUE(URLsEqual(updated_entry, new_sync_entries[0])); |
| 688 } | 686 } |
| 689 | 687 |
| 690 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeAddFromVisit) { | 688 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeAddFromVisit) { |
| 691 history::VisitVector added_visits; | 689 history::VisitVector added_visits; |
| 692 history::URLRow added_entry(MakeTypedUrlEntry("http://added.com", "entry", 2, | 690 history::URLRow added_entry(MakeTypedUrlEntry("http://added.com", "entry", 2, |
| 693 15, false, &added_visits)); | 691 15, false, &added_visits)); |
| 694 | 692 |
| 695 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true)); | 693 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true)); |
| 696 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 694 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 697 .WillOnce(DoAll(SetArgumentPointee<2>(added_visits), Return(true))); | 695 .WillOnce(DoAll(SetArgPointee<2>(added_visits), Return(true))); |
| 698 | 696 |
| 699 SetIdleChangeProcessorExpectations(); | 697 SetIdleChangeProcessorExpectations(); |
| 700 CreateRootHelper create_root(this, syncer::TYPED_URLS); | 698 CreateRootHelper create_root(this, syncer::TYPED_URLS); |
| 701 StartSyncService(create_root.callback()); | 699 StartSyncService(create_root.callback()); |
| 702 | 700 |
| 703 SendNotificationURLVisited(ui::PAGE_TRANSITION_TYPED, added_entry); | 701 SendNotificationURLVisited(ui::PAGE_TRANSITION_TYPED, added_entry); |
| 704 | 702 |
| 705 history::URLRows new_sync_entries; | 703 history::URLRows new_sync_entries; |
| 706 GetTypedUrlsFromSyncDB(&new_sync_entries); | 704 GetTypedUrlsFromSyncDB(&new_sync_entries); |
| 707 ASSERT_EQ(1U, new_sync_entries.size()); | 705 ASSERT_EQ(1U, new_sync_entries.size()); |
| 708 EXPECT_TRUE(URLsEqual(added_entry, new_sync_entries[0])); | 706 EXPECT_TRUE(URLsEqual(added_entry, new_sync_entries[0])); |
| 709 } | 707 } |
| 710 | 708 |
| 711 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeUpdateFromVisit) { | 709 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeUpdateFromVisit) { |
| 712 history::VisitVector original_visits; | 710 history::VisitVector original_visits; |
| 713 history::URLRow original_entry(MakeTypedUrlEntry( | 711 history::URLRow original_entry(MakeTypedUrlEntry( |
| 714 "http://mine.com", "entry", 2, 15, false, &original_visits)); | 712 "http://mine.com", "entry", 2, 15, false, &original_visits)); |
| 715 history::URLRows original_entries; | 713 history::URLRows original_entries; |
| 716 original_entries.push_back(original_entry); | 714 original_entries.push_back(original_entry); |
| 717 | 715 |
| 718 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 716 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 719 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true))); | 717 .WillOnce(DoAll(SetArgPointee<0>(original_entries), Return(true))); |
| 720 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 718 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 721 .WillOnce(DoAll(SetArgumentPointee<2>(original_visits), Return(true))); | 719 .WillOnce(DoAll(SetArgPointee<2>(original_visits), Return(true))); |
| 722 CreateRootHelper create_root(this, syncer::TYPED_URLS); | 720 CreateRootHelper create_root(this, syncer::TYPED_URLS); |
| 723 StartSyncService(create_root.callback()); | 721 StartSyncService(create_root.callback()); |
| 724 | 722 |
| 725 history::VisitVector updated_visits; | 723 history::VisitVector updated_visits; |
| 726 history::URLRow updated_entry(MakeTypedUrlEntry("http://mine.com", "entry", 7, | 724 history::URLRow updated_entry(MakeTypedUrlEntry("http://mine.com", "entry", 7, |
| 727 17, false, &updated_visits)); | 725 17, false, &updated_visits)); |
| 728 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 726 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 729 .WillOnce(DoAll(SetArgumentPointee<2>(updated_visits), Return(true))); | 727 .WillOnce(DoAll(SetArgPointee<2>(updated_visits), Return(true))); |
| 730 | 728 |
| 731 SendNotificationURLVisited(ui::PAGE_TRANSITION_TYPED, updated_entry); | 729 SendNotificationURLVisited(ui::PAGE_TRANSITION_TYPED, updated_entry); |
| 732 | 730 |
| 733 history::URLRows new_sync_entries; | 731 history::URLRows new_sync_entries; |
| 734 GetTypedUrlsFromSyncDB(&new_sync_entries); | 732 GetTypedUrlsFromSyncDB(&new_sync_entries); |
| 735 ASSERT_EQ(1U, new_sync_entries.size()); | 733 ASSERT_EQ(1U, new_sync_entries.size()); |
| 736 EXPECT_TRUE(URLsEqual(updated_entry, new_sync_entries[0])); | 734 EXPECT_TRUE(URLsEqual(updated_entry, new_sync_entries[0])); |
| 737 } | 735 } |
| 738 | 736 |
| 739 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserIgnoreChangeUpdateFromVisit) { | 737 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserIgnoreChangeUpdateFromVisit) { |
| 740 history::VisitVector original_visits; | 738 history::VisitVector original_visits; |
| 741 history::URLRow original_entry(MakeTypedUrlEntry( | 739 history::URLRow original_entry(MakeTypedUrlEntry( |
| 742 "http://mine.com", "entry", 2, 15, false, &original_visits)); | 740 "http://mine.com", "entry", 2, 15, false, &original_visits)); |
| 743 history::URLRows original_entries; | 741 history::URLRows original_entries; |
| 744 original_entries.push_back(original_entry); | 742 original_entries.push_back(original_entry); |
| 745 | 743 |
| 746 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 744 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 747 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true))); | 745 .WillOnce(DoAll(SetArgPointee<0>(original_entries), Return(true))); |
| 748 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 746 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 749 .WillRepeatedly( | 747 .WillRepeatedly(DoAll(SetArgPointee<2>(original_visits), Return(true))); |
| 750 DoAll(SetArgumentPointee<2>(original_visits), Return(true))); | |
| 751 CreateRootHelper create_root(this, syncer::TYPED_URLS); | 748 CreateRootHelper create_root(this, syncer::TYPED_URLS); |
| 752 StartSyncService(create_root.callback()); | 749 StartSyncService(create_root.callback()); |
| 753 history::URLRows new_sync_entries; | 750 history::URLRows new_sync_entries; |
| 754 GetTypedUrlsFromSyncDB(&new_sync_entries); | 751 GetTypedUrlsFromSyncDB(&new_sync_entries); |
| 755 ASSERT_EQ(1U, new_sync_entries.size()); | 752 ASSERT_EQ(1U, new_sync_entries.size()); |
| 756 EXPECT_TRUE(URLsEqual(original_entry, new_sync_entries[0])); | 753 EXPECT_TRUE(URLsEqual(original_entry, new_sync_entries[0])); |
| 757 | 754 |
| 758 history::VisitVector updated_visits; | 755 history::VisitVector updated_visits; |
| 759 history::URLRow updated_entry(MakeTypedUrlEntry("http://mine.com", "entry", 7, | 756 history::URLRow updated_entry(MakeTypedUrlEntry("http://mine.com", "entry", 7, |
| 760 15, false, &updated_visits)); | 757 15, false, &updated_visits)); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 794 history::URLRow original_entry1(MakeTypedUrlEntry( | 791 history::URLRow original_entry1(MakeTypedUrlEntry( |
| 795 "http://mine.com", "entry", 2, 15, false, &original_visits1)); | 792 "http://mine.com", "entry", 2, 15, false, &original_visits1)); |
| 796 history::VisitVector original_visits2; | 793 history::VisitVector original_visits2; |
| 797 history::URLRow original_entry2(MakeTypedUrlEntry( | 794 history::URLRow original_entry2(MakeTypedUrlEntry( |
| 798 "http://mine2.com", "entry2", 3, 15, false, &original_visits2)); | 795 "http://mine2.com", "entry2", 3, 15, false, &original_visits2)); |
| 799 history::URLRows original_entries; | 796 history::URLRows original_entries; |
| 800 original_entries.push_back(original_entry1); | 797 original_entries.push_back(original_entry1); |
| 801 original_entries.push_back(original_entry2); | 798 original_entries.push_back(original_entry2); |
| 802 | 799 |
| 803 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 800 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 804 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true))); | 801 .WillOnce(DoAll(SetArgPointee<0>(original_entries), Return(true))); |
| 805 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 802 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 806 .WillRepeatedly( | 803 .WillRepeatedly(DoAll(SetArgPointee<2>(original_visits1), Return(true))); |
| 807 DoAll(SetArgumentPointee<2>(original_visits1), Return(true))); | |
| 808 CreateRootHelper create_root(this, syncer::TYPED_URLS); | 804 CreateRootHelper create_root(this, syncer::TYPED_URLS); |
| 809 StartSyncService(create_root.callback()); | 805 StartSyncService(create_root.callback()); |
| 810 | 806 |
| 811 history::URLRows rows; | 807 history::URLRows rows; |
| 812 rows.push_back(history::URLRow(GURL("http://mine.com"))); | 808 rows.push_back(history::URLRow(GURL("http://mine.com"))); |
| 813 SendNotificationURLsDeleted(false, false, rows, std::set<GURL>()); | 809 SendNotificationURLsDeleted(false, false, rows, std::set<GURL>()); |
| 814 history::URLRows new_sync_entries; | 810 history::URLRows new_sync_entries; |
| 815 GetTypedUrlsFromSyncDB(&new_sync_entries); | 811 GetTypedUrlsFromSyncDB(&new_sync_entries); |
| 816 ASSERT_EQ(1U, new_sync_entries.size()); | 812 ASSERT_EQ(1U, new_sync_entries.size()); |
| 817 EXPECT_TRUE(URLsEqual(original_entry2, new_sync_entries[0])); | 813 EXPECT_TRUE(URLsEqual(original_entry2, new_sync_entries[0])); |
| 818 } | 814 } |
| 819 | 815 |
| 820 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeRemoveExpired) { | 816 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeRemoveExpired) { |
| 821 history::VisitVector original_visits1; | 817 history::VisitVector original_visits1; |
| 822 history::URLRow original_entry1(MakeTypedUrlEntry( | 818 history::URLRow original_entry1(MakeTypedUrlEntry( |
| 823 "http://mine.com", "entry", 2, 15, false, &original_visits1)); | 819 "http://mine.com", "entry", 2, 15, false, &original_visits1)); |
| 824 history::VisitVector original_visits2; | 820 history::VisitVector original_visits2; |
| 825 history::URLRow original_entry2(MakeTypedUrlEntry( | 821 history::URLRow original_entry2(MakeTypedUrlEntry( |
| 826 "http://mine2.com", "entry2", 3, 15, false, &original_visits2)); | 822 "http://mine2.com", "entry2", 3, 15, false, &original_visits2)); |
| 827 history::URLRows original_entries; | 823 history::URLRows original_entries; |
| 828 original_entries.push_back(original_entry1); | 824 original_entries.push_back(original_entry1); |
| 829 original_entries.push_back(original_entry2); | 825 original_entries.push_back(original_entry2); |
| 830 | 826 |
| 831 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 827 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 832 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true))); | 828 .WillOnce(DoAll(SetArgPointee<0>(original_entries), Return(true))); |
| 833 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 829 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 834 .WillRepeatedly( | 830 .WillRepeatedly(DoAll(SetArgPointee<2>(original_visits1), Return(true))); |
| 835 DoAll(SetArgumentPointee<2>(original_visits1), Return(true))); | |
| 836 CreateRootHelper create_root(this, syncer::TYPED_URLS); | 831 CreateRootHelper create_root(this, syncer::TYPED_URLS); |
| 837 StartSyncService(create_root.callback()); | 832 StartSyncService(create_root.callback()); |
| 838 | 833 |
| 839 // Setting expired=true should cause the sync code to ignore this deletion. | 834 // Setting expired=true should cause the sync code to ignore this deletion. |
| 840 history::URLRows rows; | 835 history::URLRows rows; |
| 841 rows.push_back(history::URLRow(GURL("http://mine.com"))); | 836 rows.push_back(history::URLRow(GURL("http://mine.com"))); |
| 842 SendNotificationURLsDeleted(false, true, rows, std::set<GURL>()); | 837 SendNotificationURLsDeleted(false, true, rows, std::set<GURL>()); |
| 843 history::URLRows new_sync_entries; | 838 history::URLRows new_sync_entries; |
| 844 GetTypedUrlsFromSyncDB(&new_sync_entries); | 839 GetTypedUrlsFromSyncDB(&new_sync_entries); |
| 845 // Both URLs should still be there. | 840 // Both URLs should still be there. |
| 846 ASSERT_EQ(2U, new_sync_entries.size()); | 841 ASSERT_EQ(2U, new_sync_entries.size()); |
| 847 } | 842 } |
| 848 | 843 |
| 849 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeRemoveAll) { | 844 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeRemoveAll) { |
| 850 history::VisitVector original_visits1; | 845 history::VisitVector original_visits1; |
| 851 history::URLRow original_entry1(MakeTypedUrlEntry( | 846 history::URLRow original_entry1(MakeTypedUrlEntry( |
| 852 "http://mine.com", "entry", 2, 15, false, &original_visits1)); | 847 "http://mine.com", "entry", 2, 15, false, &original_visits1)); |
| 853 history::VisitVector original_visits2; | 848 history::VisitVector original_visits2; |
| 854 history::URLRow original_entry2(MakeTypedUrlEntry( | 849 history::URLRow original_entry2(MakeTypedUrlEntry( |
| 855 "http://mine2.com", "entry2", 3, 15, false, &original_visits2)); | 850 "http://mine2.com", "entry2", 3, 15, false, &original_visits2)); |
| 856 history::URLRows original_entries; | 851 history::URLRows original_entries; |
| 857 original_entries.push_back(original_entry1); | 852 original_entries.push_back(original_entry1); |
| 858 original_entries.push_back(original_entry2); | 853 original_entries.push_back(original_entry2); |
| 859 | 854 |
| 860 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 855 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 861 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true))); | 856 .WillOnce(DoAll(SetArgPointee<0>(original_entries), Return(true))); |
| 862 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 857 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 863 .WillRepeatedly( | 858 .WillRepeatedly(DoAll(SetArgPointee<2>(original_visits1), Return(true))); |
| 864 DoAll(SetArgumentPointee<2>(original_visits1), Return(true))); | |
| 865 CreateRootHelper create_root(this, syncer::TYPED_URLS); | 859 CreateRootHelper create_root(this, syncer::TYPED_URLS); |
| 866 StartSyncService(create_root.callback()); | 860 StartSyncService(create_root.callback()); |
| 867 | 861 |
| 868 history::URLRows new_sync_entries; | 862 history::URLRows new_sync_entries; |
| 869 GetTypedUrlsFromSyncDB(&new_sync_entries); | 863 GetTypedUrlsFromSyncDB(&new_sync_entries); |
| 870 ASSERT_EQ(2U, new_sync_entries.size()); | 864 ASSERT_EQ(2U, new_sync_entries.size()); |
| 871 | 865 |
| 872 SendNotificationURLsDeleted(true, false, history::URLRows(), | 866 SendNotificationURLsDeleted(true, false, history::URLRows(), |
| 873 std::set<GURL>()); | 867 std::set<GURL>()); |
| 874 | 868 |
| 875 GetTypedUrlsFromSyncDB(&new_sync_entries); | 869 GetTypedUrlsFromSyncDB(&new_sync_entries); |
| 876 ASSERT_EQ(0U, new_sync_entries.size()); | 870 ASSERT_EQ(0U, new_sync_entries.size()); |
| 877 } | 871 } |
| 878 | 872 |
| 879 TEST_F(ProfileSyncServiceTypedUrlTest, FailWriteToHistoryBackend) { | 873 TEST_F(ProfileSyncServiceTypedUrlTest, FailWriteToHistoryBackend) { |
| 880 history::VisitVector native_visits; | 874 history::VisitVector native_visits; |
| 881 history::VisitVector sync_visits; | 875 history::VisitVector sync_visits; |
| 882 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "entry", | 876 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "entry", |
| 883 2, 15, false, &native_visits)); | 877 2, 15, false, &native_visits)); |
| 884 history::URLRow sync_entry(MakeTypedUrlEntry("http://sync.com", "entry", 3, | 878 history::URLRow sync_entry(MakeTypedUrlEntry("http://sync.com", "entry", 3, |
| 885 16, false, &sync_visits)); | 879 16, false, &sync_visits)); |
| 886 | 880 |
| 887 history::URLRows native_entries; | 881 history::URLRows native_entries; |
| 888 native_entries.push_back(native_entry); | 882 native_entries.push_back(native_entry); |
| 889 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 883 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 890 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(true))); | 884 .WillOnce(DoAll(SetArgPointee<0>(native_entries), Return(true))); |
| 891 EXPECT_CALL((history_backend()), GetURL(_, _)) | 885 EXPECT_CALL((history_backend()), GetURL(_, _)) |
| 892 .WillOnce(DoAll(SetArgumentPointee<1>(native_entry), Return(false))); | 886 .WillOnce(DoAll(SetArgPointee<1>(native_entry), Return(false))); |
| 893 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 887 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 894 .WillRepeatedly( | 888 .WillRepeatedly(DoAll(SetArgPointee<2>(native_visits), Return(true))); |
| 895 DoAll(SetArgumentPointee<2>(native_visits), Return(true))); | |
| 896 EXPECT_CALL((history_backend()), AddVisits(_, _, history::SOURCE_SYNCED)) | 889 EXPECT_CALL((history_backend()), AddVisits(_, _, history::SOURCE_SYNCED)) |
| 897 .WillRepeatedly(Return(false)); | 890 .WillRepeatedly(Return(false)); |
| 898 | 891 |
| 899 history::URLRows sync_entries; | 892 history::URLRows sync_entries; |
| 900 sync_entries.push_back(sync_entry); | 893 sync_entries.push_back(sync_entry); |
| 901 | 894 |
| 902 EXPECT_CALL((history_backend()), UpdateURL(_, _)) | 895 EXPECT_CALL((history_backend()), UpdateURL(_, _)) |
| 903 .WillRepeatedly(Return(false)); | 896 .WillRepeatedly(Return(false)); |
| 904 TypedUrlSyncableService* syncable_service = | 897 TypedUrlSyncableService* syncable_service = |
| 905 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries)); | 898 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 917 history::VisitVector native_visits; | 910 history::VisitVector native_visits; |
| 918 history::VisitVector sync_visits; | 911 history::VisitVector sync_visits; |
| 919 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "entry", | 912 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "entry", |
| 920 2, 15, false, &native_visits)); | 913 2, 15, false, &native_visits)); |
| 921 history::URLRow sync_entry(MakeTypedUrlEntry("http://sync.com", "entry", 3, | 914 history::URLRow sync_entry(MakeTypedUrlEntry("http://sync.com", "entry", 3, |
| 922 16, false, &sync_visits)); | 915 16, false, &sync_visits)); |
| 923 | 916 |
| 924 history::URLRows native_entries; | 917 history::URLRows native_entries; |
| 925 native_entries.push_back(native_entry); | 918 native_entries.push_back(native_entry); |
| 926 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 919 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 927 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(false))); | 920 .WillOnce(DoAll(SetArgPointee<0>(native_entries), Return(false))); |
| 928 | 921 |
| 929 history::URLRows sync_entries; | 922 history::URLRows sync_entries; |
| 930 sync_entries.push_back(sync_entry); | 923 sync_entries.push_back(sync_entry); |
| 931 | 924 |
| 932 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries)); | 925 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries)); |
| 933 // Errors getting typed URLs will cause an unrecoverable error (since we can | 926 // Errors getting typed URLs will cause an unrecoverable error (since we can |
| 934 // do *nothing* in that case). | 927 // do *nothing* in that case). |
| 935 ASSERT_TRUE(sync_service()->data_type_status_table().GetFailedTypes().Has( | 928 ASSERT_TRUE(sync_service()->data_type_status_table().GetFailedTypes().Has( |
| 936 syncer::TYPED_URLS)); | 929 syncer::TYPED_URLS)); |
| 937 ASSERT_EQ(1u, | 930 ASSERT_EQ(1u, |
| 938 sync_service()->data_type_status_table().GetFailedTypes().Size()); | 931 sync_service()->data_type_status_table().GetFailedTypes().Size()); |
| 939 // Can't check GetErrorPercentage(), because generating an unrecoverable | 932 // Can't check GetErrorPercentage(), because generating an unrecoverable |
| 940 // error will free the model associator. | 933 // error will free the model associator. |
| 941 } | 934 } |
| 942 | 935 |
| 943 TEST_F(ProfileSyncServiceTypedUrlTest, IgnoreLocalFileURL) { | 936 TEST_F(ProfileSyncServiceTypedUrlTest, IgnoreLocalFileURL) { |
| 944 history::VisitVector original_visits; | 937 history::VisitVector original_visits; |
| 945 // Create http and file url. | 938 // Create http and file url. |
| 946 history::URLRow url_entry(MakeTypedUrlEntry("http://yey.com", "yey", 12, 15, | 939 history::URLRow url_entry(MakeTypedUrlEntry("http://yey.com", "yey", 12, 15, |
| 947 false, &original_visits)); | 940 false, &original_visits)); |
| 948 history::URLRow file_entry(MakeTypedUrlEntry( | 941 history::URLRow file_entry(MakeTypedUrlEntry( |
| 949 "file:///kitty.jpg", "kitteh", 12, 15, false, &original_visits)); | 942 "file:///kitty.jpg", "kitteh", 12, 15, false, &original_visits)); |
| 950 | 943 |
| 951 history::URLRows original_entries; | 944 history::URLRows original_entries; |
| 952 original_entries.push_back(url_entry); | 945 original_entries.push_back(url_entry); |
| 953 original_entries.push_back(file_entry); | 946 original_entries.push_back(file_entry); |
| 954 | 947 |
| 955 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 948 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 956 .WillRepeatedly( | 949 .WillRepeatedly(DoAll(SetArgPointee<0>(original_entries), Return(true))); |
| 957 DoAll(SetArgumentPointee<0>(original_entries), Return(true))); | |
| 958 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 950 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 959 .WillRepeatedly( | 951 .WillRepeatedly(DoAll(SetArgPointee<2>(original_visits), Return(true))); |
| 960 DoAll(SetArgumentPointee<2>(original_visits), Return(true))); | |
| 961 CreateRootHelper create_root(this, syncer::TYPED_URLS); | 952 CreateRootHelper create_root(this, syncer::TYPED_URLS); |
| 962 StartSyncService(create_root.callback()); | 953 StartSyncService(create_root.callback()); |
| 963 | 954 |
| 964 history::VisitVector updated_visits; | 955 history::VisitVector updated_visits; |
| 965 // Create updates for the previous urls + a new file one. | 956 // Create updates for the previous urls + a new file one. |
| 966 history::URLRow updated_url_entry(MakeTypedUrlEntry( | 957 history::URLRow updated_url_entry(MakeTypedUrlEntry( |
| 967 "http://yey.com", "yey", 20, 15, false, &updated_visits)); | 958 "http://yey.com", "yey", 20, 15, false, &updated_visits)); |
| 968 history::URLRow updated_file_entry(MakeTypedUrlEntry( | 959 history::URLRow updated_file_entry(MakeTypedUrlEntry( |
| 969 "file:///cat.jpg", "cat", 20, 15, false, &updated_visits)); | 960 "file:///cat.jpg", "cat", 20, 15, false, &updated_visits)); |
| 970 history::URLRow new_file_entry(MakeTypedUrlEntry("file:///dog.jpg", "dog", 20, | 961 history::URLRow new_file_entry(MakeTypedUrlEntry("file:///dog.jpg", "dog", 20, |
| (...skipping 20 matching lines...) Expand all Loading... |
| 991 history::URLRow url_entry(MakeTypedUrlEntry("http://yey.com", "yey", 12, 15, | 982 history::URLRow url_entry(MakeTypedUrlEntry("http://yey.com", "yey", 12, 15, |
| 992 false, &original_visits)); | 983 false, &original_visits)); |
| 993 history::URLRow localhost_entry(MakeTypedUrlEntry( | 984 history::URLRow localhost_entry(MakeTypedUrlEntry( |
| 994 "http://localhost", "localhost", 12, 15, false, &original_visits)); | 985 "http://localhost", "localhost", 12, 15, false, &original_visits)); |
| 995 | 986 |
| 996 history::URLRows original_entries; | 987 history::URLRows original_entries; |
| 997 original_entries.push_back(url_entry); | 988 original_entries.push_back(url_entry); |
| 998 original_entries.push_back(localhost_entry); | 989 original_entries.push_back(localhost_entry); |
| 999 | 990 |
| 1000 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) | 991 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) |
| 1001 .WillRepeatedly( | 992 .WillRepeatedly(DoAll(SetArgPointee<0>(original_entries), Return(true))); |
| 1002 DoAll(SetArgumentPointee<0>(original_entries), Return(true))); | |
| 1003 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) | 993 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) |
| 1004 .WillRepeatedly( | 994 .WillRepeatedly(DoAll(SetArgPointee<2>(original_visits), Return(true))); |
| 1005 DoAll(SetArgumentPointee<2>(original_visits), Return(true))); | |
| 1006 CreateRootHelper create_root(this, syncer::TYPED_URLS); | 995 CreateRootHelper create_root(this, syncer::TYPED_URLS); |
| 1007 StartSyncService(create_root.callback()); | 996 StartSyncService(create_root.callback()); |
| 1008 | 997 |
| 1009 history::VisitVector updated_visits; | 998 history::VisitVector updated_visits; |
| 1010 // Update the previous entries and add a new localhost. | 999 // Update the previous entries and add a new localhost. |
| 1011 history::URLRow updated_url_entry(MakeTypedUrlEntry( | 1000 history::URLRow updated_url_entry(MakeTypedUrlEntry( |
| 1012 "http://yey.com", "yey", 20, 15, false, &updated_visits)); | 1001 "http://yey.com", "yey", 20, 15, false, &updated_visits)); |
| 1013 history::URLRow updated_localhost_entry(MakeTypedUrlEntry( | 1002 history::URLRow updated_localhost_entry(MakeTypedUrlEntry( |
| 1014 "http://localhost:80", "localhost", 20, 15, false, &original_visits)); | 1003 "http://localhost:80", "localhost", 20, 15, false, &original_visits)); |
| 1015 history::URLRow localhost_ip_entry(MakeTypedUrlEntry( | 1004 history::URLRow localhost_ip_entry(MakeTypedUrlEntry( |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1047 SendNotificationURLsModified(changed_urls); | 1036 SendNotificationURLsModified(changed_urls); |
| 1048 | 1037 |
| 1049 history::URLRows new_sync_entries; | 1038 history::URLRows new_sync_entries; |
| 1050 GetTypedUrlsFromSyncDB(&new_sync_entries); | 1039 GetTypedUrlsFromSyncDB(&new_sync_entries); |
| 1051 | 1040 |
| 1052 // The change should be ignored. | 1041 // The change should be ignored. |
| 1053 ASSERT_EQ(0U, new_sync_entries.size()); | 1042 ASSERT_EQ(0U, new_sync_entries.size()); |
| 1054 } | 1043 } |
| 1055 | 1044 |
| 1056 } // namespace browser_sync | 1045 } // namespace browser_sync |
| OLD | NEW |