Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4020)

Unified Diff: chrome/renderer/autofill/autofill_renderer_browsertest.cc

Issue 242613006: [Autofill] Enable Autofill for dynamically created forms. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Test fix Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/autofill/autofill_renderer_browsertest.cc
diff --git a/chrome/renderer/autofill/autofill_renderer_browsertest.cc b/chrome/renderer/autofill/autofill_renderer_browsertest.cc
index a2f2f9f93f3124422701670d0c72816e08805aed..fbba14a88b95f765189ee4fe14f36336df8fceac 100644
--- a/chrome/renderer/autofill/autofill_renderer_browsertest.cc
+++ b/chrome/renderer/autofill/autofill_renderer_browsertest.cc
@@ -79,7 +79,7 @@ TEST_F(AutofillRendererTest, SendForms) {
ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
AutofillHostMsg_FormsSeen::Param params;
AutofillHostMsg_FormsSeen::Read(message, &params);
- const std::vector<FormData>& forms = params.a;
+ std::vector<FormData> forms = params.a;
ASSERT_EQ(1UL, forms.size());
ASSERT_EQ(4UL, forms[0].fields.size());
@@ -110,6 +110,56 @@ TEST_F(AutofillRendererTest, SendForms) {
expected.form_control_type = "select-one";
expected.max_length = 0;
EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[3]);
+
+ render_thread_->sink().ClearMessages();
+
+ // Dynamically create a new form. A new message should be sent for it, but
+ // not for the previous form.
+ ExecuteJavaScript(
+ "var newForm=document.createElement('form');"
+ "newForm.id='new_testform';"
+ "newForm.action='http://google.com';"
+ "newForm.method='post';"
+ "var newFirstname=document.createElement('input');"
+ "newFirstname.setAttribute('type', 'text');"
+ "newFirstname.setAttribute('id', 'second_firstname');"
+ "newFirstname.value = 'Bob';"
+ "var newLastname=document.createElement('input');"
+ "newLastname.setAttribute('type', 'text');"
+ "newLastname.setAttribute('id', 'second_lastname');"
+ "newLastname.value = 'Hope';"
+ "var newEmail=document.createElement('input');"
+ "newEmail.setAttribute('type', 'text');"
+ "newEmail.setAttribute('id', 'second_email');"
+ "newEmail.value = 'bobhope@example.com';"
+ "newForm.appendChild(newFirstname);"
+ "newForm.appendChild(newLastname);"
+ "newForm.appendChild(newEmail);"
+ "document.body.appendChild(newForm);");
+ msg_loop_.RunUntilIdle();
+
+ message = render_thread_->sink().GetFirstMessageMatching(
+ AutofillHostMsg_FormsSeen::ID);
+ ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
+ AutofillHostMsg_FormsSeen::Read(message, &params);
+ forms = params.a;
+ ASSERT_EQ(1UL, forms.size());
+ ASSERT_EQ(3UL, forms[0].fields.size());
+
+ expected.form_control_type = "text";
+ expected.max_length = WebInputElement::defaultMaxLength();
+
+ expected.name = ASCIIToUTF16("second_firstname");
+ expected.value = ASCIIToUTF16("Bob");
+ EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[0]);
+
+ expected.name = ASCIIToUTF16("second_lastname");
+ expected.value = ASCIIToUTF16("Hope");
+ EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[1]);
+
+ expected.name = ASCIIToUTF16("second_email");
+ expected.value = ASCIIToUTF16("bobhope@example.com");
+ EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[2]);
}
TEST_F(AutofillRendererTest, EnsureNoFormSeenIfTooFewFields) {
« no previous file with comments | « chrome/browser/autofill/autofill_browsertest.cc ('k') | chrome/renderer/autofill/form_autofill_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698