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

Side by Side Diff: chrome/browser/sync/profile_sync_service_autofill_unittest.cc

Issue 7819002: Migrate AutofillProfile sync to new API. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <set> 5 #include <set>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
11 #include "base/callback.h" 11 #include "base/callback.h"
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
14 #include "base/message_loop.h" 14 #include "base/message_loop.h"
15 #include "base/string16.h" 15 #include "base/string16.h"
16 #include "base/synchronization/waitable_event.h" 16 #include "base/synchronization/waitable_event.h"
17 #include "base/task.h" 17 #include "base/task.h"
18 #include "base/time.h" 18 #include "base/time.h"
19 #include "base/tracked.h" 19 #include "base/tracked.h"
20 #include "base/utf_string_conversions.h" 20 #include "base/utf_string_conversions.h"
21 #include "chrome/browser/autofill/autofill_common_test.h" 21 #include "chrome/browser/autofill/autofill_common_test.h"
22 #include "chrome/browser/sync/abstract_profile_sync_service_test.h" 22 #include "chrome/browser/sync/abstract_profile_sync_service_test.h"
23 #include "chrome/browser/sync/engine/model_changing_syncer_command.h" 23 #include "chrome/browser/sync/engine/model_changing_syncer_command.h"
24 #include "chrome/browser/sync/glue/autofill_change_processor.h" 24 #include "chrome/browser/sync/glue/autofill_change_processor.h"
25 #include "chrome/browser/sync/glue/autofill_data_type_controller.h" 25 #include "chrome/browser/sync/glue/autofill_data_type_controller.h"
26 #include "chrome/browser/sync/glue/autofill_model_associator.h" 26 #include "chrome/browser/sync/glue/autofill_model_associator.h"
27 #include "chrome/browser/sync/glue/autofill_profile_change_processor.h"
28 #include "chrome/browser/sync/glue/autofill_profile_data_type_controller.h" 27 #include "chrome/browser/sync/glue/autofill_profile_data_type_controller.h"
29 #include "chrome/browser/sync/glue/autofill_profile_model_associator.h" 28 #include "chrome/browser/sync/glue/autofill_profile_syncable_service.h"
30 #include "chrome/browser/sync/glue/data_type_controller.h" 29 #include "chrome/browser/sync/glue/data_type_controller.h"
30 #include "chrome/browser/sync/glue/generic_change_processor.h"
31 #include "chrome/browser/sync/glue/syncable_service_adapter.h"
31 #include "chrome/browser/sync/internal_api/read_node.h" 32 #include "chrome/browser/sync/internal_api/read_node.h"
32 #include "chrome/browser/sync/internal_api/read_transaction.h" 33 #include "chrome/browser/sync/internal_api/read_transaction.h"
33 #include "chrome/browser/sync/internal_api/write_node.h" 34 #include "chrome/browser/sync/internal_api/write_node.h"
34 #include "chrome/browser/sync/internal_api/write_transaction.h" 35 #include "chrome/browser/sync/internal_api/write_transaction.h"
35 #include "chrome/browser/sync/profile_sync_factory.h" 36 #include "chrome/browser/sync/profile_sync_factory.h"
36 #include "chrome/browser/sync/profile_sync_service.h" 37 #include "chrome/browser/sync/profile_sync_service.h"
37 #include "chrome/browser/sync/profile_sync_test_util.h" 38 #include "chrome/browser/sync/profile_sync_test_util.h"
38 #include "chrome/browser/sync/protocol/autofill_specifics.pb.h" 39 #include "chrome/browser/sync/protocol/autofill_specifics.pb.h"
39 #include "chrome/browser/sync/syncable/directory_manager.h" 40 #include "chrome/browser/sync/syncable/directory_manager.h"
40 #include "chrome/browser/sync/syncable/model_type.h" 41 #include "chrome/browser/sync/syncable/model_type.h"
41 #include "chrome/browser/sync/syncable/syncable.h" 42 #include "chrome/browser/sync/syncable/syncable.h"
42 #include "chrome/browser/sync/test_profile_sync_service.h" 43 #include "chrome/browser/sync/test_profile_sync_service.h"
43 #include "chrome/browser/webdata/autofill_change.h" 44 #include "chrome/browser/webdata/autofill_change.h"
44 #include "chrome/browser/webdata/autofill_entry.h" 45 #include "chrome/browser/webdata/autofill_entry.h"
45 #include "chrome/browser/webdata/autofill_table.h" 46 #include "chrome/browser/webdata/autofill_table.h"
46 #include "chrome/browser/webdata/web_database.h" 47 #include "chrome/browser/webdata/web_database.h"
47 #include "chrome/common/chrome_notification_types.h" 48 #include "chrome/common/chrome_notification_types.h"
48 #include "chrome/common/net/gaia/gaia_constants.h" 49 #include "chrome/common/net/gaia/gaia_constants.h"
49 #include "chrome/test/sync/engine/test_id_factory.h" 50 #include "chrome/test/sync/engine/test_id_factory.h"
50 #include "content/browser/browser_thread.h" 51 #include "content/browser/browser_thread.h"
51 #include "content/common/notification_source.h" 52 #include "content/common/notification_source.h"
52 #include "testing/gmock/include/gmock/gmock.h" 53 #include "testing/gmock/include/gmock/gmock.h"
53 54
54 using base::Time; 55 using base::Time;
55 using base::WaitableEvent; 56 using base::WaitableEvent;
56 using browser_sync::AutofillChangeProcessor; 57 using browser_sync::AutofillChangeProcessor;
57 using browser_sync::AutofillDataTypeController; 58 using browser_sync::AutofillDataTypeController;
58 using browser_sync::AutofillModelAssociator; 59 using browser_sync::AutofillModelAssociator;
59 using browser_sync::AutofillProfileChangeProcessor;
60 using browser_sync::AutofillProfileDataTypeController; 60 using browser_sync::AutofillProfileDataTypeController;
61 using browser_sync::AutofillProfileModelAssociator; 61 using browser_sync::AutofillProfileSyncableService;
62 using browser_sync::DataTypeController; 62 using browser_sync::DataTypeController;
63 using browser_sync::GenericChangeProcessor;
64 using browser_sync::SyncableServiceAdapter;
63 using browser_sync::GROUP_DB; 65 using browser_sync::GROUP_DB;
64 using browser_sync::kAutofillTag; 66 using browser_sync::kAutofillTag;
65 using browser_sync::SyncBackendHostForProfileSyncTest; 67 using browser_sync::SyncBackendHostForProfileSyncTest;
66 using browser_sync::UnrecoverableErrorHandler; 68 using browser_sync::UnrecoverableErrorHandler;
67 using syncable::CREATE_NEW_UPDATE_ITEM; 69 using syncable::CREATE_NEW_UPDATE_ITEM;
68 using syncable::AUTOFILL; 70 using syncable::AUTOFILL;
69 using syncable::BASE_VERSION; 71 using syncable::BASE_VERSION;
70 using syncable::CREATE; 72 using syncable::CREATE;
71 using syncable::GET_BY_SERVER_TAG; 73 using syncable::GET_BY_SERVER_TAG;
72 using syncable::INVALID; 74 using syncable::INVALID;
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 AutofillChangeProcessor* change_processor = 173 AutofillChangeProcessor* change_processor =
172 new AutofillChangeProcessor(model_associator, wd, pdm, dtc); 174 new AutofillChangeProcessor(model_associator, wd, pdm, dtc);
173 return ProfileSyncFactory::SyncComponents(model_associator, 175 return ProfileSyncFactory::SyncComponents(model_associator,
174 change_processor); 176 change_processor);
175 } 177 }
176 178
177 ACTION_P4(MakeAutofillProfileSyncComponents, service, wd, pdm, dtc) { 179 ACTION_P4(MakeAutofillProfileSyncComponents, service, wd, pdm, dtc) {
178 EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB)); 180 EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB));
179 if (!BrowserThread::CurrentlyOn(BrowserThread::DB)) 181 if (!BrowserThread::CurrentlyOn(BrowserThread::DB))
180 return ProfileSyncFactory::SyncComponents(NULL, NULL); 182 return ProfileSyncFactory::SyncComponents(NULL, NULL);
181 AutofillProfileModelAssociator* model_associator = 183 AutofillProfileSyncableService* sync_service =
182 new AutofillProfileModelAssociator(service, wd, pdm); 184 new AutofillProfileSyncableService(wd, pdm);
183 AutofillProfileChangeProcessor* change_processor = 185 sync_api::UserShare* user_share = service->GetUserShare();
184 new AutofillProfileChangeProcessor(model_associator, wd, pdm, dtc); 186 GenericChangeProcessor* change_processor =
185 return ProfileSyncFactory::SyncComponents(model_associator, 187 new GenericChangeProcessor(sync_service, dtc, user_share);
188 SyncableServiceAdapter* sync_service_adapter =
189 new SyncableServiceAdapter(syncable::AUTOFILL_PROFILE,
190 sync_service,
191 change_processor);
192 return ProfileSyncFactory::SyncComponents(sync_service_adapter,
186 change_processor); 193 change_processor);
187 } 194 }
188 195
189 class AbstractAutofillFactory { 196 class AbstractAutofillFactory {
190 public: 197 public:
191 virtual AutofillDataTypeController* CreateDataTypeController( 198 virtual AutofillDataTypeController* CreateDataTypeController(
192 ProfileSyncFactory *factory, 199 ProfileSyncFactory *factory,
dhollowa 2011/09/01 20:17:49 nit: s/ */* /
GeorgeY 2011/09/02 04:34:12 Done. and in other places in this file
193 ProfileMock* profile, 200 ProfileMock* profile,
194 ProfileSyncService* service) = 0; 201 ProfileSyncService* service) = 0;
195 virtual void SetExpectation(ProfileSyncFactoryMock* factory, 202 virtual void SetExpectation(ProfileSyncFactoryMock* factory,
196 ProfileSyncService* service, 203 ProfileSyncService* service,
197 WebDatabase* wd, 204 WebDatabase* wd,
198 PersonalDataManager* pdm, 205 PersonalDataManager* pdm,
199 DataTypeController* dtc) = 0; 206 DataTypeController* dtc) = 0;
200 virtual ~AbstractAutofillFactory() {} 207 virtual ~AbstractAutofillFactory() {}
201 }; 208 };
202 209
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 bool AddAutofillSyncNode(const AutofillProfile& profile) { 362 bool AddAutofillSyncNode(const AutofillProfile& profile) {
356 sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); 363 sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare());
357 sync_api::ReadNode autofill_root(&trans); 364 sync_api::ReadNode autofill_root(&trans);
358 if (!autofill_root.InitByTagLookup(browser_sync::kAutofillProfileTag)) 365 if (!autofill_root.InitByTagLookup(browser_sync::kAutofillProfileTag))
359 return false; 366 return false;
360 sync_api::WriteNode node(&trans); 367 sync_api::WriteNode node(&trans);
361 std::string tag = profile.guid(); 368 std::string tag = profile.guid();
362 if (!node.InitUniqueByCreation(syncable::AUTOFILL_PROFILE, 369 if (!node.InitUniqueByCreation(syncable::AUTOFILL_PROFILE,
363 autofill_root, tag)) 370 autofill_root, tag))
364 return false; 371 return false;
365 AutofillProfileChangeProcessor::WriteAutofillProfile(profile, &node); 372 sync_pb::EntitySpecifics specifics;
373 AutofillProfileSyncableService::WriteAutofillProfile(profile, &specifics);
374 sync_pb::AutofillProfileSpecifics* profile_specifics =
375 specifics.MutableExtension(sync_pb::autofill_profile);
376 node.SetAutofillProfileSpecifics(*profile_specifics);
366 return true; 377 return true;
367 } 378 }
368 379
369 bool GetAutofillEntriesFromSyncDB(std::vector<AutofillEntry>* entries, 380 bool GetAutofillEntriesFromSyncDB(std::vector<AutofillEntry>* entries,
370 std::vector<AutofillProfile>* profiles) { 381 std::vector<AutofillProfile>* profiles) {
371 sync_api::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); 382 sync_api::ReadTransaction trans(FROM_HERE, service_->GetUserShare());
372 sync_api::ReadNode autofill_root(&trans); 383 sync_api::ReadNode autofill_root(&trans);
373 if (!autofill_root.InitByTagLookup(browser_sync::kAutofillTag)) 384 if (!autofill_root.InitByTagLookup(browser_sync::kAutofillTag))
374 return false; 385 return false;
375 386
(...skipping 11 matching lines...) Expand all
387 std::vector<base::Time> timestamps; 398 std::vector<base::Time> timestamps;
388 int timestamps_count = autofill.usage_timestamp_size(); 399 int timestamps_count = autofill.usage_timestamp_size();
389 for (int i = 0; i < timestamps_count; ++i) { 400 for (int i = 0; i < timestamps_count; ++i) {
390 timestamps.push_back(Time::FromInternalValue( 401 timestamps.push_back(Time::FromInternalValue(
391 autofill.usage_timestamp(i))); 402 autofill.usage_timestamp(i)));
392 } 403 }
393 entries->push_back(AutofillEntry(key, timestamps)); 404 entries->push_back(AutofillEntry(key, timestamps));
394 } else if (autofill.has_profile()) { 405 } else if (autofill.has_profile()) {
395 AutofillProfile p; 406 AutofillProfile p;
396 p.set_guid(autofill.profile().guid()); 407 p.set_guid(autofill.profile().guid());
397 AutofillProfileModelAssociator::OverwriteProfileWithServerData(&p, 408 AutofillProfileSyncableService::OverwriteProfileWithServerData(&p,
398 autofill.profile()); 409 autofill.profile());
399 profiles->push_back(p); 410 profiles->push_back(p);
400 } 411 }
401 child_id = child_node.GetSuccessorId(); 412 child_id = child_node.GetSuccessorId();
402 } 413 }
403 return true; 414 return true;
404 } 415 }
405 416
406 bool GetAutofillProfilesFromSyncDBUnderProfileNode( 417 bool GetAutofillProfilesFromSyncDBUnderProfileNode(
407 std::vector<AutofillProfile>* profiles) { 418 std::vector<AutofillProfile>* profiles) {
408 sync_api::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); 419 sync_api::ReadTransaction trans(FROM_HERE, service_->GetUserShare());
409 sync_api::ReadNode autofill_root(&trans); 420 sync_api::ReadNode autofill_root(&trans);
410 if (!autofill_root.InitByTagLookup(browser_sync::kAutofillProfileTag)) 421 if (!autofill_root.InitByTagLookup(browser_sync::kAutofillProfileTag))
411 return false; 422 return false;
412 423
413 int64 child_id = autofill_root.GetFirstChildId(); 424 int64 child_id = autofill_root.GetFirstChildId();
414 while (child_id != sync_api::kInvalidId) { 425 while (child_id != sync_api::kInvalidId) {
415 sync_api::ReadNode child_node(&trans); 426 sync_api::ReadNode child_node(&trans);
416 if (!child_node.InitByIdLookup(child_id)) 427 if (!child_node.InitByIdLookup(child_id))
417 return false; 428 return false;
418 429
419 const sync_pb::AutofillProfileSpecifics& autofill( 430 const sync_pb::AutofillProfileSpecifics& autofill(
420 child_node.GetAutofillProfileSpecifics()); 431 child_node.GetAutofillProfileSpecifics());
421 AutofillProfile p; 432 AutofillProfile p;
422 p.set_guid(autofill.guid()); 433 p.set_guid(autofill.guid());
423 AutofillProfileModelAssociator::OverwriteProfileWithServerData(&p, 434 AutofillProfileSyncableService::OverwriteProfileWithServerData(&p,
424 autofill); 435 autofill);
425 profiles->push_back(p); 436 profiles->push_back(p);
426 child_id = child_node.GetSuccessorId(); 437 child_id = child_node.GetSuccessorId();
427 } 438 }
428 return true; 439 return true;
429 } 440 }
430 441
431 void SetIdleChangeProcessorExpectations() { 442 void SetIdleChangeProcessorExpectations() {
432 EXPECT_CALL(autofill_table_, RemoveFormElement(_, _)).Times(0); 443 EXPECT_CALL(autofill_table_, RemoveFormElement(_, _)).Times(0);
433 EXPECT_CALL(autofill_table_, GetAutofillTimestamps(_, _, _)).Times(0); 444 EXPECT_CALL(autofill_table_, GetAutofillTimestamps(_, _, _)).Times(0);
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after
1079 std::vector<AutofillEntry> sync_entries; 1090 std::vector<AutofillEntry> sync_entries;
1080 std::vector<AutofillProfile> sync_profiles; 1091 std::vector<AutofillProfile> sync_profiles;
1081 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&sync_entries, &sync_profiles)); 1092 ASSERT_TRUE(GetAutofillEntriesFromSyncDB(&sync_entries, &sync_profiles));
1082 EXPECT_EQ(3U, sync_entries.size()); 1093 EXPECT_EQ(3U, sync_entries.size());
1083 EXPECT_EQ(0U, sync_profiles.size()); 1094 EXPECT_EQ(0U, sync_profiles.size());
1084 for (size_t i = 0; i < sync_entries.size(); i++) { 1095 for (size_t i = 0; i < sync_entries.size(); i++) {
1085 VLOG(1) << "Entry " << i << ": " << sync_entries[i].key().name() 1096 VLOG(1) << "Entry " << i << ": " << sync_entries[i].key().name()
1086 << ", " << sync_entries[i].key().value(); 1097 << ", " << sync_entries[i].key().value();
1087 } 1098 }
1088 } 1099 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698