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 2bdc505314633839e961977cfb50cedb7c72ceca..b8ccfb9f28a669756f11d6044928873691d2e351 100644 |
--- a/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc |
+++ b/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc |
@@ -66,6 +66,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_); |
} |
@@ -277,6 +283,11 @@ WebDatabase::State AutofillWebDataBackendImpl::AddCreditCard( |
return WebDatabase::COMMIT_NOT_NEEDED; |
} |
+ // Send GUID-based notification. |
+ FOR_EACH_OBSERVER( |
+ AutofillWebDataServiceObserverOnDBThread, db_observer_list_, |
+ CreditCardChanged(CreditCardChange(CreditCardChange::ADD, |
+ credit_card.guid(), &credit_card))); |
return WebDatabase::COMMIT_NEEDED; |
} |
@@ -296,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; |
} |
@@ -306,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; |
} |
@@ -360,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( |
- profile)) { |
- return WebDatabase::COMMIT_NEEDED; |
+ if (!AutofillTable::FromWebDatabase(db) |
+ ->UpdateServerAddressUsageStats(profile)) { |
+ 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( |
@@ -393,18 +424,23 @@ WebDatabase::State |
WebDatabase* db) { |
DCHECK(db_thread_->BelongsToCurrentThread()); |
std::vector<std::string> profile_guids; |
- std::vector<std::string> credit_card_guids; |
+ std::vector<std::string> card_guids; |
if (AutofillTable::FromWebDatabase(db)->RemoveAutofillDataModifiedBetween( |
delete_begin, |
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); |
+ &card_guids)) { |
+ for (auto it = profile_guids.begin(); it != profile_guids.end(); ++it) { |
FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread, |
db_observer_list_, |
- AutofillProfileChanged(change)); |
+ AutofillProfileChanged(AutofillProfileChange( |
+ AutofillProfileChange::REMOVE, *it, nullptr))); |
+ } |
+ for (auto it = card_guids.begin(); it != card_guids.end(); ++it) { |
+ FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread, |
+ db_observer_list_, |
+ CreditCardChanged(CreditCardChange( |
+ CreditCardChange::REMOVE, *it, nullptr))); |
} |
// Note: It is the caller's responsibility to post notifications for any |
// changes, e.g. by calling the Refresh() method of PersonalDataManager. |