Index: chrome/browser/history/typed_url_syncable_service_unittest.cc |
diff --git a/chrome/browser/history/typed_url_syncable_service_unittest.cc b/chrome/browser/history/typed_url_syncable_service_unittest.cc |
index 1e6aa1ab0d1bd8f4ccde7cd6f60ec189aa604e94..447bfd561df48481b11f6d0eebe9d8a57ba82d67 100644 |
--- a/chrome/browser/history/typed_url_syncable_service_unittest.cc |
+++ b/chrome/browser/history/typed_url_syncable_service_unittest.cc |
@@ -11,6 +11,8 @@ |
#include "chrome/browser/history/history_backend.h" |
#include "chrome/browser/history/history_types.h" |
#include "content/public/browser/notification_types.h" |
+#include "sync/api/fake_sync_change_processor.h" |
+#include "sync/api/sync_change_processor_delegator.h" |
#include "sync/api/sync_error.h" |
#include "sync/api/sync_error_factory_mock.h" |
#include "sync/protocol/sync.pb.h" |
@@ -32,37 +34,6 @@ const int kMaxTypedUrlVisits = 100; |
// Visits with this timestamp are treated as expired. |
const int EXPIRED_VISIT = -1; |
-// TestChangeProcessor -------------------------------------------------------- |
- |
-class TestChangeProcessor : public syncer::SyncChangeProcessor { |
- public: |
- TestChangeProcessor() : change_output_(NULL) {} |
- |
- // syncer::SyncChangeProcessor implementation. |
- virtual syncer::SyncError ProcessSyncChanges( |
- const tracked_objects::Location& from_here, |
- const syncer::SyncChangeList& change_list) OVERRIDE { |
- change_output_->insert(change_output_->end(), change_list.begin(), |
- change_list.end()); |
- return syncer::SyncError(); |
- } |
- |
- virtual syncer::SyncDataList GetAllSyncData(syncer::ModelType type) const |
- OVERRIDE { |
- return syncer::SyncDataList(); |
- } |
- |
- // Set pointer location to write SyncChanges to in ProcessSyncChanges. |
- void SetChangeOutput(syncer::SyncChangeList *change_output) { |
- change_output_ = change_output; |
- } |
- |
- private: |
- syncer::SyncChangeList *change_output_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestChangeProcessor); |
-}; |
- |
// TestHistoryBackend ---------------------------------------------------------- |
class TestHistoryBackend : public HistoryBackend { |
@@ -147,13 +118,11 @@ class TypedUrlSyncableServiceTest : public testing::Test { |
(row.hidden() == specifics.hidden())); |
} |
- bool InitiateServerState( |
- unsigned int num_typed_urls, |
- unsigned int num_reload_urls, |
- URLRows* rows, |
- std::vector<VisitVector>* visit_vectors, |
- const std::vector<const char*>& urls, |
- syncer::SyncChangeList* change_list); |
+ bool InitiateServerState(unsigned int num_typed_urls, |
+ unsigned int num_reload_urls, |
+ URLRows* rows, |
+ std::vector<VisitVector>* visit_vectors, |
+ const std::vector<const char*>& urls); |
protected: |
TypedUrlSyncableServiceTest() {} |
@@ -164,12 +133,12 @@ class TypedUrlSyncableServiceTest : public testing::Test { |
fake_history_backend_ = new TestHistoryBackend(); |
typed_url_sync_service_.reset( |
new TypedUrlSyncableService(fake_history_backend_.get())); |
- fake_change_processor_.reset(new TestChangeProcessor); |
+ fake_change_processor_.reset(new syncer::FakeSyncChangeProcessor); |
} |
scoped_refptr<HistoryBackend> fake_history_backend_; |
scoped_ptr<TypedUrlSyncableService> typed_url_sync_service_; |
- scoped_ptr<syncer::SyncChangeProcessor> fake_change_processor_; |
+ scoped_ptr<syncer::FakeSyncChangeProcessor> fake_change_processor_; |
}; |
URLRow TypedUrlSyncableServiceTest::MakeTypedUrlRow( |
@@ -246,22 +215,20 @@ bool TypedUrlSyncableServiceTest::InitiateServerState( |
unsigned int num_reload_urls, |
URLRows* rows, |
std::vector<VisitVector>* visit_vectors, |
- const std::vector<const char*>& urls, |
- syncer::SyncChangeList* change_list) { |
+ const std::vector<const char*>& urls) { |
unsigned int total_urls = num_typed_urls + num_reload_urls; |
DCHECK(urls.size() >= total_urls); |
if (!typed_url_sync_service_.get()) |
return false; |
- static_cast<TestChangeProcessor*>(fake_change_processor_.get())-> |
- SetChangeOutput(change_list); |
- |
// Set change processor. |
syncer::SyncMergeResult result = |
typed_url_sync_service_->MergeDataAndStartSyncing( |
syncer::TYPED_URLS, |
syncer::SyncDataList(), |
- fake_change_processor_.Pass(), |
+ scoped_ptr<syncer::SyncChangeProcessor>( |
+ new syncer::SyncChangeProcessorDelegator( |
+ fake_change_processor_.get())), |
scoped_ptr<syncer::SyncErrorFactory>( |
new syncer::SyncErrorFactoryMock())); |
EXPECT_FALSE(result.error().IsSet()) << result.error().message(); |
@@ -285,7 +252,7 @@ bool TypedUrlSyncableServiceTest::InitiateServerState( |
typed_url_sync_service_->OnUrlsModified(&changed_urls); |
} |
// Check that communication with sync was successful. |
- if (num_typed_urls != change_list->size()) |
+ if (num_typed_urls != fake_change_processor_->changes().size()) |
return false; |
return true; |
} |
@@ -293,28 +260,26 @@ bool TypedUrlSyncableServiceTest::InitiateServerState( |
TEST_F(TypedUrlSyncableServiceTest, AddLocalTypedUrlAndSync) { |
// Create a local typed URL (simulate a typed visit) that is not already |
// in sync. Check that sync is sent an ADD change for the existing URL. |
- syncer::SyncChangeList change_list; |
- |
URLRows url_rows; |
std::vector<VisitVector> visit_vectors; |
std::vector<const char*> urls; |
urls.push_back("http://pie.com/"); |
- ASSERT_TRUE( |
- InitiateServerState(1, 0, &url_rows, &visit_vectors, urls, &change_list)); |
+ ASSERT_TRUE(InitiateServerState(1, 0, &url_rows, &visit_vectors, urls)); |
URLRow url_row = url_rows.front(); |
VisitVector visits = visit_vectors.front(); |
// Check change processor. |
- ASSERT_EQ(1u, change_list.size()); |
- ASSERT_TRUE(change_list[0].IsValid()); |
- EXPECT_EQ(syncer::TYPED_URLS, change_list[0].sync_data().GetDataType()); |
- EXPECT_EQ(syncer::SyncChange::ACTION_ADD, change_list[0].change_type()); |
+ const syncer::SyncChangeList& changes = fake_change_processor_->changes(); |
+ ASSERT_EQ(1u, changes.size()); |
+ ASSERT_TRUE(changes[0].IsValid()); |
+ EXPECT_EQ(syncer::TYPED_URLS, changes[0].sync_data().GetDataType()); |
+ EXPECT_EQ(syncer::SyncChange::ACTION_ADD, changes[0].change_type()); |
// Get typed url specifics. |
sync_pb::TypedUrlSpecifics url_specifics = |
- change_list[0].sync_data().GetSpecifics().typed_url(); |
+ changes[0].sync_data().GetSpecifics().typed_url(); |
EXPECT_TRUE(URLsEqual(url_row, url_specifics)); |
ASSERT_EQ(1, url_specifics.visits_size()); |
@@ -332,16 +297,14 @@ TEST_F(TypedUrlSyncableServiceTest, AddLocalTypedUrlAndSync) { |
} |
TEST_F(TypedUrlSyncableServiceTest, UpdateLocalTypedUrlAndSync) { |
- syncer::SyncChangeList change_list; |
- |
URLRows url_rows; |
std::vector<VisitVector> visit_vectors; |
std::vector<const char*> urls; |
urls.push_back("http://pie.com/"); |
- ASSERT_TRUE( |
- InitiateServerState(1, 0, &url_rows, &visit_vectors, urls, &change_list)); |
- change_list.clear(); |
+ ASSERT_TRUE(InitiateServerState(1, 0, &url_rows, &visit_vectors, urls)); |
+ syncer::SyncChangeList& changes = fake_change_processor_->changes(); |
+ changes.clear(); |
// Update the URL row, adding another typed visit to the visit vector. |
URLRow url_row = url_rows.front(); |
@@ -356,13 +319,13 @@ TEST_F(TypedUrlSyncableServiceTest, UpdateLocalTypedUrlAndSync) { |
// Notify typed url sync service of the update. |
typed_url_sync_service_->OnUrlsModified(&changed_urls); |
- ASSERT_EQ(1u, change_list.size()); |
- ASSERT_TRUE(change_list[0].IsValid()); |
- EXPECT_EQ(syncer::TYPED_URLS, change_list[0].sync_data().GetDataType()); |
- EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, change_list[0].change_type()); |
+ ASSERT_EQ(1u, changes.size()); |
+ ASSERT_TRUE(changes[0].IsValid()); |
+ EXPECT_EQ(syncer::TYPED_URLS, changes[0].sync_data().GetDataType()); |
+ EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, changes[0].change_type()); |
sync_pb::TypedUrlSpecifics url_specifics = |
- change_list[0].sync_data().GetSpecifics().typed_url(); |
+ changes[0].sync_data().GetSpecifics().typed_url(); |
EXPECT_TRUE(URLsEqual(url_row, url_specifics)); |
ASSERT_EQ(2, url_specifics.visits_size()); |
@@ -387,16 +350,14 @@ TEST_F(TypedUrlSyncableServiceTest, UpdateLocalTypedUrlAndSync) { |
} |
TEST_F(TypedUrlSyncableServiceTest, LinkVisitLocalTypedUrlAndSync) { |
- syncer::SyncChangeList change_list; |
- |
URLRows url_rows; |
std::vector<VisitVector> visit_vectors; |
std::vector<const char*> urls; |
urls.push_back("http://pie.com/"); |
- ASSERT_TRUE( |
- InitiateServerState(1, 0, &url_rows, &visit_vectors, urls, &change_list)); |
- change_list.clear(); |
+ ASSERT_TRUE(InitiateServerState(1, 0, &url_rows, &visit_vectors, urls)); |
+ syncer::SyncChangeList& changes = fake_change_processor_->changes(); |
+ changes.clear(); |
URLRow url_row = url_rows.front(); |
VisitVector visits = visit_vectors.front(); |
@@ -409,20 +370,18 @@ TEST_F(TypedUrlSyncableServiceTest, LinkVisitLocalTypedUrlAndSync) { |
content::PageTransition transition = content::PAGE_TRANSITION_LINK; |
// Notify typed url sync service of non-typed visit, expect no change. |
typed_url_sync_service_->OnUrlVisited(transition, &url_row); |
- ASSERT_EQ(0u, change_list.size()); |
+ ASSERT_EQ(0u, changes.size()); |
} |
TEST_F(TypedUrlSyncableServiceTest, TypedVisitLocalTypedUrlAndSync) { |
- syncer::SyncChangeList change_list; |
- |
URLRows url_rows; |
std::vector<VisitVector> visit_vectors; |
std::vector<const char*> urls; |
urls.push_back("http://pie.com/"); |
- ASSERT_TRUE( |
- InitiateServerState(1, 0, &url_rows, &visit_vectors, urls, &change_list)); |
- change_list.clear(); |
+ ASSERT_TRUE(InitiateServerState(1, 0, &url_rows, &visit_vectors, urls)); |
+ syncer::SyncChangeList& changes = fake_change_processor_->changes(); |
+ changes.clear(); |
URLRow url_row = url_rows.front(); |
VisitVector visits = visit_vectors.front(); |
@@ -438,13 +397,13 @@ TEST_F(TypedUrlSyncableServiceTest, TypedVisitLocalTypedUrlAndSync) { |
content::PageTransition transition = content::PAGE_TRANSITION_TYPED; |
typed_url_sync_service_->OnUrlVisited(transition, &url_row); |
- ASSERT_EQ(1u, change_list.size()); |
- ASSERT_TRUE(change_list[0].IsValid()); |
- EXPECT_EQ(syncer::TYPED_URLS, change_list[0].sync_data().GetDataType()); |
- EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, change_list[0].change_type()); |
+ ASSERT_EQ(1u, changes.size()); |
+ ASSERT_TRUE(changes[0].IsValid()); |
+ EXPECT_EQ(syncer::TYPED_URLS, changes[0].sync_data().GetDataType()); |
+ EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, changes[0].change_type()); |
sync_pb::TypedUrlSpecifics url_specifics = |
- change_list[0].sync_data().GetSpecifics().typed_url(); |
+ changes[0].sync_data().GetSpecifics().typed_url(); |
EXPECT_TRUE(URLsEqual(url_row, url_specifics)); |
ASSERT_EQ(4u, visits.size()); |
@@ -469,8 +428,6 @@ TEST_F(TypedUrlSyncableServiceTest, TypedVisitLocalTypedUrlAndSync) { |
} |
TEST_F(TypedUrlSyncableServiceTest, DeleteLocalTypedUrlAndSync) { |
- syncer::SyncChangeList change_list; |
- |
URLRows url_rows; |
std::vector<VisitVector> visit_vectors; |
std::vector<const char*> urls; |
@@ -480,9 +437,9 @@ TEST_F(TypedUrlSyncableServiceTest, DeleteLocalTypedUrlAndSync) { |
urls.push_back("http://foo.com/"); |
urls.push_back("http://bar.com/"); |
- ASSERT_TRUE( |
- InitiateServerState(4, 1, &url_rows, &visit_vectors, urls, &change_list)); |
- change_list.clear(); |
+ ASSERT_TRUE(InitiateServerState(4, 1, &url_rows, &visit_vectors, urls)); |
+ syncer::SyncChangeList& changes = fake_change_processor_->changes(); |
+ changes.clear(); |
// Check that in-memory representation of sync state is accurate. |
std::set<GURL> sync_state; |
@@ -509,13 +466,13 @@ TEST_F(TypedUrlSyncableServiceTest, DeleteLocalTypedUrlAndSync) { |
// Notify typed url sync service. |
typed_url_sync_service_->OnUrlsDeleted(false, false, &rows); |
- ASSERT_EQ(3u, change_list.size()); |
- for (size_t i = 0; i < change_list.size(); ++i) { |
- ASSERT_TRUE(change_list[i].IsValid()); |
- ASSERT_EQ(syncer::TYPED_URLS, change_list[i].sync_data().GetDataType()); |
- EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, change_list[i].change_type()); |
+ ASSERT_EQ(3u, changes.size()); |
+ for (size_t i = 0; i < changes.size(); ++i) { |
+ ASSERT_TRUE(changes[i].IsValid()); |
+ ASSERT_EQ(syncer::TYPED_URLS, changes[i].sync_data().GetDataType()); |
+ EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, changes[i].change_type()); |
sync_pb::TypedUrlSpecifics url_specifics = |
- change_list[i].sync_data().GetSpecifics().typed_url(); |
+ changes[i].sync_data().GetSpecifics().typed_url(); |
EXPECT_EQ(url_rows[i].url().spec(), url_specifics.url()); |
} |
@@ -528,8 +485,6 @@ TEST_F(TypedUrlSyncableServiceTest, DeleteLocalTypedUrlAndSync) { |
} |
TEST_F(TypedUrlSyncableServiceTest, DeleteAllLocalTypedUrlAndSync) { |
- syncer::SyncChangeList change_list; |
- |
URLRows url_rows; |
std::vector<VisitVector> visit_vectors; |
std::vector<const char*> urls; |
@@ -539,9 +494,9 @@ TEST_F(TypedUrlSyncableServiceTest, DeleteAllLocalTypedUrlAndSync) { |
urls.push_back("http://foo.com/"); |
urls.push_back("http://bar.com/"); |
- ASSERT_TRUE( |
- InitiateServerState(4, 1, &url_rows, &visit_vectors, urls, &change_list)); |
- change_list.clear(); |
+ ASSERT_TRUE(InitiateServerState(4, 1, &url_rows, &visit_vectors, urls)); |
+ syncer::SyncChangeList& changes = fake_change_processor_->changes(); |
+ changes.clear(); |
// Check that in-memory representation of sync state is accurate. |
std::set<GURL> sync_state; |
@@ -559,11 +514,11 @@ TEST_F(TypedUrlSyncableServiceTest, DeleteAllLocalTypedUrlAndSync) { |
// Notify typed url sync service. |
typed_url_sync_service_->OnUrlsDeleted(all_history, false, NULL); |
- ASSERT_EQ(4u, change_list.size()); |
- for (size_t i = 0; i < change_list.size(); ++i) { |
- ASSERT_TRUE(change_list[i].IsValid()); |
- ASSERT_EQ(syncer::TYPED_URLS, change_list[i].sync_data().GetDataType()); |
- EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, change_list[i].change_type()); |
+ ASSERT_EQ(4u, changes.size()); |
+ for (size_t i = 0; i < changes.size(); ++i) { |
+ ASSERT_TRUE(changes[i].IsValid()); |
+ ASSERT_EQ(syncer::TYPED_URLS, changes[i].sync_data().GetDataType()); |
+ EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, changes[i].change_type()); |
} |
// Check that in-memory representation of sync state is accurate. |
std::set<GURL> sync_state_deleted; |
@@ -572,15 +527,12 @@ TEST_F(TypedUrlSyncableServiceTest, DeleteAllLocalTypedUrlAndSync) { |
} |
TEST_F(TypedUrlSyncableServiceTest, MaxVisitLocalTypedUrlAndSync) { |
- syncer::SyncChangeList change_list; |
- |
URLRows url_rows; |
std::vector<VisitVector> visit_vectors; |
std::vector<const char*> urls; |
urls.push_back("http://pie.com/"); |
- ASSERT_TRUE( |
- InitiateServerState(0, 1, &url_rows, &visit_vectors, urls, &change_list)); |
+ ASSERT_TRUE(InitiateServerState(0, 1, &url_rows, &visit_vectors, urls)); |
URLRow url_row = url_rows.front(); |
VisitVector visits; |
@@ -602,10 +554,11 @@ TEST_F(TypedUrlSyncableServiceTest, MaxVisitLocalTypedUrlAndSync) { |
content::PageTransition transition = content::PAGE_TRANSITION_TYPED; |
typed_url_sync_service_->OnUrlVisited(transition, &url_row); |
- ASSERT_EQ(1u, change_list.size()); |
- ASSERT_TRUE(change_list[0].IsValid()); |
+ const syncer::SyncChangeList& changes = fake_change_processor_->changes(); |
+ ASSERT_EQ(1u, changes.size()); |
+ ASSERT_TRUE(changes[0].IsValid()); |
sync_pb::TypedUrlSpecifics url_specifics = |
- change_list[0].sync_data().GetSpecifics().typed_url(); |
+ changes[0].sync_data().GetSpecifics().typed_url(); |
ASSERT_EQ(kMaxTypedUrlVisits, url_specifics.visits_size()); |
// Check that each visit has been translated/communicated correctly. |
@@ -626,15 +579,12 @@ TEST_F(TypedUrlSyncableServiceTest, MaxVisitLocalTypedUrlAndSync) { |
} |
TEST_F(TypedUrlSyncableServiceTest, ThrottleVisitLocalTypedUrlSync) { |
- syncer::SyncChangeList change_list; |
- |
URLRows url_rows; |
std::vector<VisitVector> visit_vectors; |
std::vector<const char*> urls; |
urls.push_back("http://pie.com/"); |
- ASSERT_TRUE( |
- InitiateServerState(0, 1, &url_rows, &visit_vectors, urls, &change_list)); |
+ ASSERT_TRUE(InitiateServerState(0, 1, &url_rows, &visit_vectors, urls)); |
URLRow url_row = url_rows.front(); |
VisitVector visits; |
@@ -652,7 +602,8 @@ TEST_F(TypedUrlSyncableServiceTest, ThrottleVisitLocalTypedUrlSync) { |
typed_url_sync_service_->OnUrlVisited(transition, &url_row); |
// Should throttle, so sync and local cache should not update. |
- ASSERT_EQ(0u, change_list.size()); |
+ const syncer::SyncChangeList& changes = fake_change_processor_->changes(); |
+ ASSERT_EQ(0u, changes.size()); |
std::set<GURL> sync_state; |
typed_url_sync_service_.get()->GetSyncedUrls(&sync_state); |
EXPECT_TRUE(sync_state.empty()); |