| Index: components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc
|
| diff --git a/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc b/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc
|
| index ec48b8098a63d9887d8487733c368d74774d3fe7..187f3e63ea14341941db609bde60635ac114716f 100644
|
| --- a/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc
|
| +++ b/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc
|
| @@ -67,6 +67,12 @@ void AutofillWebDataBackendImpl::RemoveExpiredFormElements() {
|
|
|
| void AutofillWebDataBackendImpl::NotifyOfMultipleAutofillChanges() {
|
| DCHECK(db_thread_->BelongsToCurrentThread());
|
| +
|
| + // DB thread notification.
|
| + FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread, db_observer_list_,
|
| + AutofillMultipleChanged());
|
| +
|
| + // UI thread notification.
|
| ui_thread_->PostTask(FROM_HERE, on_changed_callback_);
|
| }
|
|
|
| @@ -278,6 +284,10 @@ WebDatabase::State AutofillWebDataBackendImpl::AddCreditCard(
|
| return WebDatabase::COMMIT_NOT_NEEDED;
|
| }
|
|
|
| + FOR_EACH_OBSERVER(
|
| + AutofillWebDataServiceObserverOnDBThread, db_observer_list_,
|
| + CreditCardChanged(CreditCardChange(CreditCardChange::ADD,
|
| + credit_card.guid(), &credit_card)));
|
| return WebDatabase::COMMIT_NEEDED;
|
| }
|
|
|
| @@ -297,6 +307,11 @@ WebDatabase::State AutofillWebDataBackendImpl::UpdateCreditCard(
|
| NOTREACHED();
|
| return WebDatabase::COMMIT_NOT_NEEDED;
|
| }
|
| +
|
| + FOR_EACH_OBSERVER(
|
| + AutofillWebDataServiceObserverOnDBThread, db_observer_list_,
|
| + CreditCardChanged(CreditCardChange(CreditCardChange::UPDATE,
|
| + credit_card.guid(), &credit_card)));
|
| return WebDatabase::COMMIT_NEEDED;
|
| }
|
|
|
| @@ -307,6 +322,10 @@ WebDatabase::State AutofillWebDataBackendImpl::RemoveCreditCard(
|
| NOTREACHED();
|
| return WebDatabase::COMMIT_NOT_NEEDED;
|
| }
|
| +
|
| + FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread, db_observer_list_,
|
| + CreditCardChanged(CreditCardChange(CreditCardChange::REMOVE,
|
| + guid, nullptr)));
|
| return WebDatabase::COMMIT_NEEDED;
|
| }
|
|
|
| @@ -361,20 +380,31 @@ WebDatabase::State AutofillWebDataBackendImpl::UpdateServerCardUsageStats(
|
| const CreditCard& card,
|
| WebDatabase* db) {
|
| DCHECK(db_thread_->BelongsToCurrentThread());
|
| - if (AutofillTable::FromWebDatabase(db)->UpdateServerCardUsageStats(card))
|
| - return WebDatabase::COMMIT_NEEDED;
|
| - return WebDatabase::COMMIT_NOT_NEEDED;
|
| + if (!AutofillTable::FromWebDatabase(db)->UpdateServerCardUsageStats(card))
|
| + return WebDatabase::COMMIT_NOT_NEEDED;
|
| +
|
| + FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread, db_observer_list_,
|
| + CreditCardChanged(CreditCardChange(CreditCardChange::UPDATE,
|
| + card.guid(), &card)));
|
| +
|
| + return WebDatabase::COMMIT_NEEDED;
|
| }
|
|
|
| WebDatabase::State AutofillWebDataBackendImpl::UpdateServerAddressUsageStats(
|
| const AutofillProfile& profile,
|
| WebDatabase* db) {
|
| DCHECK(db_thread_->BelongsToCurrentThread());
|
| - if (AutofillTable::FromWebDatabase(db)->UpdateServerAddressUsageStats(
|
| + if (!AutofillTable::FromWebDatabase(db)->UpdateServerAddressUsageStats(
|
| profile)) {
|
| - return WebDatabase::COMMIT_NEEDED;
|
| + return WebDatabase::COMMIT_NOT_NEEDED;
|
| }
|
| - return WebDatabase::COMMIT_NOT_NEEDED;
|
| +
|
| + FOR_EACH_OBSERVER(
|
| + AutofillWebDataServiceObserverOnDBThread, db_observer_list_,
|
| + AutofillProfileChanged(AutofillProfileChange(
|
| + AutofillProfileChange::UPDATE, profile.guid(), &profile)));
|
| +
|
| + return WebDatabase::COMMIT_NEEDED;
|
| }
|
|
|
| WebDatabase::State AutofillWebDataBackendImpl::ClearAllServerData(
|
| @@ -400,12 +430,17 @@ WebDatabase::State
|
| delete_end,
|
| &profile_guids,
|
| &credit_card_guids)) {
|
| - for (std::vector<std::string>::iterator iter = profile_guids.begin();
|
| - iter != profile_guids.end(); ++iter) {
|
| - AutofillProfileChange change(AutofillProfileChange::REMOVE, *iter, NULL);
|
| + for (const std::string& guid : profile_guids) {
|
| FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread,
|
| db_observer_list_,
|
| - AutofillProfileChanged(change));
|
| + AutofillProfileChanged(AutofillProfileChange(
|
| + AutofillProfileChange::REMOVE, guid, nullptr)));
|
| + }
|
| + for (const std::string& guid : credit_card_guids) {
|
| + FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread,
|
| + db_observer_list_,
|
| + CreditCardChanged(CreditCardChange(
|
| + CreditCardChange::REMOVE, guid, nullptr)));
|
| }
|
| // Note: It is the caller's responsibility to post notifications for any
|
| // changes, e.g. by calling the Refresh() method of PersonalDataManager.
|
|
|