| Index: chrome/browser/webdata/autocomplete_syncable_service.cc
|
| diff --git a/chrome/browser/webdata/autocomplete_syncable_service.cc b/chrome/browser/webdata/autocomplete_syncable_service.cc
|
| index 11edecd56ce8fcc8a8d20162b6f3545382f9326d..342a8671f11300353937eca75cbaa7de0c6ad95c 100644
|
| --- a/chrome/browser/webdata/autocomplete_syncable_service.cc
|
| +++ b/chrome/browser/webdata/autocomplete_syncable_service.cc
|
| @@ -7,6 +7,7 @@
|
| #include "base/location.h"
|
| #include "base/logging.h"
|
| #include "base/utf_string_conversions.h"
|
| +#include "components/autofill/browser/webdata/autofill_backend_delegate.h"
|
| #include "components/autofill/browser/webdata/autofill_table.h"
|
| #include "components/autofill/browser/webdata/autofill_webdata_service.h"
|
| #include "components/webdata/common/web_database.h"
|
| @@ -23,6 +24,7 @@ using autofill::AutofillEntry;
|
| using autofill::AutofillKey;
|
| using autofill::AutofillTable;
|
| using autofill::AutofillWebDataService;
|
| +using autofill::AutofillBackendDelegate;
|
| using content::BrowserThread;
|
|
|
| namespace {
|
| @@ -92,14 +94,16 @@ void* UserDataKey() {
|
| } // namespace
|
|
|
| AutocompleteSyncableService::AutocompleteSyncableService(
|
| + AutofillBackendDelegate* web_data_delegate,
|
| AutofillWebDataService* web_data_service)
|
| - : web_data_service_(web_data_service),
|
| + : web_data_delegate_(web_data_delegate),
|
| + web_data_service_(web_data_service),
|
| ALLOW_THIS_IN_INITIALIZER_LIST(scoped_observer_(this)),
|
| cull_expired_entries_(false) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
|
| - DCHECK(web_data_service_);
|
| + DCHECK(web_data_delegate_);
|
|
|
| - scoped_observer_.Add(web_data_service_);
|
| + scoped_observer_.Add(web_data_delegate_);
|
| }
|
|
|
| AutocompleteSyncableService::~AutocompleteSyncableService() {
|
| @@ -108,9 +112,11 @@ AutocompleteSyncableService::~AutocompleteSyncableService() {
|
|
|
| // static
|
| void AutocompleteSyncableService::CreateForWebDataService(
|
| - AutofillWebDataService* web_data_service) {
|
| + AutofillWebDataService* web_data_service,
|
| + AutofillBackendDelegate* delegate) {
|
| web_data_service->GetDBUserData()->SetUserData(
|
| - UserDataKey(), new AutocompleteSyncableService(web_data_service));
|
| + UserDataKey(),
|
| + new AutocompleteSyncableService(delegate, web_data_service));
|
| }
|
|
|
| // static
|
| @@ -121,7 +127,7 @@ AutocompleteSyncableService* AutocompleteSyncableService::FromWebDataService(
|
| }
|
|
|
| AutocompleteSyncableService::AutocompleteSyncableService()
|
| - : web_data_service_(NULL),
|
| + : web_data_delegate_(NULL),
|
| ALLOW_THIS_IN_INITIALIZER_LIST(scoped_observer_(this)),
|
| cull_expired_entries_(false) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
|
| @@ -174,7 +180,8 @@ syncer::SyncMergeResult AutocompleteSyncableService::MergeDataAndStartSyncing(
|
| return merge_result;
|
| }
|
|
|
| - AutofillWebDataService::NotifyOfMultipleAutofillChanges(web_data_service_);
|
| + if (web_data_delegate_)
|
| + web_data_delegate_->NotifyOfMultipleAutofillChanges(web_data_service_);
|
|
|
| syncer::SyncChangeList new_changes;
|
| for (AutocompleteEntryMap::iterator i = new_db_entries.begin();
|
| @@ -188,7 +195,7 @@ syncer::SyncMergeResult AutocompleteSyncableService::MergeDataAndStartSyncing(
|
| if (cull_expired_entries_) {
|
| // This will schedule a deletion operation on the DB thread, which will
|
| // trigger a notification to propagate the deletion to Sync.
|
| - web_data_service_->RemoveExpiredFormElements();
|
| + web_data_delegate_->RemoveExpiredFormElements();
|
| }
|
|
|
| merge_result.set_error(
|
| @@ -291,12 +298,13 @@ syncer::SyncError AutocompleteSyncableService::ProcessSyncChanges(
|
| "Failed to update webdata.");
|
| }
|
|
|
| - AutofillWebDataService::NotifyOfMultipleAutofillChanges(web_data_service_);
|
| + if (web_data_delegate_)
|
| + web_data_delegate_->NotifyOfMultipleAutofillChanges(web_data_service_);
|
|
|
| if (cull_expired_entries_) {
|
| // This will schedule a deletion operation on the DB thread, which will
|
| // trigger a notification to propagate the deletion to Sync.
|
| - web_data_service_->RemoveExpiredFormElements();
|
| + web_data_delegate_->RemoveExpiredFormElements();
|
| }
|
|
|
| return list_processing_error;
|
| @@ -315,7 +323,7 @@ void AutocompleteSyncableService::AutofillEntriesChanged(
|
| bool AutocompleteSyncableService::LoadAutofillData(
|
| std::vector<AutofillEntry>* entries) const {
|
| return AutofillTable::FromWebDatabase(
|
| - web_data_service_->GetDatabase())->GetAllAutofillEntries(entries);
|
| + web_data_delegate_->GetDatabase())->GetAllAutofillEntries(entries);
|
| }
|
|
|
| bool AutocompleteSyncableService::SaveChangesToWebData(
|
| @@ -324,7 +332,7 @@ bool AutocompleteSyncableService::SaveChangesToWebData(
|
|
|
| if (!new_entries.empty() &&
|
| !AutofillTable::FromWebDatabase(
|
| - web_data_service_->GetDatabase())->UpdateAutofillEntries(
|
| + web_data_delegate_->GetDatabase())->UpdateAutofillEntries(
|
| new_entries)) {
|
| return false;
|
| }
|
| @@ -398,7 +406,7 @@ void AutocompleteSyncableService::WriteAutofillEntry(
|
| syncer::SyncError AutocompleteSyncableService::AutofillEntryDelete(
|
| const sync_pb::AutofillSpecifics& autofill) {
|
| if (!AutofillTable::FromWebDatabase(
|
| - web_data_service_->GetDatabase())->RemoveFormElement(
|
| + web_data_delegate_->GetDatabase())->RemoveFormElement(
|
| UTF8ToUTF16(autofill.name()), UTF8ToUTF16(autofill.value()))) {
|
| return error_handler_->CreateAndUploadError(
|
| FROM_HERE,
|
| @@ -418,7 +426,7 @@ void AutocompleteSyncableService::ActOnChanges(
|
| case AutofillChange::UPDATE: {
|
| std::vector<base::Time> timestamps;
|
| if (!AutofillTable::FromWebDatabase(
|
| - web_data_service_->GetDatabase())->GetAutofillTimestamps(
|
| + web_data_delegate_->GetDatabase())->GetAutofillTimestamps(
|
| change->key().name(),
|
| change->key().value(),
|
| ×tamps)) {
|
|
|