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

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

Issue 853523004: Autofill: Set requirements for number of recognized fields in an autofillable form (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 11 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/form_autofill_browsertest.cc
diff --git a/chrome/renderer/autofill/form_autofill_browsertest.cc b/chrome/renderer/autofill/form_autofill_browsertest.cc
index 24b5f05cab1403664b768f7bb2980e89b9657201..98f161c5cd405a5a08179c03bd01359c59c8720a 100644
--- a/chrome/renderer/autofill/form_autofill_browsertest.cc
+++ b/chrome/renderer/autofill/form_autofill_browsertest.cc
@@ -196,8 +196,11 @@ class FormAutofillTest : public ChromeRenderViewTest {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ EXPECT_EQ(1U, unowned_form_index);
const FormData& form = forms[0];
EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
@@ -256,8 +259,12 @@ class FormAutofillTest : public ChromeRenderViewTest {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ const size_t expected_index = unowned ? 0 : 1;
+ EXPECT_EQ(expected_index, unowned_form_index);
// Get the input element we want to find.
WebInputElement input_element = GetInputElementById("firstname");
@@ -487,8 +494,12 @@ class FormAutofillTest : public ChromeRenderViewTest {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ const size_t expected_index = unowned ? 0 : 1;
+ EXPECT_EQ(expected_index, unowned_form_index);
// Get the input element we want to find.
WebInputElement input_element = GetInputElementById("firstname");
@@ -567,8 +578,12 @@ class FormAutofillTest : public ChromeRenderViewTest {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ const size_t expected_index = unowned ? 0 : 1;
+ EXPECT_EQ(expected_index, unowned_form_index);
// Get the textarea element we want to find.
WebElement element = web_frame->document().getElementById("street-address");
@@ -657,8 +672,12 @@ class FormAutofillTest : public ChromeRenderViewTest {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ const size_t expected_index = unowned ? 0 : 1;
+ EXPECT_EQ(expected_index, unowned_form_index);
// Get the input element we want to find.
WebInputElement input_element = GetInputElementById("firstname");
@@ -745,8 +764,12 @@ class FormAutofillTest : public ChromeRenderViewTest {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ const size_t expected_index = unowned ? 0 : 1;
+ EXPECT_EQ(expected_index, unowned_form_index);
// Get the input element we want to find.
WebInputElement input_element = GetInputElementById("firstname");
@@ -817,8 +840,12 @@ class FormAutofillTest : public ChromeRenderViewTest {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ const size_t expected_index = unowned ? 0 : 1;
+ EXPECT_EQ(expected_index, unowned_form_index);
// Get the input element we want to find.
WebInputElement input_element = GetInputElementById("firstname");
@@ -892,9 +919,13 @@ class FormAutofillTest : public ChromeRenderViewTest {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
const size_t expected_size = unowned ? 1 : 2;
ASSERT_EQ(expected_size, forms.size());
+ const size_t expected_index = unowned ? 0 : 2;
+ EXPECT_EQ(expected_index, unowned_form_index);
// Get the input element we want to find.
WebInputElement input_element = GetInputElementById("apple");
@@ -975,8 +1006,12 @@ class FormAutofillTest : public ChromeRenderViewTest {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ const size_t expected_index = unowned ? 0 : 1;
+ EXPECT_EQ(expected_index, unowned_form_index);
// Get the input element we want to find.
WebInputElement input_element = GetInputElementById("firstname");
@@ -1071,8 +1106,12 @@ class FormAutofillTest : public ChromeRenderViewTest {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ const size_t expected_index = unowned ? 0 : 1;
+ EXPECT_EQ(expected_index, unowned_form_index);
// Set the auto-filled attribute.
WebInputElement firstname = GetInputElementById("firstname");
@@ -1167,8 +1206,12 @@ class FormAutofillTest : public ChromeRenderViewTest {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ const size_t expected_index = unowned ? 0 : 1;
+ EXPECT_EQ(expected_index, unowned_form_index);
// Set the auto-filled attribute.
WebInputElement firstname = GetInputElementById("firstname");
@@ -1227,14 +1270,18 @@ class FormAutofillTest : public ChromeRenderViewTest {
EXPECT_EQ(0, firstname.selectionEnd());
}
- void TestClearPreviewedFormWithElement(const char* html) {
+ void TestClearPreviewedFormWithElement(const char* html, bool unowned) {
LoadHTML(html);
WebFrame* web_frame = GetMainFrame();
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ const size_t expected_index = unowned ? 0 : 1;
+ EXPECT_EQ(expected_index, unowned_form_index);
// Set the auto-filled attribute.
WebInputElement firstname = GetInputElementById("firstname");
@@ -1281,14 +1328,19 @@ class FormAutofillTest : public ChromeRenderViewTest {
EXPECT_EQ(0, lastname.selectionEnd());
}
- void TestClearPreviewedFormWithNonEmptyInitiatingNode(const char* html) {
+ void TestClearPreviewedFormWithNonEmptyInitiatingNode(const char* html,
+ bool unowned) {
LoadHTML(html);
WebFrame* web_frame = GetMainFrame();
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ const size_t expected_index = unowned ? 0 : 1;
+ EXPECT_EQ(expected_index, unowned_form_index);
// Set the auto-filled attribute.
WebInputElement firstname = GetInputElementById("firstname");
@@ -1335,14 +1387,19 @@ class FormAutofillTest : public ChromeRenderViewTest {
EXPECT_FALSE(phone.isAutofilled());
}
- void TestClearPreviewedFormWithAutofilledInitiatingNode(const char* html) {
+ void TestClearPreviewedFormWithAutofilledInitiatingNode(const char* html,
+ bool unowned) {
LoadHTML(html);
WebFrame* web_frame = GetMainFrame();
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ const size_t expected_index = unowned ? 0 : 1;
+ EXPECT_EQ(expected_index, unowned_form_index);
// Set the auto-filled attribute.
WebInputElement firstname = GetInputElementById("firstname");
@@ -1388,15 +1445,19 @@ class FormAutofillTest : public ChromeRenderViewTest {
EXPECT_FALSE(phone.isAutofilled());
}
- void TestClearOnlyAutofilledFields(const char* html) {
+ void TestClearOnlyAutofilledFields(const char* html, bool unowned) {
LoadHTML(html);
WebFrame* web_frame = GetMainFrame();
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms =
+ form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ const size_t expected_index = unowned ? 0 : 1;
+ EXPECT_EQ(expected_index, unowned_form_index);
// Set the autofilled attribute.
WebInputElement firstname = GetInputElementById("firstname");
@@ -2088,8 +2149,10 @@ TEST_F(FormAutofillTest, ExtractMultipleForms) {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms = form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(2U, forms.size());
+ EXPECT_EQ(2U, unowned_form_index);
// First form.
const FormData& form = forms[0];
@@ -2151,12 +2214,15 @@ TEST_F(FormAutofillTest, OnlyExtractNewForms) {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms = form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ EXPECT_EQ(1U, unowned_form_index);
// Second call should give nothing as there are no new forms.
- forms = form_cache.ExtractNewForms();
+ forms = form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_TRUE(forms.empty());
+ EXPECT_EQ(0U, unowned_form_index);
// Append to the current form will re-extract.
ExecuteJavaScript(
@@ -2167,8 +2233,9 @@ TEST_F(FormAutofillTest, OnlyExtractNewForms) {
"document.getElementById('testform').appendChild(newInput);");
msg_loop_.RunUntilIdle();
- forms = form_cache.ExtractNewForms();
+ forms = form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ EXPECT_EQ(1U, unowned_form_index);
const std::vector<FormFieldData>& fields = forms[0].fields;
ASSERT_EQ(4U, fields.size());
@@ -2220,8 +2287,9 @@ TEST_F(FormAutofillTest, OnlyExtractNewForms) {
msg_loop_.RunUntilIdle();
web_frame = GetMainFrame();
- forms = form_cache.ExtractNewForms();
+ forms = form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_EQ(1U, forms.size());
+ EXPECT_EQ(1U, unowned_form_index);
const std::vector<FormFieldData>& fields2 = forms[0].fields;
ASSERT_EQ(3U, fields2.size());
@@ -2251,8 +2319,10 @@ TEST_F(FormAutofillTest, ExtractFormsTooFewFields) {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms = form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_TRUE(forms.empty());
+ EXPECT_EQ(0U, unowned_form_index);
}
// We should not report additional forms for empty forms.
@@ -2266,8 +2336,10 @@ TEST_F(FormAutofillTest, ExtractFormsSkippedForms) {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms = form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_TRUE(forms.empty());
+ EXPECT_EQ(0U, unowned_form_index);
}
// We should not report additional forms for empty forms.
@@ -2279,8 +2351,10 @@ TEST_F(FormAutofillTest, ExtractFormsNoFields) {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms = form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_TRUE(forms.empty());
+ EXPECT_EQ(0U, unowned_form_index);
}
// We should not extract a form if it has too few fillable fields.
@@ -2298,8 +2372,10 @@ TEST_F(FormAutofillTest, ExtractFormsTooFewFieldsSkipsCheckable) {
ASSERT_NE(nullptr, web_frame);
FormCache form_cache(*web_frame);
- std::vector<FormData> forms = form_cache.ExtractNewForms();
+ size_t unowned_form_index;
+ std::vector<FormData> forms = form_cache.ExtractNewForms(&unowned_form_index);
ASSERT_TRUE(forms.empty());
+ EXPECT_EQ(0U, unowned_form_index);
}
TEST_F(FormAutofillTest, WebFormElementToFormDataAutocomplete) {
@@ -3717,7 +3793,8 @@ TEST_F(FormAutofillTest, ClearPreviewedFormWithElement) {
" <INPUT type='email' id='email2'/>"
" <INPUT type='tel' id='phone'/>"
" <INPUT type='submit' value='Send'/>"
- "</FORM>");
+ "</FORM>",
+ false);
}
TEST_F(FormAutofillTest, ClearPreviewedFormWithElementForUnownedForm) {
@@ -3727,7 +3804,8 @@ TEST_F(FormAutofillTest, ClearPreviewedFormWithElementForUnownedForm) {
"<INPUT type='text' id='email'/>"
"<INPUT type='email' id='email2'/>"
"<INPUT type='tel' id='phone'/>"
- "<INPUT type='submit' value='Send'/>");
+ "<INPUT type='submit' value='Send'/>",
+ true);
}
TEST_F(FormAutofillTest, ClearPreviewedFormWithNonEmptyInitiatingNode) {
@@ -3739,7 +3817,8 @@ TEST_F(FormAutofillTest, ClearPreviewedFormWithNonEmptyInitiatingNode) {
" <INPUT type='email' id='email2'/>"
" <INPUT type='tel' id='phone'/>"
" <INPUT type='submit' value='Send'/>"
- "</FORM>");
+ "</FORM>",
+ false);
}
TEST_F(FormAutofillTest,
@@ -3750,7 +3829,8 @@ TEST_F(FormAutofillTest,
"<INPUT type='text' id='email'/>"
"<INPUT type='email' id='email2'/>"
"<INPUT type='tel' id='phone'/>"
- "<INPUT type='submit' value='Send'/>");
+ "<INPUT type='submit' value='Send'/>",
+ true);
}
TEST_F(FormAutofillTest, ClearPreviewedFormWithAutofilledInitiatingNode) {
@@ -3762,7 +3842,8 @@ TEST_F(FormAutofillTest, ClearPreviewedFormWithAutofilledInitiatingNode) {
" <INPUT type='email' id='email2'/>"
" <INPUT type='tel' id='phone'/>"
" <INPUT type='submit' value='Send'/>"
- "</FORM>");
+ "</FORM>",
+ false);
}
TEST_F(FormAutofillTest,
@@ -3773,7 +3854,8 @@ TEST_F(FormAutofillTest,
"<INPUT type='text' id='email'/>"
"<INPUT type='email' id='email2'/>"
"<INPUT type='tel' id='phone'/>"
- "<INPUT type='submit' value='Send'/>");
+ "<INPUT type='submit' value='Send'/>",
+ true);
}
// Autofill's "Clear Form" should clear only autofilled fields
@@ -3785,7 +3867,8 @@ TEST_F(FormAutofillTest, ClearOnlyAutofilledFields) {
" <INPUT type='email' id='email' value='wyatt@earp.com'/>"
" <INPUT type='tel' id='phone' value='650-777-9999'/>"
" <INPUT type='submit' value='Send'/>"
- "</FORM>");
+ "</FORM>",
+ false);
}
TEST_F(FormAutofillTest, ClearOnlyAutofilledFieldsForUnownedForm) {
@@ -3794,7 +3877,8 @@ TEST_F(FormAutofillTest, ClearOnlyAutofilledFieldsForUnownedForm) {
"<INPUT type='text' id='lastname' value='Earp'/>"
"<INPUT type='email' id='email' value='wyatt@earp.com'/>"
"<INPUT type='tel' id='phone' value='650-777-9999'/>"
- "<INPUT type='submit' value='Send'/>");
+ "<INPUT type='submit' value='Send'/>",
+ true);
}
// If we have multiple labels per id, the labels concatenated into label string.

Powered by Google App Engine
This is Rietveld 408576698