diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-22 17:25:53 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-22 17:25:53 +0000 |
commit | 59f5e0204cbc0e524b2687fb1beddda82047d16d (patch) | |
tree | bc0d9452333240d3a9d9a682cb6d27666089c612 /chrome | |
parent | fd98f105b85f074a1b6adb2b6ab37d2e36ffbc92 (diff) | |
download | chromium_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.cc | 4 | ||||
-rw-r--r-- | chrome/browser/autofill/form_structure.cc | 3 | ||||
-rw-r--r-- | chrome/browser/autofill/form_structure_unittest.cc | 1 | ||||
-rw-r--r-- | chrome/common/render_messages.h | 2 | ||||
-rw-r--r-- | chrome/renderer/form_manager.cc | 1 |
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. |