summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-22 17:25:53 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-22 17:25:53 +0000
commit59f5e0204cbc0e524b2687fb1beddda82047d16d (patch)
treebc0d9452333240d3a9d9a682cb6d27666089c612 /chrome
parentfd98f105b85f074a1b6adb2b6ab37d2e36ffbc92 (diff)
downloadchromium_src-59f5e0204cbc0e524b2687fb1beddda82047d16d.zip
chromium_src-59f5e0204cbc0e524b2687fb1beddda82047d16d.tar.gz
chromium_src-59f5e0204cbc0e524b2687fb1beddda82047d16d.tar.bz2
AutoFill: Record whether the user initiated the form submission and don't save form data if the form was not user-submitted.
BUG=48225 TEST=none Review URL: http://codereview.chromium.org/2842062 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53350 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/autofill/autofill_manager.cc4
-rw-r--r--chrome/browser/autofill/form_structure.cc3
-rw-r--r--chrome/browser/autofill/form_structure_unittest.cc1
-rw-r--r--chrome/common/render_messages.h2
-rw-r--r--chrome/renderer/form_manager.cc1
5 files changed, 11 insertions, 0 deletions
diff --git a/chrome/browser/autofill/autofill_manager.cc b/chrome/browser/autofill/autofill_manager.cc
index 127cc56..36ca761 100644
--- a/chrome/browser/autofill/autofill_manager.cc
+++ b/chrome/browser/autofill/autofill_manager.cc
@@ -117,6 +117,10 @@ void AutoFillManager::FormSubmitted(const FormData& form) {
if (tab_contents_->profile()->IsOffTheRecord())
return;
+ // Don't save data that was submitted through JavaScript.
+ if (!form.user_submitted)
+ return;
+
// Grab a copy of the form data.
upload_form_structure_.reset(new FormStructure(form));
diff --git a/chrome/browser/autofill/form_structure.cc b/chrome/browser/autofill/form_structure.cc
index dd12d37..9fb3d63 100644
--- a/chrome/browser/autofill/form_structure.cc
+++ b/chrome/browser/autofill/form_structure.cc
@@ -329,6 +329,9 @@ FormData FormStructure::ConvertToFormData() const {
form.origin = source_url_;
form.action = target_url_;
+ // FormStructures can't be created by forms not submitted by the user.
+ form.user_submitted = true;
+
if (method_ == GET)
form.method = ASCIIToUTF16("GET");
else if (method_ == POST)
diff --git a/chrome/browser/autofill/form_structure_unittest.cc b/chrome/browser/autofill/form_structure_unittest.cc
index 7b8848f..0a02198 100644
--- a/chrome/browser/autofill/form_structure_unittest.cc
+++ b/chrome/browser/autofill/form_structure_unittest.cc
@@ -93,6 +93,7 @@ TEST(FormStructureTest, AutoFillCount) {
TEST(FormStructureTest, ConvertToFormData) {
FormData form;
form.method = ASCIIToUTF16("post");
+ form.user_submitted = true;
form.fields.push_back(webkit_glue::FormField(ASCIIToUTF16("username"),
ASCIIToUTF16("username"),
string16(),
diff --git a/chrome/common/render_messages.h b/chrome/common/render_messages.h
index e1ec6b3..bc026d3 100644
--- a/chrome/common/render_messages.h
+++ b/chrome/common/render_messages.h
@@ -1788,6 +1788,7 @@ struct ParamTraits<webkit_glue::FormData> {
WriteParam(m, p.method);
WriteParam(m, p.origin);
WriteParam(m, p.action);
+ WriteParam(m, p.user_submitted);
WriteParam(m, p.fields);
}
static bool Read(const Message* m, void** iter, param_type* p) {
@@ -1796,6 +1797,7 @@ struct ParamTraits<webkit_glue::FormData> {
ReadParam(m, iter, &p->method) &&
ReadParam(m, iter, &p->origin) &&
ReadParam(m, iter, &p->action) &&
+ ReadParam(m, iter, &p->user_submitted) &&
ReadParam(m, iter, &p->fields);
}
static void Log(const param_type& p, std::wstring* l) {
diff --git a/chrome/renderer/form_manager.cc b/chrome/renderer/form_manager.cc
index bfb9fe9..56640af 100644
--- a/chrome/renderer/form_manager.cc
+++ b/chrome/renderer/form_manager.cc
@@ -330,6 +330,7 @@ bool FormManager::WebFormElementToFormData(const WebFormElement& element,
form->method = element.method();
form->origin = frame->url();
form->action = frame->document().completeURL(element.action());
+ form->user_submitted = element.wasUserSubmitted();
// If the completed URL is not valid, just use the action we get from
// WebKit.