Index: chrome/browser/webdata/web_database.cc |
diff --git a/chrome/browser/webdata/web_database.cc b/chrome/browser/webdata/web_database.cc |
index edeb0d685fd073837d84dcdc1e8dcddc179437e0..2ecf827891c5ce5d07f86b6daa66ab053a66c67e 100644 |
--- a/chrome/browser/webdata/web_database.cc |
+++ b/chrome/browser/webdata/web_database.cc |
@@ -804,18 +804,20 @@ bool WebDatabase::GetAllLogins(std::vector<PasswordForm*>* forms, |
return s.Succeeded(); |
} |
-bool WebDatabase::AddFormFieldValues(const std::vector<FormField>& elements) { |
- return AddFormFieldValuesTime(elements, Time::Now()); |
+bool WebDatabase::AddFormFieldValues(const std::vector<FormField>& elements, |
+ std::vector<AutofillChange>* changes) { |
+ return AddFormFieldValuesTime(elements, changes, Time::Now()); |
} |
bool WebDatabase::AddFormFieldValuesTime(const std::vector<FormField>& elements, |
+ std::vector<AutofillChange>* changes, |
base::Time time) { |
bool result = true; |
for (std::vector<FormField>::const_iterator |
itr = elements.begin(); |
itr != elements.end(); |
itr++) { |
- result = result && AddFormFieldValueTime(*itr, time); |
+ result = result && AddFormFieldValueTime(*itr, changes, time); |
} |
return result; |
} |
@@ -945,11 +947,13 @@ bool WebDatabase::SetCountOfFormElement(int64 pair_id, int count) { |
return true; |
} |
-bool WebDatabase::AddFormFieldValue(const FormField& element) { |
- return AddFormFieldValueTime(element, base::Time::Now()); |
+bool WebDatabase::AddFormFieldValue(const FormField& element, |
+ std::vector<AutofillChange>* changes) { |
+ return AddFormFieldValueTime(element, changes, base::Time::Now()); |
} |
bool WebDatabase::AddFormFieldValueTime(const FormField& element, |
+ std::vector<AutofillChange>* changes, |
base::Time time) { |
int count = 0; |
int64 pair_id; |
@@ -960,8 +964,18 @@ bool WebDatabase::AddFormFieldValueTime(const FormField& element, |
if (count == 0 && !InsertFormElement(element, &pair_id)) |
return false; |
- return SetCountOfFormElement(pair_id, count + 1) && |
- InsertPairIDAndDate(pair_id, time); |
+ if (!SetCountOfFormElement(pair_id, count + 1)) |
+ return false; |
+ |
+ if (!InsertPairIDAndDate(pair_id, time)) |
+ return false; |
+ |
+ AutofillChange::Type change_type = |
+ count == 0 ? AutofillChange::ADD : AutofillChange::UPDATE; |
+ changes->push_back( |
+ AutofillChange(change_type, |
+ AutofillKey(element.name(), element.value()))); |
+ return true; |
} |
bool WebDatabase::GetFormValuesForElementName(const string16& name, |