OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <vector> | 5 #include <vector> |
6 | 6 |
7 #include "base/format_macros.h" | 7 #include "base/format_macros.h" |
8 #include "base/string16.h" | 8 #include "base/string16.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 using WebKit::WebFormElement; | 31 using WebKit::WebFormElement; |
32 using WebKit::WebFrame; | 32 using WebKit::WebFrame; |
33 using WebKit::WebInputElement; | 33 using WebKit::WebInputElement; |
34 using WebKit::WebSelectElement; | 34 using WebKit::WebSelectElement; |
35 using WebKit::WebNode; | 35 using WebKit::WebNode; |
36 using WebKit::WebString; | 36 using WebKit::WebString; |
37 using WebKit::WebVector; | 37 using WebKit::WebVector; |
38 | 38 |
39 using autofill::ClearPreviewedFormWithElement; | 39 using autofill::ClearPreviewedFormWithElement; |
40 using autofill::FillForm; | 40 using autofill::FillForm; |
41 using autofill::FindFormAndFieldForFormControlElement; | 41 using autofill::FindFormAndFieldForInputElement; |
42 using autofill::FormWithElementIsAutofilled; | 42 using autofill::FormWithElementIsAutofilled; |
43 using autofill::FormCache; | 43 using autofill::FormCache; |
44 using autofill::PreviewForm; | 44 using autofill::PreviewForm; |
45 using autofill::WebFormControlElementToFormField; | 45 using autofill::WebFormControlElementToFormField; |
46 | 46 |
47 using webkit_glue::FormData; | 47 using webkit_glue::FormData; |
48 using webkit_glue::FormField; | 48 using webkit_glue::FormField; |
49 | 49 |
50 class FormManagerTest : public RenderViewTest { | 50 class FormAutofillTest : public RenderViewTest { |
51 public: | 51 public: |
52 FormManagerTest() : RenderViewTest() {} | 52 FormAutofillTest() : RenderViewTest() {} |
53 virtual ~FormManagerTest() {} | 53 virtual ~FormAutofillTest() {} |
54 | 54 |
55 void ExpectLabels(const char* html, | 55 void ExpectLabels(const char* html, |
56 const std::vector<string16>& labels, | 56 const std::vector<string16>& labels, |
57 const std::vector<string16>& names, | 57 const std::vector<string16>& names, |
58 const std::vector<string16>& values) { | 58 const std::vector<string16>& values) { |
59 std::vector<string16> control_types(labels.size(), ASCIIToUTF16("text")); | 59 std::vector<string16> control_types(labels.size(), ASCIIToUTF16("text")); |
60 ExpectLabelsAndTypes(html, labels, names, values, control_types); | 60 ExpectLabelsAndTypes(html, labels, names, values, control_types); |
61 } | 61 } |
62 | 62 |
63 void ExpectLabelsAndTypes(const char* html, | 63 void ExpectLabelsAndTypes(const char* html, |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 values.push_back(ASCIIToUTF16("Smith")); | 112 values.push_back(ASCIIToUTF16("Smith")); |
113 | 113 |
114 labels.push_back(ASCIIToUTF16("Email:")); | 114 labels.push_back(ASCIIToUTF16("Email:")); |
115 names.push_back(ASCIIToUTF16("email")); | 115 names.push_back(ASCIIToUTF16("email")); |
116 values.push_back(ASCIIToUTF16("john@example.com")); | 116 values.push_back(ASCIIToUTF16("john@example.com")); |
117 | 117 |
118 ExpectLabels(html, labels, names, values); | 118 ExpectLabels(html, labels, names, values); |
119 } | 119 } |
120 | 120 |
121 private: | 121 private: |
122 DISALLOW_COPY_AND_ASSIGN(FormManagerTest); | 122 DISALLOW_COPY_AND_ASSIGN(FormAutofillTest); |
123 }; | 123 }; |
124 | 124 |
125 // We should be able to extract a normal text field. | 125 // We should be able to extract a normal text field. |
126 TEST_F(FormManagerTest, WebFormControlElementToFormField) { | 126 TEST_F(FormAutofillTest, WebFormControlElementToFormField) { |
127 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"/>"); | 127 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"/>"); |
128 | 128 |
129 WebFrame* frame = GetMainFrame(); | 129 WebFrame* frame = GetMainFrame(); |
130 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); | 130 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); |
131 | 131 |
132 WebElement web_element = frame->document().getElementById("element"); | 132 WebElement web_element = frame->document().getElementById("element"); |
133 WebFormControlElement element = web_element.to<WebFormControlElement>(); | 133 WebFormControlElement element = web_element.to<WebFormControlElement>(); |
134 FormField result1; | 134 FormField result1; |
135 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result1); | 135 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result1); |
136 | 136 |
137 FormField expected; | 137 FormField expected; |
138 expected.form_control_type = ASCIIToUTF16("text"); | 138 expected.form_control_type = ASCIIToUTF16("text"); |
139 expected.max_length = WebInputElement::defaultMaxLength(); | 139 expected.max_length = WebInputElement::defaultMaxLength(); |
140 | 140 |
141 expected.name = ASCIIToUTF16("element"); | 141 expected.name = ASCIIToUTF16("element"); |
142 expected.value = string16(); | 142 expected.value = string16(); |
143 EXPECT_FORM_FIELD_EQUALS(expected, result1); | 143 EXPECT_FORM_FIELD_EQUALS(expected, result1); |
144 | 144 |
145 FormField result2; | 145 FormField result2; |
146 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result2); | 146 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result2); |
147 | 147 |
148 expected.name = ASCIIToUTF16("element"); | 148 expected.name = ASCIIToUTF16("element"); |
149 expected.value = ASCIIToUTF16("value"); | 149 expected.value = ASCIIToUTF16("value"); |
150 EXPECT_FORM_FIELD_EQUALS(expected, result2); | 150 EXPECT_FORM_FIELD_EQUALS(expected, result2); |
151 } | 151 } |
152 | 152 |
153 // We should be able to extract a text field with autocomplete="off". | 153 // We should be able to extract a text field with autocomplete="off". |
154 TEST_F(FormManagerTest, WebFormControlElementToFormFieldAutocompleteOff) { | 154 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldAutocompleteOff) { |
155 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"" | 155 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"" |
156 " autocomplete=\"off\"/>"); | 156 " autocomplete=\"off\"/>"); |
157 | 157 |
158 WebFrame* frame = GetMainFrame(); | 158 WebFrame* frame = GetMainFrame(); |
159 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); | 159 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); |
160 | 160 |
161 WebElement web_element = frame->document().getElementById("element"); | 161 WebElement web_element = frame->document().getElementById("element"); |
162 WebFormControlElement element = web_element.to<WebFormControlElement>(); | 162 WebFormControlElement element = web_element.to<WebFormControlElement>(); |
163 FormField result; | 163 FormField result; |
164 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); | 164 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); |
165 | 165 |
166 FormField expected; | 166 FormField expected; |
167 expected.name = ASCIIToUTF16("element"); | 167 expected.name = ASCIIToUTF16("element"); |
168 expected.value = ASCIIToUTF16("value"); | 168 expected.value = ASCIIToUTF16("value"); |
169 expected.form_control_type = ASCIIToUTF16("text"); | 169 expected.form_control_type = ASCIIToUTF16("text"); |
170 expected.max_length = WebInputElement::defaultMaxLength(); | 170 expected.max_length = WebInputElement::defaultMaxLength(); |
171 EXPECT_FORM_FIELD_EQUALS(expected, result); | 171 EXPECT_FORM_FIELD_EQUALS(expected, result); |
172 } | 172 } |
173 | 173 |
174 // We should be able to extract a text field with maxlength specified. | 174 // We should be able to extract a text field with maxlength specified. |
175 TEST_F(FormManagerTest, WebFormControlElementToFormFieldMaxLength) { | 175 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldMaxLength) { |
176 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"" | 176 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"" |
177 " maxlength=\"5\"/>"); | 177 " maxlength=\"5\"/>"); |
178 | 178 |
179 WebFrame* frame = GetMainFrame(); | 179 WebFrame* frame = GetMainFrame(); |
180 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); | 180 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); |
181 | 181 |
182 WebElement web_element = frame->document().getElementById("element"); | 182 WebElement web_element = frame->document().getElementById("element"); |
183 WebFormControlElement element = web_element.to<WebFormControlElement>(); | 183 WebFormControlElement element = web_element.to<WebFormControlElement>(); |
184 FormField result; | 184 FormField result; |
185 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); | 185 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); |
186 | 186 |
187 FormField expected; | 187 FormField expected; |
188 expected.name = ASCIIToUTF16("element"); | 188 expected.name = ASCIIToUTF16("element"); |
189 expected.value = ASCIIToUTF16("value"); | 189 expected.value = ASCIIToUTF16("value"); |
190 expected.form_control_type = ASCIIToUTF16("text"); | 190 expected.form_control_type = ASCIIToUTF16("text"); |
191 expected.max_length = 5; | 191 expected.max_length = 5; |
192 EXPECT_FORM_FIELD_EQUALS(expected, result); | 192 EXPECT_FORM_FIELD_EQUALS(expected, result); |
193 } | 193 } |
194 | 194 |
195 // We should be able to extract a text field that has been autofilled. | 195 // We should be able to extract a text field that has been autofilled. |
196 TEST_F(FormManagerTest, WebFormControlElementToFormFieldAutofilled) { | 196 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldAutofilled) { |
197 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"/>"); | 197 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"/>"); |
198 | 198 |
199 WebFrame* frame = GetMainFrame(); | 199 WebFrame* frame = GetMainFrame(); |
200 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); | 200 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); |
201 | 201 |
202 WebElement web_element = frame->document().getElementById("element"); | 202 WebElement web_element = frame->document().getElementById("element"); |
203 WebInputElement element = web_element.to<WebInputElement>(); | 203 WebInputElement element = web_element.to<WebInputElement>(); |
204 element.setAutofilled(true); | 204 element.setAutofilled(true); |
205 FormField result; | 205 FormField result; |
206 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); | 206 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); |
207 | 207 |
208 FormField expected; | 208 FormField expected; |
209 expected.name = ASCIIToUTF16("element"); | 209 expected.name = ASCIIToUTF16("element"); |
210 expected.value = ASCIIToUTF16("value"); | 210 expected.value = ASCIIToUTF16("value"); |
211 expected.form_control_type = ASCIIToUTF16("text"); | 211 expected.form_control_type = ASCIIToUTF16("text"); |
212 expected.max_length = WebInputElement::defaultMaxLength(); | 212 expected.max_length = WebInputElement::defaultMaxLength(); |
213 expected.is_autofilled = true; | 213 expected.is_autofilled = true; |
214 EXPECT_FORM_FIELD_EQUALS(expected, result); | 214 EXPECT_FORM_FIELD_EQUALS(expected, result); |
215 } | 215 } |
216 | 216 |
217 // We should be able to extract a <select> field. | 217 // We should be able to extract a <select> field. |
218 TEST_F(FormManagerTest, WebFormControlElementToFormFieldSelect) { | 218 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldSelect) { |
219 LoadHTML("<SELECT id=\"element\"/>" | 219 LoadHTML("<SELECT id=\"element\"/>" |
220 " <OPTION value=\"CA\">California</OPTION>" | 220 " <OPTION value=\"CA\">California</OPTION>" |
221 " <OPTION value=\"TX\">Texas</OPTION>" | 221 " <OPTION value=\"TX\">Texas</OPTION>" |
222 "</SELECT>"); | 222 "</SELECT>"); |
223 | 223 |
224 WebFrame* frame = GetMainFrame(); | 224 WebFrame* frame = GetMainFrame(); |
225 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); | 225 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); |
226 | 226 |
227 WebElement web_element = frame->document().getElementById("element"); | 227 WebElement web_element = frame->document().getElementById("element"); |
228 WebFormControlElement element = web_element.to<WebFormControlElement>(); | 228 WebFormControlElement element = web_element.to<WebFormControlElement>(); |
(...skipping 25 matching lines...) Expand all Loading... |
254 | 254 |
255 ASSERT_EQ(2U, result3.option_values.size()); | 255 ASSERT_EQ(2U, result3.option_values.size()); |
256 ASSERT_EQ(2U, result3.option_contents.size()); | 256 ASSERT_EQ(2U, result3.option_contents.size()); |
257 EXPECT_EQ(ASCIIToUTF16("CA"), result3.option_values[0]); | 257 EXPECT_EQ(ASCIIToUTF16("CA"), result3.option_values[0]); |
258 EXPECT_EQ(ASCIIToUTF16("California"), result3.option_contents[0]); | 258 EXPECT_EQ(ASCIIToUTF16("California"), result3.option_contents[0]); |
259 EXPECT_EQ(ASCIIToUTF16("TX"), result3.option_values[1]); | 259 EXPECT_EQ(ASCIIToUTF16("TX"), result3.option_values[1]); |
260 EXPECT_EQ(ASCIIToUTF16("Texas"), result3.option_contents[1]); | 260 EXPECT_EQ(ASCIIToUTF16("Texas"), result3.option_contents[1]); |
261 } | 261 } |
262 | 262 |
263 // We should not extract the value for non-text and non-select fields. | 263 // We should not extract the value for non-text and non-select fields. |
264 TEST_F(FormManagerTest, WebFormControlElementToFormFieldInvalidType) { | 264 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldInvalidType) { |
265 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 265 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
266 " <INPUT type=\"hidden\" id=\"hidden\" value=\"apple\"/>" | 266 " <INPUT type=\"hidden\" id=\"hidden\" value=\"apple\"/>" |
267 " <INPUT type=\"password\" id=\"password\" value=\"secret\"/>" | 267 " <INPUT type=\"password\" id=\"password\" value=\"secret\"/>" |
268 " <INPUT type=\"checkbox\" id=\"checkbox\" value=\"mail\"/>" | 268 " <INPUT type=\"checkbox\" id=\"checkbox\" value=\"mail\"/>" |
269 " <INPUT type=\"radio\" id=\"radio\" value=\"male\"/>" | 269 " <INPUT type=\"radio\" id=\"radio\" value=\"male\"/>" |
270 " <INPUT type=\"submit\" id=\"submit\" value=\"Send\"/>" | 270 " <INPUT type=\"submit\" id=\"submit\" value=\"Send\"/>" |
271 "</FORM>"); | 271 "</FORM>"); |
272 | 272 |
273 WebFrame* frame = GetMainFrame(); | 273 WebFrame* frame = GetMainFrame(); |
274 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); | 274 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
309 | 309 |
310 web_element = frame->document().getElementById("submit"); | 310 web_element = frame->document().getElementById("submit"); |
311 element = web_element.to<WebFormControlElement>(); | 311 element = web_element.to<WebFormControlElement>(); |
312 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); | 312 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); |
313 expected.name = ASCIIToUTF16("submit"); | 313 expected.name = ASCIIToUTF16("submit"); |
314 expected.form_control_type = ASCIIToUTF16("submit"); | 314 expected.form_control_type = ASCIIToUTF16("submit"); |
315 EXPECT_FORM_FIELD_EQUALS(expected, result); | 315 EXPECT_FORM_FIELD_EQUALS(expected, result); |
316 } | 316 } |
317 | 317 |
318 // We should be able to extract the autocompletetype attribute. | 318 // We should be able to extract the autocompletetype attribute. |
319 TEST_F(FormManagerTest, WebFormControlElementToFormFieldAutocompletetype) { | 319 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldAutocompletetype) { |
320 std::string html = | 320 std::string html = |
321 "<INPUT type=\"text\" id=\"absent\"/>" | 321 "<INPUT type=\"text\" id=\"absent\"/>" |
322 "<INPUT type=\"text\" id=\"empty\" x-autocompletetype=\"\"/>" | 322 "<INPUT type=\"text\" id=\"empty\" x-autocompletetype=\"\"/>" |
323 "<INPUT type=\"text\" id=\"whitespace\" x-autocompletetype=\" \"/>" | 323 "<INPUT type=\"text\" id=\"whitespace\" x-autocompletetype=\" \"/>" |
324 "<INPUT type=\"text\" id=\"regular\" x-autocompletetype=\"email\"/>" | 324 "<INPUT type=\"text\" id=\"regular\" x-autocompletetype=\"email\"/>" |
325 "<INPUT type=\"text\" id=\"multi-valued\" " | 325 "<INPUT type=\"text\" id=\"multi-valued\" " |
326 " x-autocompletetype=\"x-confirm-email email\"/>" | 326 " x-autocompletetype=\"x-confirm-email email\"/>" |
327 "<INPUT type=\"text\" id=\"unprefixed\" autocompletetype=\"email\"/>" | 327 "<INPUT type=\"text\" id=\"unprefixed\" autocompletetype=\"email\"/>" |
328 "<SELECT id=\"select\" x-autocompletetype=\"state\"/>" | 328 "<SELECT id=\"select\" x-autocompletetype=\"state\"/>" |
329 " <OPTION value=\"CA\">California</OPTION>" | 329 " <OPTION value=\"CA\">California</OPTION>" |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
422 element = web_element.to<WebFormControlElement>(); | 422 element = web_element.to<WebFormControlElement>(); |
423 FormField result8; | 423 FormField result8; |
424 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result8); | 424 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result8); |
425 expected.name = ASCIIToUTF16("malicious"); | 425 expected.name = ASCIIToUTF16("malicious"); |
426 expected.form_control_type = ASCIIToUTF16("text"); | 426 expected.form_control_type = ASCIIToUTF16("text"); |
427 expected.autocomplete_type = ASCIIToUTF16("x-max-data-length-exceeded"); | 427 expected.autocomplete_type = ASCIIToUTF16("x-max-data-length-exceeded"); |
428 expected.max_length = WebInputElement::defaultMaxLength(); | 428 expected.max_length = WebInputElement::defaultMaxLength(); |
429 EXPECT_FORM_FIELD_EQUALS(expected, result8); | 429 EXPECT_FORM_FIELD_EQUALS(expected, result8); |
430 } | 430 } |
431 | 431 |
432 TEST_F(FormManagerTest, WebFormElementToFormData) { | 432 TEST_F(FormAutofillTest, WebFormElementToFormData) { |
433 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 433 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
434 " <LABEL for=\"firstname\">First name:</LABEL>" | 434 " <LABEL for=\"firstname\">First name:</LABEL>" |
435 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 435 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
436 " <LABEL for=\"lastname\">Last name:</LABEL>" | 436 " <LABEL for=\"lastname\">Last name:</LABEL>" |
437 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 437 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
438 " <LABEL for=\"state\">State:</LABEL>" | 438 " <LABEL for=\"state\">State:</LABEL>" |
439 " <SELECT id=\"state\"/>" | 439 " <SELECT id=\"state\"/>" |
440 " <OPTION value=\"CA\">California</OPTION>" | 440 " <OPTION value=\"CA\">California</OPTION>" |
441 " <OPTION value=\"TX\">Texas</OPTION>" | 441 " <OPTION value=\"TX\">Texas</OPTION>" |
442 " </SELECT>" | 442 " </SELECT>" |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); | 489 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); |
490 | 490 |
491 expected.name = ASCIIToUTF16("state"); | 491 expected.name = ASCIIToUTF16("state"); |
492 expected.value = ASCIIToUTF16("CA"); | 492 expected.value = ASCIIToUTF16("CA"); |
493 expected.label = ASCIIToUTF16("State:"); | 493 expected.label = ASCIIToUTF16("State:"); |
494 expected.form_control_type = ASCIIToUTF16("select-one"); | 494 expected.form_control_type = ASCIIToUTF16("select-one"); |
495 expected.max_length = 0; | 495 expected.max_length = 0; |
496 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); | 496 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); |
497 } | 497 } |
498 | 498 |
499 TEST_F(FormManagerTest, ExtractForms) { | 499 TEST_F(FormAutofillTest, ExtractForms) { |
500 ExpectJohnSmithLabels( | 500 ExpectJohnSmithLabels( |
501 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 501 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
502 " First name: <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 502 " First name: <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
503 " Last name: <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 503 " Last name: <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
504 " Email: <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" | 504 " Email: <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" |
505 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 505 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
506 "</FORM>"); | 506 "</FORM>"); |
507 } | 507 } |
508 | 508 |
509 TEST_F(FormManagerTest, ExtractMultipleForms) { | 509 TEST_F(FormAutofillTest, ExtractMultipleForms) { |
510 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 510 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
511 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 511 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
512 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 512 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
513 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" | 513 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" |
514 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 514 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
515 "</FORM>" | 515 "</FORM>" |
516 "<FORM name=\"TestForm2\" action=\"http://zoo.com\" method=\"post\">" | 516 "<FORM name=\"TestForm2\" action=\"http://zoo.com\" method=\"post\">" |
517 " <INPUT type=\"text\" id=\"firstname\" value=\"Jack\"/>" | 517 " <INPUT type=\"text\" id=\"firstname\" value=\"Jack\"/>" |
518 " <INPUT type=\"text\" id=\"lastname\" value=\"Adams\"/>" | 518 " <INPUT type=\"text\" id=\"lastname\" value=\"Adams\"/>" |
519 " <INPUT type=\"text\" id=\"email\" value=\"jack@example.com\"/>" | 519 " <INPUT type=\"text\" id=\"email\" value=\"jack@example.com\"/>" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
569 expected.name = ASCIIToUTF16("lastname"); | 569 expected.name = ASCIIToUTF16("lastname"); |
570 expected.value = ASCIIToUTF16("Adams"); | 570 expected.value = ASCIIToUTF16("Adams"); |
571 EXPECT_FORM_FIELD_EQUALS(expected, fields2[1]); | 571 EXPECT_FORM_FIELD_EQUALS(expected, fields2[1]); |
572 | 572 |
573 expected.name = ASCIIToUTF16("email"); | 573 expected.name = ASCIIToUTF16("email"); |
574 expected.value = ASCIIToUTF16("jack@example.com"); | 574 expected.value = ASCIIToUTF16("jack@example.com"); |
575 EXPECT_FORM_FIELD_EQUALS(expected, fields2[2]); | 575 EXPECT_FORM_FIELD_EQUALS(expected, fields2[2]); |
576 } | 576 } |
577 | 577 |
578 // We should not extract a form if it has too few fillable fields. | 578 // We should not extract a form if it has too few fillable fields. |
579 TEST_F(FormManagerTest, ExtractFormsTooFewFields) { | 579 TEST_F(FormAutofillTest, ExtractFormsTooFewFields) { |
580 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 580 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
581 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 581 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
582 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 582 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
583 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 583 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
584 "</FORM>"); | 584 "</FORM>"); |
585 | 585 |
586 WebFrame* web_frame = GetMainFrame(); | 586 WebFrame* web_frame = GetMainFrame(); |
587 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | 587 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
588 | 588 |
589 FormCache form_cache; | 589 FormCache form_cache; |
590 std::vector<FormData> forms; | 590 std::vector<FormData> forms; |
591 form_cache.ExtractForms(*web_frame, &forms); | 591 form_cache.ExtractForms(*web_frame, &forms); |
592 EXPECT_EQ(0U, forms.size()); | 592 EXPECT_EQ(0U, forms.size()); |
593 } | 593 } |
594 | 594 |
595 TEST_F(FormManagerTest, WebFormElementToFormDataAutocomplete) { | 595 TEST_F(FormAutofillTest, WebFormElementToFormDataAutocomplete) { |
596 { | 596 { |
597 // Form is not auto-completable due to autocomplete=off. | 597 // Form is not auto-completable due to autocomplete=off. |
598 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\"" | 598 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\"" |
599 " autocomplete=off>" | 599 " autocomplete=off>" |
600 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 600 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
601 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 601 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
602 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" | 602 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" |
603 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 603 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
604 "</FORM>"); | 604 "</FORM>"); |
605 | 605 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
663 expected.name = ASCIIToUTF16("lastname"); | 663 expected.name = ASCIIToUTF16("lastname"); |
664 expected.value = ASCIIToUTF16("Smith"); | 664 expected.value = ASCIIToUTF16("Smith"); |
665 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); | 665 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); |
666 | 666 |
667 expected.name = ASCIIToUTF16("email"); | 667 expected.name = ASCIIToUTF16("email"); |
668 expected.value = ASCIIToUTF16("john@example.com"); | 668 expected.value = ASCIIToUTF16("john@example.com"); |
669 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); | 669 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); |
670 } | 670 } |
671 } | 671 } |
672 | 672 |
673 TEST_F(FormManagerTest, FindForm) { | 673 TEST_F(FormAutofillTest, FindForm) { |
674 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 674 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
675 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 675 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
676 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 676 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
677 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" | 677 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"" |
| 678 "autocomplete=\"off\" />" |
| 679 " <INPUT type=\"text\" id=\"phone\" value=\"1.800.555.1234\"/>" |
678 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 680 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
679 "</FORM>"); | 681 "</FORM>"); |
680 | 682 |
681 WebFrame* web_frame = GetMainFrame(); | 683 WebFrame* web_frame = GetMainFrame(); |
682 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | 684 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
683 | 685 |
684 FormCache form_cache; | 686 FormCache form_cache; |
685 std::vector<FormData> forms; | 687 std::vector<FormData> forms; |
686 form_cache.ExtractForms(*web_frame, &forms); | 688 form_cache.ExtractForms(*web_frame, &forms); |
687 ASSERT_EQ(1U, forms.size()); | 689 ASSERT_EQ(1U, forms.size()); |
688 | 690 |
689 // Get the input element we want to find. | 691 // Get the input element we want to find. |
690 WebElement element = web_frame->document().getElementById("firstname"); | 692 WebElement element = web_frame->document().getElementById("firstname"); |
691 WebInputElement input_element = element.to<WebInputElement>(); | 693 WebInputElement input_element = element.to<WebInputElement>(); |
692 | 694 |
693 // Find the form and verify it's the correct form. | 695 // Find the form and verify it's the correct form. |
694 FormData form; | 696 FormData form; |
695 FormField field; | 697 FormField field; |
696 EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element, &form, | 698 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, |
697 &field)); | 699 autofill::REQUIRE_NONE)); |
698 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | 700 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
699 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); | 701 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); |
700 EXPECT_EQ(GURL("http://buh.com"), form.action); | 702 EXPECT_EQ(GURL("http://buh.com"), form.action); |
701 | 703 |
702 const std::vector<FormField>& fields = form.fields; | 704 const std::vector<FormField>& fields = form.fields; |
703 ASSERT_EQ(3U, fields.size()); | 705 ASSERT_EQ(4U, fields.size()); |
704 | 706 |
705 FormField expected; | 707 FormField expected; |
706 expected.form_control_type = ASCIIToUTF16("text"); | 708 expected.form_control_type = ASCIIToUTF16("text"); |
707 expected.max_length = WebInputElement::defaultMaxLength(); | 709 expected.max_length = WebInputElement::defaultMaxLength(); |
708 | 710 |
709 expected.name = ASCIIToUTF16("firstname"); | 711 expected.name = ASCIIToUTF16("firstname"); |
710 expected.value = ASCIIToUTF16("John"); | 712 expected.value = ASCIIToUTF16("John"); |
711 EXPECT_FORM_FIELD_EQUALS(expected, fields[0]); | 713 EXPECT_FORM_FIELD_EQUALS(expected, fields[0]); |
712 EXPECT_FORM_FIELD_EQUALS(expected, field); | 714 EXPECT_FORM_FIELD_EQUALS(expected, field); |
713 | 715 |
714 expected.name = ASCIIToUTF16("lastname"); | 716 expected.name = ASCIIToUTF16("lastname"); |
715 expected.value = ASCIIToUTF16("Smith"); | 717 expected.value = ASCIIToUTF16("Smith"); |
716 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); | 718 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); |
717 | 719 |
718 expected.name = ASCIIToUTF16("email"); | 720 expected.name = ASCIIToUTF16("email"); |
719 expected.value = ASCIIToUTF16("john@example.com"); | 721 expected.value = ASCIIToUTF16("john@example.com"); |
720 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); | 722 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); |
| 723 |
| 724 expected.name = ASCIIToUTF16("phone"); |
| 725 expected.value = ASCIIToUTF16("1.800.555.1234"); |
| 726 EXPECT_FORM_FIELD_EQUALS(expected, fields[3]); |
| 727 |
| 728 // Try again, but require autocomplete. |
| 729 FormData form2; |
| 730 FormField field2; |
| 731 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2, |
| 732 autofill::REQUIRE_AUTOCOMPLETE)); |
| 733 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
| 734 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); |
| 735 EXPECT_EQ(GURL("http://buh.com"), form2.action); |
| 736 |
| 737 const std::vector<FormField>& fields2 = form2.fields; |
| 738 ASSERT_EQ(3U, fields2.size()); |
| 739 |
| 740 expected.form_control_type = ASCIIToUTF16("text"); |
| 741 expected.max_length = WebInputElement::defaultMaxLength(); |
| 742 |
| 743 expected.name = ASCIIToUTF16("firstname"); |
| 744 expected.value = ASCIIToUTF16("John"); |
| 745 EXPECT_FORM_FIELD_EQUALS(expected, fields2[0]); |
| 746 EXPECT_FORM_FIELD_EQUALS(expected, field); |
| 747 |
| 748 expected.name = ASCIIToUTF16("lastname"); |
| 749 expected.value = ASCIIToUTF16("Smith"); |
| 750 EXPECT_FORM_FIELD_EQUALS(expected, fields2[1]); |
| 751 |
| 752 expected.name = ASCIIToUTF16("phone"); |
| 753 expected.value = ASCIIToUTF16("1.800.555.1234"); |
| 754 EXPECT_FORM_FIELD_EQUALS(expected, fields2[2]); |
721 } | 755 } |
722 | 756 |
723 TEST_F(FormManagerTest, FillForm) { | 757 TEST_F(FormAutofillTest, FillForm) { |
724 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 758 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
725 " <INPUT type=\"text\" id=\"firstname\"/>" | 759 " <INPUT type=\"text\" id=\"firstname\"/>" |
726 " <INPUT type=\"text\" id=\"lastname\"/>" | 760 " <INPUT type=\"text\" id=\"lastname\"/>" |
727 " <INPUT type=\"hidden\" id=\"imhidden\"/>" | 761 " <INPUT type=\"hidden\" id=\"imhidden\"/>" |
728 " <INPUT type=\"text\" id=\"notempty\" value=\"Hi\"/>" | 762 " <INPUT type=\"text\" id=\"notempty\" value=\"Hi\"/>" |
729 " <INPUT type=\"text\" autocomplete=\"off\" id=\"noautocomplete\"/>" | 763 " <INPUT type=\"text\" autocomplete=\"off\" id=\"noautocomplete\"/>" |
730 " <INPUT type=\"text\" disabled=\"disabled\" id=\"notenabled\"/>" | 764 " <INPUT type=\"text\" disabled=\"disabled\" id=\"notenabled\"/>" |
731 " <INPUT type=\"text\" readonly id=\"readonly\"/>" | 765 " <INPUT type=\"text\" readonly id=\"readonly\"/>" |
732 " <INPUT type=\"text\" style=\"visibility: hidden\"" | 766 " <INPUT type=\"text\" style=\"visibility: hidden\"" |
733 " id=\"invisible\"/>" | 767 " id=\"invisible\"/>" |
734 " <INPUT type=\"text\" style=\"display: none\" id=\"displaynone\"/>" | 768 " <INPUT type=\"text\" style=\"display: none\" id=\"displaynone\"/>" |
735 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 769 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
736 "</FORM>"); | 770 "</FORM>"); |
737 | 771 |
738 WebFrame* web_frame = GetMainFrame(); | 772 WebFrame* web_frame = GetMainFrame(); |
739 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | 773 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
740 | 774 |
741 FormCache form_cache; | 775 FormCache form_cache; |
742 std::vector<FormData> forms; | 776 std::vector<FormData> forms; |
743 form_cache.ExtractForms(*web_frame, &forms); | 777 form_cache.ExtractForms(*web_frame, &forms); |
744 ASSERT_EQ(1U, forms.size()); | 778 ASSERT_EQ(1U, forms.size()); |
745 | 779 |
746 // Get the input element we want to find. | 780 // Get the input element we want to find. |
747 WebElement element = web_frame->document().getElementById("firstname"); | 781 WebElement element = web_frame->document().getElementById("firstname"); |
748 WebInputElement input_element = element.to<WebInputElement>(); | 782 WebInputElement input_element = element.to<WebInputElement>(); |
749 | 783 |
750 // Find the form that contains the input element. | 784 // Find the form that contains the input element. |
751 FormData form; | 785 FormData form; |
752 FormField field; | 786 FormField field; |
753 EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element, &form, | 787 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, |
754 &field)); | 788 autofill::REQUIRE_NONE)); |
755 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | 789 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
756 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); | 790 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); |
757 EXPECT_EQ(GURL("http://buh.com"), form.action); | 791 EXPECT_EQ(GURL("http://buh.com"), form.action); |
758 | 792 |
759 const std::vector<FormField>& fields = form.fields; | 793 const std::vector<FormField>& fields = form.fields; |
760 ASSERT_EQ(8U, fields.size()); | 794 ASSERT_EQ(8U, fields.size()); |
761 | 795 |
762 FormField expected; | 796 FormField expected; |
763 expected.form_control_type = ASCIIToUTF16("text"); | 797 expected.form_control_type = ASCIIToUTF16("text"); |
764 expected.max_length = WebInputElement::defaultMaxLength(); | 798 expected.max_length = WebInputElement::defaultMaxLength(); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
850 EXPECT_FALSE(invisible.isAutofilled()); | 884 EXPECT_FALSE(invisible.isAutofilled()); |
851 EXPECT_TRUE(invisible.value().isEmpty()); | 885 EXPECT_TRUE(invisible.value().isEmpty()); |
852 | 886 |
853 // |display:none| fields are not filled. | 887 // |display:none| fields are not filled. |
854 WebInputElement display_none = | 888 WebInputElement display_none = |
855 document.getElementById("displaynone").to<WebInputElement>(); | 889 document.getElementById("displaynone").to<WebInputElement>(); |
856 EXPECT_FALSE(display_none.isAutofilled()); | 890 EXPECT_FALSE(display_none.isAutofilled()); |
857 EXPECT_TRUE(display_none.value().isEmpty()); | 891 EXPECT_TRUE(display_none.value().isEmpty()); |
858 } | 892 } |
859 | 893 |
860 TEST_F(FormManagerTest, PreviewForm) { | 894 TEST_F(FormAutofillTest, PreviewForm) { |
861 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 895 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
862 " <INPUT type=\"text\" id=\"firstname\"/>" | 896 " <INPUT type=\"text\" id=\"firstname\"/>" |
863 " <INPUT type=\"text\" id=\"lastname\"/>" | 897 " <INPUT type=\"text\" id=\"lastname\"/>" |
864 " <INPUT type=\"text\" id=\"notempty\" value=\"Hi\"/>" | 898 " <INPUT type=\"text\" id=\"notempty\" value=\"Hi\"/>" |
865 " <INPUT type=\"text\" autocomplete=\"off\" id=\"noautocomplete\"/>" | 899 " <INPUT type=\"text\" autocomplete=\"off\" id=\"noautocomplete\"/>" |
866 " <INPUT type=\"text\" disabled=\"disabled\" id=\"notenabled\"/>" | 900 " <INPUT type=\"text\" disabled=\"disabled\" id=\"notenabled\"/>" |
867 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 901 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
868 "</FORM>"); | 902 "</FORM>"); |
869 | 903 |
870 WebFrame* web_frame = GetMainFrame(); | 904 WebFrame* web_frame = GetMainFrame(); |
871 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | 905 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
872 | 906 |
873 FormCache form_cache; | 907 FormCache form_cache; |
874 std::vector<FormData> forms; | 908 std::vector<FormData> forms; |
875 form_cache.ExtractForms(*web_frame, &forms); | 909 form_cache.ExtractForms(*web_frame, &forms); |
876 ASSERT_EQ(1U, forms.size()); | 910 ASSERT_EQ(1U, forms.size()); |
877 | 911 |
878 // Get the input element we want to find. | 912 // Get the input element we want to find. |
879 WebElement element = web_frame->document().getElementById("firstname"); | 913 WebElement element = web_frame->document().getElementById("firstname"); |
880 WebInputElement input_element = element.to<WebInputElement>(); | 914 WebInputElement input_element = element.to<WebInputElement>(); |
881 | 915 |
882 // Find the form that contains the input element. | 916 // Find the form that contains the input element. |
883 FormData form; | 917 FormData form; |
884 FormField field; | 918 FormField field; |
885 EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element, &form, | 919 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, |
886 &field)); | 920 autofill::REQUIRE_NONE)); |
887 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | 921 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
888 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); | 922 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); |
889 EXPECT_EQ(GURL("http://buh.com"), form.action); | 923 EXPECT_EQ(GURL("http://buh.com"), form.action); |
890 | 924 |
891 const std::vector<FormField>& fields = form.fields; | 925 const std::vector<FormField>& fields = form.fields; |
892 ASSERT_EQ(5U, fields.size()); | 926 ASSERT_EQ(5U, fields.size()); |
893 | 927 |
894 FormField expected; | 928 FormField expected; |
895 expected.form_control_type = ASCIIToUTF16("text"); | 929 expected.form_control_type = ASCIIToUTF16("text"); |
896 expected.max_length = WebInputElement::defaultMaxLength(); | 930 expected.max_length = WebInputElement::defaultMaxLength(); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
949 EXPECT_FALSE(noautocomplete.isAutofilled()); | 983 EXPECT_FALSE(noautocomplete.isAutofilled()); |
950 EXPECT_TRUE(noautocomplete.suggestedValue().isEmpty()); | 984 EXPECT_TRUE(noautocomplete.suggestedValue().isEmpty()); |
951 | 985 |
952 // Disabled fields are not previewed. | 986 // Disabled fields are not previewed. |
953 WebInputElement notenabled = | 987 WebInputElement notenabled = |
954 document.getElementById("notenabled").to<WebInputElement>(); | 988 document.getElementById("notenabled").to<WebInputElement>(); |
955 EXPECT_FALSE(notenabled.isAutofilled()); | 989 EXPECT_FALSE(notenabled.isAutofilled()); |
956 EXPECT_TRUE(notenabled.suggestedValue().isEmpty()); | 990 EXPECT_TRUE(notenabled.suggestedValue().isEmpty()); |
957 } | 991 } |
958 | 992 |
959 TEST_F(FormManagerTest, Labels) { | 993 TEST_F(FormAutofillTest, Labels) { |
960 ExpectJohnSmithLabels( | 994 ExpectJohnSmithLabels( |
961 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 995 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
962 " <LABEL for=\"firstname\"> First name: </LABEL>" | 996 " <LABEL for=\"firstname\"> First name: </LABEL>" |
963 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 997 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
964 " <LABEL for=\"lastname\"> Last name: </LABEL>" | 998 " <LABEL for=\"lastname\"> Last name: </LABEL>" |
965 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 999 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
966 " <LABEL for=\"email\"> Email: </LABEL>" | 1000 " <LABEL for=\"email\"> Email: </LABEL>" |
967 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" | 1001 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" |
968 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1002 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
969 "</FORM>"); | 1003 "</FORM>"); |
970 } | 1004 } |
971 | 1005 |
972 TEST_F(FormManagerTest, LabelsWithSpans) { | 1006 TEST_F(FormAutofillTest, LabelsWithSpans) { |
973 ExpectJohnSmithLabels( | 1007 ExpectJohnSmithLabels( |
974 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1008 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
975 " <LABEL for=\"firstname\"><span>First name: </span></LABEL>" | 1009 " <LABEL for=\"firstname\"><span>First name: </span></LABEL>" |
976 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 1010 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
977 " <LABEL for=\"lastname\"><span>Last name: </span></LABEL>" | 1011 " <LABEL for=\"lastname\"><span>Last name: </span></LABEL>" |
978 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 1012 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
979 " <LABEL for=\"email\"><span>Email: </span></LABEL>" | 1013 " <LABEL for=\"email\"><span>Email: </span></LABEL>" |
980 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" | 1014 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" |
981 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1015 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
982 "</FORM>"); | 1016 "</FORM>"); |
983 } | 1017 } |
984 | 1018 |
985 // This test is different from FormManagerTest.Labels in that the label elements | 1019 // This test is different from FormAutofillTest.Labels in that the label |
986 // for= attribute is set to the name of the form control element it is a label | 1020 // elements for= attribute is set to the name of the form control element it is |
987 // for instead of the id of the form control element. This is invalid because | 1021 // a label for instead of the id of the form control element. This is invalid |
988 // the for= attribute must be set to the id of the form control element; | 1022 // because the for= attribute must be set to the id of the form control element; |
989 // however, current label parsing code will extract the text from the previous | 1023 // however, current label parsing code will extract the text from the previous |
990 // label element and apply it to the following input field. | 1024 // label element and apply it to the following input field. |
991 TEST_F(FormManagerTest, InvalidLabels) { | 1025 TEST_F(FormAutofillTest, InvalidLabels) { |
992 ExpectJohnSmithLabels( | 1026 ExpectJohnSmithLabels( |
993 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1027 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
994 " <LABEL for=\"firstname\"> First name: </LABEL>" | 1028 " <LABEL for=\"firstname\"> First name: </LABEL>" |
995 " <INPUT type=\"text\" name=\"firstname\" value=\"John\"/>" | 1029 " <INPUT type=\"text\" name=\"firstname\" value=\"John\"/>" |
996 " <LABEL for=\"lastname\"> Last name: </LABEL>" | 1030 " <LABEL for=\"lastname\"> Last name: </LABEL>" |
997 " <INPUT type=\"text\" name=\"lastname\" value=\"Smith\"/>" | 1031 " <INPUT type=\"text\" name=\"lastname\" value=\"Smith\"/>" |
998 " <LABEL for=\"email\"> Email: </LABEL>" | 1032 " <LABEL for=\"email\"> Email: </LABEL>" |
999 " <INPUT type=\"text\" name=\"email\" value=\"john@example.com\"/>" | 1033 " <INPUT type=\"text\" name=\"email\" value=\"john@example.com\"/>" |
1000 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1034 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1001 "</FORM>"); | 1035 "</FORM>"); |
1002 } | 1036 } |
1003 | 1037 |
1004 // This test has three form control elements, only one of which has a label | 1038 // This test has three form control elements, only one of which has a label |
1005 // element associated with it. | 1039 // element associated with it. |
1006 TEST_F(FormManagerTest, OneLabelElement) { | 1040 TEST_F(FormAutofillTest, OneLabelElement) { |
1007 ExpectJohnSmithLabels( | 1041 ExpectJohnSmithLabels( |
1008 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1042 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
1009 " First name:" | 1043 " First name:" |
1010 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 1044 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
1011 " <LABEL for=\"lastname\">Last name: </LABEL>" | 1045 " <LABEL for=\"lastname\">Last name: </LABEL>" |
1012 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 1046 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
1013 " Email:" | 1047 " Email:" |
1014 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" | 1048 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" |
1015 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1049 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1016 "</FORM>"); | 1050 "</FORM>"); |
1017 } | 1051 } |
1018 | 1052 |
1019 TEST_F(FormManagerTest, LabelsInferredFromText) { | 1053 TEST_F(FormAutofillTest, LabelsInferredFromText) { |
1020 ExpectJohnSmithLabels( | 1054 ExpectJohnSmithLabels( |
1021 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1055 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
1022 " First name:" | 1056 " First name:" |
1023 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 1057 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
1024 " Last name:" | 1058 " Last name:" |
1025 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 1059 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
1026 " Email:" | 1060 " Email:" |
1027 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" | 1061 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" |
1028 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1062 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1029 "</FORM>"); | 1063 "</FORM>"); |
1030 } | 1064 } |
1031 | 1065 |
1032 TEST_F(FormManagerTest, LabelsInferredFromParagraph) { | 1066 TEST_F(FormAutofillTest, LabelsInferredFromParagraph) { |
1033 ExpectJohnSmithLabels( | 1067 ExpectJohnSmithLabels( |
1034 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1068 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
1035 " <P>First name:</P><INPUT type=\"text\" " | 1069 " <P>First name:</P><INPUT type=\"text\" " |
1036 " id=\"firstname\" value=\"John\"/>" | 1070 " id=\"firstname\" value=\"John\"/>" |
1037 " <P>Last name:</P>" | 1071 " <P>Last name:</P>" |
1038 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 1072 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
1039 " <P>Email:</P>" | 1073 " <P>Email:</P>" |
1040 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" | 1074 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" |
1041 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1075 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1042 "</FORM>"); | 1076 "</FORM>"); |
1043 } | 1077 } |
1044 | 1078 |
1045 TEST_F(FormManagerTest, LabelsInferredFromBold) { | 1079 TEST_F(FormAutofillTest, LabelsInferredFromBold) { |
1046 ExpectJohnSmithLabels( | 1080 ExpectJohnSmithLabels( |
1047 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1081 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
1048 " <B>First name:</B><INPUT type=\"text\" " | 1082 " <B>First name:</B><INPUT type=\"text\" " |
1049 " id=\"firstname\" value=\"John\"/>" | 1083 " id=\"firstname\" value=\"John\"/>" |
1050 " <B>Last name:</B>" | 1084 " <B>Last name:</B>" |
1051 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 1085 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
1052 " <B>Email:</B>" | 1086 " <B>Email:</B>" |
1053 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" | 1087 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" |
1054 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1088 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1055 "</FORM>"); | 1089 "</FORM>"); |
1056 } | 1090 } |
1057 | 1091 |
1058 TEST_F(FormManagerTest, LabelsInferredPriorToImgOrBr) { | 1092 TEST_F(FormAutofillTest, LabelsInferredPriorToImgOrBr) { |
1059 ExpectJohnSmithLabels( | 1093 ExpectJohnSmithLabels( |
1060 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1094 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
1061 " First name:<IMG/><INPUT type=\"text\" " | 1095 " First name:<IMG/><INPUT type=\"text\" " |
1062 " id=\"firstname\" value=\"John\"/>" | 1096 " id=\"firstname\" value=\"John\"/>" |
1063 " Last name:<IMG/>" | 1097 " Last name:<IMG/>" |
1064 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 1098 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
1065 " Email:<BR/>" | 1099 " Email:<BR/>" |
1066 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" | 1100 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" |
1067 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1101 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1068 "</FORM>"); | 1102 "</FORM>"); |
1069 } | 1103 } |
1070 | 1104 |
1071 TEST_F(FormManagerTest, LabelsInferredFromTableCell) { | 1105 TEST_F(FormAutofillTest, LabelsInferredFromTableCell) { |
1072 ExpectJohnSmithLabels( | 1106 ExpectJohnSmithLabels( |
1073 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1107 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
1074 "<TABLE>" | 1108 "<TABLE>" |
1075 " <TR>" | 1109 " <TR>" |
1076 " <TD>First name:</TD>" | 1110 " <TD>First name:</TD>" |
1077 " <TD><INPUT type=\"text\" id=\"firstname\" value=\"John\"/></TD>" | 1111 " <TD><INPUT type=\"text\" id=\"firstname\" value=\"John\"/></TD>" |
1078 " </TR>" | 1112 " </TR>" |
1079 " <TR>" | 1113 " <TR>" |
1080 " <TD>Last name:</TD>" | 1114 " <TD>Last name:</TD>" |
1081 " <TD><INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/></TD>" | 1115 " <TD><INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/></TD>" |
1082 " </TR>" | 1116 " </TR>" |
1083 " <TR>" | 1117 " <TR>" |
1084 " <TD>Email:</TD>" | 1118 " <TD>Email:</TD>" |
1085 " <TD><INPUT type=\"text\" id=\"email\"" | 1119 " <TD><INPUT type=\"text\" id=\"email\"" |
1086 " value=\"john@example.com\"/></TD>" | 1120 " value=\"john@example.com\"/></TD>" |
1087 " </TR>" | 1121 " </TR>" |
1088 " <TR>" | 1122 " <TR>" |
1089 " <TD></TD>" | 1123 " <TD></TD>" |
1090 " <TD>" | 1124 " <TD>" |
1091 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1125 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1092 " </TD>" | 1126 " </TD>" |
1093 " </TR>" | 1127 " </TR>" |
1094 "</TABLE>" | 1128 "</TABLE>" |
1095 "</FORM>"); | 1129 "</FORM>"); |
1096 } | 1130 } |
1097 | 1131 |
1098 TEST_F(FormManagerTest, LabelsInferredFromTableCellTH) { | 1132 TEST_F(FormAutofillTest, LabelsInferredFromTableCellTH) { |
1099 ExpectJohnSmithLabels( | 1133 ExpectJohnSmithLabels( |
1100 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1134 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
1101 "<TABLE>" | 1135 "<TABLE>" |
1102 " <TR>" | 1136 " <TR>" |
1103 " <TH>First name:</TH>" | 1137 " <TH>First name:</TH>" |
1104 " <TD><INPUT type=\"text\" id=\"firstname\" value=\"John\"/></TD>" | 1138 " <TD><INPUT type=\"text\" id=\"firstname\" value=\"John\"/></TD>" |
1105 " </TR>" | 1139 " </TR>" |
1106 " <TR>" | 1140 " <TR>" |
1107 " <TH>Last name:</TH>" | 1141 " <TH>Last name:</TH>" |
1108 " <TD><INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/></TD>" | 1142 " <TD><INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/></TD>" |
1109 " </TR>" | 1143 " </TR>" |
1110 " <TR>" | 1144 " <TR>" |
1111 " <TH>Email:</TH>" | 1145 " <TH>Email:</TH>" |
1112 " <TD><INPUT type=\"text\" id=\"email\"" | 1146 " <TD><INPUT type=\"text\" id=\"email\"" |
1113 " value=\"john@example.com\"/></TD>" | 1147 " value=\"john@example.com\"/></TD>" |
1114 " </TR>" | 1148 " </TR>" |
1115 " <TR>" | 1149 " <TR>" |
1116 " <TD></TD>" | 1150 " <TD></TD>" |
1117 " <TD>" | 1151 " <TD>" |
1118 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1152 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1119 " </TD>" | 1153 " </TD>" |
1120 " </TR>" | 1154 " </TR>" |
1121 "</TABLE>" | 1155 "</TABLE>" |
1122 "</FORM>"); | 1156 "</FORM>"); |
1123 } | 1157 } |
1124 | 1158 |
1125 TEST_F(FormManagerTest, LabelsInferredFromTableCellNested) { | 1159 TEST_F(FormAutofillTest, LabelsInferredFromTableCellNested) { |
1126 std::vector<string16> labels, names, values; | 1160 std::vector<string16> labels, names, values; |
1127 | 1161 |
1128 labels.push_back(ASCIIToUTF16("First name: Bogus")); | 1162 labels.push_back(ASCIIToUTF16("First name: Bogus")); |
1129 names.push_back(ASCIIToUTF16("firstname")); | 1163 names.push_back(ASCIIToUTF16("firstname")); |
1130 values.push_back(ASCIIToUTF16("John")); | 1164 values.push_back(ASCIIToUTF16("John")); |
1131 | 1165 |
1132 labels.push_back(ASCIIToUTF16("Last name:")); | 1166 labels.push_back(ASCIIToUTF16("Last name:")); |
1133 names.push_back(ASCIIToUTF16("lastname")); | 1167 names.push_back(ASCIIToUTF16("lastname")); |
1134 values.push_back(ASCIIToUTF16("Smith")); | 1168 values.push_back(ASCIIToUTF16("Smith")); |
1135 | 1169 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1183 " <TD></TD>" | 1217 " <TD></TD>" |
1184 " <TD>" | 1218 " <TD>" |
1185 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1219 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1186 " </TD>" | 1220 " </TD>" |
1187 " </TR>" | 1221 " </TR>" |
1188 "</TABLE>" | 1222 "</TABLE>" |
1189 "</FORM>", | 1223 "</FORM>", |
1190 labels, names, values); | 1224 labels, names, values); |
1191 } | 1225 } |
1192 | 1226 |
1193 TEST_F(FormManagerTest, LabelsInferredFromTableEmptyTDs) { | 1227 TEST_F(FormAutofillTest, LabelsInferredFromTableEmptyTDs) { |
1194 std::vector<string16> labels, names, values; | 1228 std::vector<string16> labels, names, values; |
1195 | 1229 |
1196 labels.push_back(ASCIIToUTF16("* First Name")); | 1230 labels.push_back(ASCIIToUTF16("* First Name")); |
1197 names.push_back(ASCIIToUTF16("firstname")); | 1231 names.push_back(ASCIIToUTF16("firstname")); |
1198 values.push_back(ASCIIToUTF16("John")); | 1232 values.push_back(ASCIIToUTF16("John")); |
1199 | 1233 |
1200 labels.push_back(ASCIIToUTF16("* Last Name")); | 1234 labels.push_back(ASCIIToUTF16("* Last Name")); |
1201 names.push_back(ASCIIToUTF16("lastname")); | 1235 names.push_back(ASCIIToUTF16("lastname")); |
1202 values.push_back(ASCIIToUTF16("Smith")); | 1236 values.push_back(ASCIIToUTF16("Smith")); |
1203 | 1237 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1242 " <TD></TD>" | 1276 " <TD></TD>" |
1243 " <TD>" | 1277 " <TD>" |
1244 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1278 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1245 " </TD>" | 1279 " </TD>" |
1246 " </TR>" | 1280 " </TR>" |
1247 "</TABLE>" | 1281 "</TABLE>" |
1248 "</FORM>", | 1282 "</FORM>", |
1249 labels, names, values); | 1283 labels, names, values); |
1250 } | 1284 } |
1251 | 1285 |
1252 TEST_F(FormManagerTest, LabelsInferredFromPreviousTD) { | 1286 TEST_F(FormAutofillTest, LabelsInferredFromPreviousTD) { |
1253 std::vector<string16> labels, names, values; | 1287 std::vector<string16> labels, names, values; |
1254 | 1288 |
1255 labels.push_back(ASCIIToUTF16("* First Name")); | 1289 labels.push_back(ASCIIToUTF16("* First Name")); |
1256 names.push_back(ASCIIToUTF16("firstname")); | 1290 names.push_back(ASCIIToUTF16("firstname")); |
1257 values.push_back(ASCIIToUTF16("John")); | 1291 values.push_back(ASCIIToUTF16("John")); |
1258 | 1292 |
1259 labels.push_back(ASCIIToUTF16("* Last Name")); | 1293 labels.push_back(ASCIIToUTF16("* Last Name")); |
1260 names.push_back(ASCIIToUTF16("lastname")); | 1294 names.push_back(ASCIIToUTF16("lastname")); |
1261 values.push_back(ASCIIToUTF16("Smith")); | 1295 values.push_back(ASCIIToUTF16("Smith")); |
1262 | 1296 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1294 " </TD>" | 1328 " </TD>" |
1295 " </TR>" | 1329 " </TR>" |
1296 "</TABLE>" | 1330 "</TABLE>" |
1297 "</FORM>", | 1331 "</FORM>", |
1298 labels, names, values); | 1332 labels, names, values); |
1299 } | 1333 } |
1300 | 1334 |
1301 // <script>, <noscript> and <option> tags are excluded when the labels are | 1335 // <script>, <noscript> and <option> tags are excluded when the labels are |
1302 // inferred. | 1336 // inferred. |
1303 // Also <!-- comment --> is excluded. | 1337 // Also <!-- comment --> is excluded. |
1304 TEST_F(FormManagerTest, LabelsInferredFromTableWithSpecialElements) { | 1338 TEST_F(FormAutofillTest, LabelsInferredFromTableWithSpecialElements) { |
1305 std::vector<string16> labels, names, values, control_types; | 1339 std::vector<string16> labels, names, values, control_types; |
1306 | 1340 |
1307 labels.push_back(ASCIIToUTF16("* First Name")); | 1341 labels.push_back(ASCIIToUTF16("* First Name")); |
1308 names.push_back(ASCIIToUTF16("firstname")); | 1342 names.push_back(ASCIIToUTF16("firstname")); |
1309 values.push_back(ASCIIToUTF16("John")); | 1343 values.push_back(ASCIIToUTF16("John")); |
1310 control_types.push_back(ASCIIToUTF16("text")); | 1344 control_types.push_back(ASCIIToUTF16("text")); |
1311 | 1345 |
1312 labels.push_back(ASCIIToUTF16("* Middle Name")); | 1346 labels.push_back(ASCIIToUTF16("* Middle Name")); |
1313 names.push_back(ASCIIToUTF16("middlename")); | 1347 names.push_back(ASCIIToUTF16("middlename")); |
1314 values.push_back(ASCIIToUTF16("Joe")); | 1348 values.push_back(ASCIIToUTF16("Joe")); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1391 " <TD></TD>" | 1425 " <TD></TD>" |
1392 " <TD>" | 1426 " <TD>" |
1393 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1427 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1394 " </TD>" | 1428 " </TD>" |
1395 " </TR>" | 1429 " </TR>" |
1396 "</TABLE>" | 1430 "</TABLE>" |
1397 "</FORM>", | 1431 "</FORM>", |
1398 labels, names, values, control_types); | 1432 labels, names, values, control_types); |
1399 } | 1433 } |
1400 | 1434 |
1401 TEST_F(FormManagerTest, LabelsInferredFromTableLabels) { | 1435 TEST_F(FormAutofillTest, LabelsInferredFromTableLabels) { |
1402 ExpectJohnSmithLabels( | 1436 ExpectJohnSmithLabels( |
1403 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1437 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
1404 "<TABLE>" | 1438 "<TABLE>" |
1405 " <TR>" | 1439 " <TR>" |
1406 " <TD>" | 1440 " <TD>" |
1407 " <LABEL>First name:</LABEL>" | 1441 " <LABEL>First name:</LABEL>" |
1408 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 1442 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
1409 " </TD>" | 1443 " </TD>" |
1410 " </TR>" | 1444 " </TR>" |
1411 " <TR>" | 1445 " <TR>" |
1412 " <TD>" | 1446 " <TD>" |
1413 " <LABEL>Last name:</LABEL>" | 1447 " <LABEL>Last name:</LABEL>" |
1414 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 1448 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
1415 " </TD>" | 1449 " </TD>" |
1416 " </TR>" | 1450 " </TR>" |
1417 " <TR>" | 1451 " <TR>" |
1418 " <TD>" | 1452 " <TD>" |
1419 " <LABEL>Email:</LABEL>" | 1453 " <LABEL>Email:</LABEL>" |
1420 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" | 1454 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" |
1421 " </TD>" | 1455 " </TD>" |
1422 " </TR>" | 1456 " </TR>" |
1423 "</TABLE>" | 1457 "</TABLE>" |
1424 "<INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1458 "<INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1425 "</FORM>"); | 1459 "</FORM>"); |
1426 } | 1460 } |
1427 | 1461 |
1428 TEST_F(FormManagerTest, LabelsInferredFromTableTDInterveningElements) { | 1462 TEST_F(FormAutofillTest, LabelsInferredFromTableTDInterveningElements) { |
1429 ExpectJohnSmithLabels( | 1463 ExpectJohnSmithLabels( |
1430 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1464 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
1431 "<TABLE>" | 1465 "<TABLE>" |
1432 " <TR>" | 1466 " <TR>" |
1433 " <TD>" | 1467 " <TD>" |
1434 " First name:" | 1468 " First name:" |
1435 " <BR>" | 1469 " <BR>" |
1436 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 1470 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
1437 " </TD>" | 1471 " </TD>" |
1438 " </TR>" | 1472 " </TR>" |
(...skipping 11 matching lines...) Expand all Loading... |
1450 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" | 1484 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" |
1451 " </TD>" | 1485 " </TD>" |
1452 " </TR>" | 1486 " </TR>" |
1453 "</TABLE>" | 1487 "</TABLE>" |
1454 "<INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1488 "<INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1455 "</FORM>"); | 1489 "</FORM>"); |
1456 } | 1490 } |
1457 | 1491 |
1458 // Verify that we correctly infer labels when the label text spans multiple | 1492 // Verify that we correctly infer labels when the label text spans multiple |
1459 // adjacent HTML elements, not separated by whitespace. | 1493 // adjacent HTML elements, not separated by whitespace. |
1460 TEST_F(FormManagerTest, LabelsInferredFromTableAdjacentElements) { | 1494 TEST_F(FormAutofillTest, LabelsInferredFromTableAdjacentElements) { |
1461 std::vector<string16> labels, names, values; | 1495 std::vector<string16> labels, names, values; |
1462 | 1496 |
1463 labels.push_back(ASCIIToUTF16("*First Name")); | 1497 labels.push_back(ASCIIToUTF16("*First Name")); |
1464 names.push_back(ASCIIToUTF16("firstname")); | 1498 names.push_back(ASCIIToUTF16("firstname")); |
1465 values.push_back(ASCIIToUTF16("John")); | 1499 values.push_back(ASCIIToUTF16("John")); |
1466 | 1500 |
1467 labels.push_back(ASCIIToUTF16("*Last Name")); | 1501 labels.push_back(ASCIIToUTF16("*Last Name")); |
1468 names.push_back(ASCIIToUTF16("lastname")); | 1502 names.push_back(ASCIIToUTF16("lastname")); |
1469 values.push_back(ASCIIToUTF16("Smith")); | 1503 values.push_back(ASCIIToUTF16("Smith")); |
1470 | 1504 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1504 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1538 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1505 " </TD>" | 1539 " </TD>" |
1506 " </TR>" | 1540 " </TR>" |
1507 "</TABLE>" | 1541 "</TABLE>" |
1508 "</FORM>", | 1542 "</FORM>", |
1509 labels, names, values); | 1543 labels, names, values); |
1510 } | 1544 } |
1511 | 1545 |
1512 // Verify that we correctly infer labels when the label text resides in the | 1546 // Verify that we correctly infer labels when the label text resides in the |
1513 // previous row. | 1547 // previous row. |
1514 TEST_F(FormManagerTest, LabelsInferredFromTableRow) { | 1548 TEST_F(FormAutofillTest, LabelsInferredFromTableRow) { |
1515 std::vector<string16> labels, names, values; | 1549 std::vector<string16> labels, names, values; |
1516 | 1550 |
1517 labels.push_back(ASCIIToUTF16("*First Name *Last Name *Email")); | 1551 labels.push_back(ASCIIToUTF16("*First Name *Last Name *Email")); |
1518 names.push_back(ASCIIToUTF16("firstname")); | 1552 names.push_back(ASCIIToUTF16("firstname")); |
1519 values.push_back(ASCIIToUTF16("John")); | 1553 values.push_back(ASCIIToUTF16("John")); |
1520 | 1554 |
1521 labels.push_back(ASCIIToUTF16("*First Name *Last Name *Email")); | 1555 labels.push_back(ASCIIToUTF16("*First Name *Last Name *Email")); |
1522 names.push_back(ASCIIToUTF16("lastname")); | 1556 names.push_back(ASCIIToUTF16("lastname")); |
1523 values.push_back(ASCIIToUTF16("Smith")); | 1557 values.push_back(ASCIIToUTF16("Smith")); |
1524 | 1558 |
(...skipping 23 matching lines...) Expand all Loading... |
1548 " <TR>" | 1582 " <TR>" |
1549 " <TD>" | 1583 " <TD>" |
1550 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1584 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1551 " </TD>" | 1585 " </TD>" |
1552 " </TR>" | 1586 " </TR>" |
1553 "</TABLE>", | 1587 "</TABLE>", |
1554 labels, names, values); | 1588 labels, names, values); |
1555 } | 1589 } |
1556 | 1590 |
1557 // Verify that we correctly infer labels when enclosed within a list item. | 1591 // Verify that we correctly infer labels when enclosed within a list item. |
1558 TEST_F(FormManagerTest, LabelsInferredFromListItem) { | 1592 TEST_F(FormAutofillTest, LabelsInferredFromListItem) { |
1559 std::vector<string16> labels, names, values; | 1593 std::vector<string16> labels, names, values; |
1560 | 1594 |
1561 labels.push_back(ASCIIToUTF16("* Home Phone")); | 1595 labels.push_back(ASCIIToUTF16("* Home Phone")); |
1562 names.push_back(ASCIIToUTF16("areacode")); | 1596 names.push_back(ASCIIToUTF16("areacode")); |
1563 values.push_back(ASCIIToUTF16("415")); | 1597 values.push_back(ASCIIToUTF16("415")); |
1564 | 1598 |
1565 labels.push_back(ASCIIToUTF16("* Home Phone")); | 1599 labels.push_back(ASCIIToUTF16("* Home Phone")); |
1566 names.push_back(ASCIIToUTF16("prefix")); | 1600 names.push_back(ASCIIToUTF16("prefix")); |
1567 values.push_back(ASCIIToUTF16("555")); | 1601 values.push_back(ASCIIToUTF16("555")); |
1568 | 1602 |
(...skipping 14 matching lines...) Expand all Loading... |
1583 " <INPUT type=\"text\" id=\"suffix\" value=\"1212\"/>" | 1617 " <INPUT type=\"text\" id=\"suffix\" value=\"1212\"/>" |
1584 " </LI>" | 1618 " </LI>" |
1585 " <LI>" | 1619 " <LI>" |
1586 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1620 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1587 " </LI>" | 1621 " </LI>" |
1588 "</DIV>" | 1622 "</DIV>" |
1589 "</FORM>", | 1623 "</FORM>", |
1590 labels, names, values); | 1624 labels, names, values); |
1591 } | 1625 } |
1592 | 1626 |
1593 TEST_F(FormManagerTest, LabelsInferredFromDefinitionList) { | 1627 TEST_F(FormAutofillTest, LabelsInferredFromDefinitionList) { |
1594 std::vector<string16> labels, names, values; | 1628 std::vector<string16> labels, names, values; |
1595 | 1629 |
1596 labels.push_back(ASCIIToUTF16("* First name: Bogus")); | 1630 labels.push_back(ASCIIToUTF16("* First name: Bogus")); |
1597 names.push_back(ASCIIToUTF16("firstname")); | 1631 names.push_back(ASCIIToUTF16("firstname")); |
1598 values.push_back(ASCIIToUTF16("John")); | 1632 values.push_back(ASCIIToUTF16("John")); |
1599 | 1633 |
1600 labels.push_back(ASCIIToUTF16("Last name:")); | 1634 labels.push_back(ASCIIToUTF16("Last name:")); |
1601 names.push_back(ASCIIToUTF16("lastname")); | 1635 names.push_back(ASCIIToUTF16("lastname")); |
1602 values.push_back(ASCIIToUTF16("Smith")); | 1636 values.push_back(ASCIIToUTF16("Smith")); |
1603 | 1637 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1646 " </DD>" | 1680 " </DD>" |
1647 " <DT></DT>" | 1681 " <DT></DT>" |
1648 " <DD>" | 1682 " <DD>" |
1649 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1683 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1650 " </DD>" | 1684 " </DD>" |
1651 "</DL>" | 1685 "</DL>" |
1652 "</FORM>", | 1686 "</FORM>", |
1653 labels, names, values); | 1687 labels, names, values); |
1654 } | 1688 } |
1655 | 1689 |
1656 TEST_F(FormManagerTest, LabelsInferredWithSameName) { | 1690 TEST_F(FormAutofillTest, LabelsInferredWithSameName) { |
1657 std::vector<string16> labels, names, values; | 1691 std::vector<string16> labels, names, values; |
1658 | 1692 |
1659 labels.push_back(ASCIIToUTF16("Address Line 1:")); | 1693 labels.push_back(ASCIIToUTF16("Address Line 1:")); |
1660 names.push_back(ASCIIToUTF16("Address")); | 1694 names.push_back(ASCIIToUTF16("Address")); |
1661 values.push_back(string16()); | 1695 values.push_back(string16()); |
1662 | 1696 |
1663 labels.push_back(ASCIIToUTF16("Address Line 2:")); | 1697 labels.push_back(ASCIIToUTF16("Address Line 2:")); |
1664 names.push_back(ASCIIToUTF16("Address")); | 1698 names.push_back(ASCIIToUTF16("Address")); |
1665 values.push_back(string16()); | 1699 values.push_back(string16()); |
1666 | 1700 |
1667 labels.push_back(ASCIIToUTF16("Address Line 3:")); | 1701 labels.push_back(ASCIIToUTF16("Address Line 3:")); |
1668 names.push_back(ASCIIToUTF16("Address")); | 1702 names.push_back(ASCIIToUTF16("Address")); |
1669 values.push_back(string16()); | 1703 values.push_back(string16()); |
1670 | 1704 |
1671 ExpectLabels( | 1705 ExpectLabels( |
1672 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1706 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
1673 " Address Line 1:" | 1707 " Address Line 1:" |
1674 " <INPUT type=\"text\" name=\"Address\"/>" | 1708 " <INPUT type=\"text\" name=\"Address\"/>" |
1675 " Address Line 2:" | 1709 " Address Line 2:" |
1676 " <INPUT type=\"text\" name=\"Address\"/>" | 1710 " <INPUT type=\"text\" name=\"Address\"/>" |
1677 " Address Line 3:" | 1711 " Address Line 3:" |
1678 " <INPUT type=\"text\" name=\"Address\"/>" | 1712 " <INPUT type=\"text\" name=\"Address\"/>" |
1679 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1713 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1680 "</FORM>", | 1714 "</FORM>", |
1681 labels, names, values); | 1715 labels, names, values); |
1682 } | 1716 } |
1683 | 1717 |
1684 TEST_F(FormManagerTest, LabelsInferredWithImageTags) { | 1718 TEST_F(FormAutofillTest, LabelsInferredWithImageTags) { |
1685 std::vector<string16> labels, names, values; | 1719 std::vector<string16> labels, names, values; |
1686 | 1720 |
1687 labels.push_back(ASCIIToUTF16("Phone:")); | 1721 labels.push_back(ASCIIToUTF16("Phone:")); |
1688 names.push_back(ASCIIToUTF16("dayphone1")); | 1722 names.push_back(ASCIIToUTF16("dayphone1")); |
1689 values.push_back(string16()); | 1723 values.push_back(string16()); |
1690 | 1724 |
1691 labels.push_back(ASCIIToUTF16("-")); | 1725 labels.push_back(ASCIIToUTF16("-")); |
1692 names.push_back(ASCIIToUTF16("dayphone2")); | 1726 names.push_back(ASCIIToUTF16("dayphone2")); |
1693 values.push_back(string16()); | 1727 values.push_back(string16()); |
1694 | 1728 |
(...skipping 22 matching lines...) Expand all Loading... |
1717 " <img/>" | 1751 " <img/>" |
1718 " <input type=\"text\" name=\"dayphone3\">" | 1752 " <input type=\"text\" name=\"dayphone3\">" |
1719 " ext.:" | 1753 " ext.:" |
1720 " <input type=\"text\" name=\"dayphone4\">" | 1754 " <input type=\"text\" name=\"dayphone4\">" |
1721 " <input type=\"text\" name=\"dummy\">" | 1755 " <input type=\"text\" name=\"dummy\">" |
1722 " <input type=\"submit\" name=\"reply-send\" value=\"Send\">" | 1756 " <input type=\"submit\" name=\"reply-send\" value=\"Send\">" |
1723 "</FORM>", | 1757 "</FORM>", |
1724 labels, names, values); | 1758 labels, names, values); |
1725 } | 1759 } |
1726 | 1760 |
1727 TEST_F(FormManagerTest, LabelsInferredFromDivTable) { | 1761 TEST_F(FormAutofillTest, LabelsInferredFromDivTable) { |
1728 ExpectJohnSmithLabels( | 1762 ExpectJohnSmithLabels( |
1729 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1763 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
1730 "<DIV>First name:<BR>" | 1764 "<DIV>First name:<BR>" |
1731 " <SPAN>" | 1765 " <SPAN>" |
1732 " <INPUT type=\"text\" name=\"firstname\" value=\"John\">" | 1766 " <INPUT type=\"text\" name=\"firstname\" value=\"John\">" |
1733 " </SPAN>" | 1767 " </SPAN>" |
1734 "</DIV>" | 1768 "</DIV>" |
1735 "<DIV>Last name:<BR>" | 1769 "<DIV>Last name:<BR>" |
1736 " <SPAN>" | 1770 " <SPAN>" |
1737 " <INPUT type=\"text\" name=\"lastname\" value=\"Smith\">" | 1771 " <INPUT type=\"text\" name=\"lastname\" value=\"Smith\">" |
1738 " </SPAN>" | 1772 " </SPAN>" |
1739 "</DIV>" | 1773 "</DIV>" |
1740 "<DIV>Email:<BR>" | 1774 "<DIV>Email:<BR>" |
1741 " <SPAN>" | 1775 " <SPAN>" |
1742 " <INPUT type=\"text\" name=\"email\" value=\"john@example.com\">" | 1776 " <INPUT type=\"text\" name=\"email\" value=\"john@example.com\">" |
1743 " </SPAN>" | 1777 " </SPAN>" |
1744 "</DIV>" | 1778 "</DIV>" |
1745 "<input type=\"submit\" name=\"reply-send\" value=\"Send\">" | 1779 "<input type=\"submit\" name=\"reply-send\" value=\"Send\">" |
1746 "</FORM>"); | 1780 "</FORM>"); |
1747 } | 1781 } |
1748 | 1782 |
1749 TEST_F(FormManagerTest, LabelsInferredFromDivSiblingTable) { | 1783 TEST_F(FormAutofillTest, LabelsInferredFromDivSiblingTable) { |
1750 ExpectJohnSmithLabels( | 1784 ExpectJohnSmithLabels( |
1751 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1785 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
1752 "<DIV>First name:</DIV>" | 1786 "<DIV>First name:</DIV>" |
1753 "<DIV>" | 1787 "<DIV>" |
1754 " <SPAN>" | 1788 " <SPAN>" |
1755 " <INPUT type=\"text\" name=\"firstname\" value=\"John\">" | 1789 " <INPUT type=\"text\" name=\"firstname\" value=\"John\">" |
1756 " </SPAN>" | 1790 " </SPAN>" |
1757 "</DIV>" | 1791 "</DIV>" |
1758 "<DIV>Last name:</DIV>" | 1792 "<DIV>Last name:</DIV>" |
1759 "<DIV>" | 1793 "<DIV>" |
1760 " <SPAN>" | 1794 " <SPAN>" |
1761 " <INPUT type=\"text\" name=\"lastname\" value=\"Smith\">" | 1795 " <INPUT type=\"text\" name=\"lastname\" value=\"Smith\">" |
1762 " </SPAN>" | 1796 " </SPAN>" |
1763 "</DIV>" | 1797 "</DIV>" |
1764 "<DIV>Email:</DIV>" | 1798 "<DIV>Email:</DIV>" |
1765 "<DIV>" | 1799 "<DIV>" |
1766 " <SPAN>" | 1800 " <SPAN>" |
1767 " <INPUT type=\"text\" name=\"email\" value=\"john@example.com\">" | 1801 " <INPUT type=\"text\" name=\"email\" value=\"john@example.com\">" |
1768 " </SPAN>" | 1802 " </SPAN>" |
1769 "</DIV>" | 1803 "</DIV>" |
1770 "<input type=\"submit\" name=\"reply-send\" value=\"Send\">" | 1804 "<input type=\"submit\" name=\"reply-send\" value=\"Send\">" |
1771 "</FORM>"); | 1805 "</FORM>"); |
1772 } | 1806 } |
1773 | 1807 |
1774 TEST_F(FormManagerTest, LabelsInferredFromDefinitionListRatherThanDivTable) { | 1808 TEST_F(FormAutofillTest, LabelsInferredFromDefinitionListRatherThanDivTable) { |
1775 ExpectJohnSmithLabels( | 1809 ExpectJohnSmithLabels( |
1776 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1810 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
1777 "<DIV>This is not a label.<BR>" | 1811 "<DIV>This is not a label.<BR>" |
1778 "<DL>" | 1812 "<DL>" |
1779 " <DT>" | 1813 " <DT>" |
1780 " <SPAN>" | 1814 " <SPAN>" |
1781 " First name:" | 1815 " First name:" |
1782 " </SPAN>" | 1816 " </SPAN>" |
1783 " </DT>" | 1817 " </DT>" |
1784 " <DD>" | 1818 " <DD>" |
(...skipping 23 matching lines...) Expand all Loading... |
1808 " </DD>" | 1842 " </DD>" |
1809 " <DT></DT>" | 1843 " <DT></DT>" |
1810 " <DD>" | 1844 " <DD>" |
1811 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1845 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1812 " </DD>" | 1846 " </DD>" |
1813 "</DL>" | 1847 "</DL>" |
1814 "</DIV>" | 1848 "</DIV>" |
1815 "</FORM>"); | 1849 "</FORM>"); |
1816 } | 1850 } |
1817 | 1851 |
1818 TEST_F(FormManagerTest, FillFormMaxLength) { | 1852 TEST_F(FormAutofillTest, FillFormMaxLength) { |
1819 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 1853 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
1820 " <INPUT type=\"text\" id=\"firstname\" maxlength=\"5\"/>" | 1854 " <INPUT type=\"text\" id=\"firstname\" maxlength=\"5\"/>" |
1821 " <INPUT type=\"text\" id=\"lastname\" maxlength=\"7\"/>" | 1855 " <INPUT type=\"text\" id=\"lastname\" maxlength=\"7\"/>" |
1822 " <INPUT type=\"text\" id=\"email\" maxlength=\"9\"/>" | 1856 " <INPUT type=\"text\" id=\"email\" maxlength=\"9\"/>" |
1823 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1857 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1824 "</FORM>"); | 1858 "</FORM>"); |
1825 | 1859 |
1826 WebFrame* web_frame = GetMainFrame(); | 1860 WebFrame* web_frame = GetMainFrame(); |
1827 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | 1861 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
1828 | 1862 |
1829 FormCache form_cache; | 1863 FormCache form_cache; |
1830 std::vector<FormData> forms; | 1864 std::vector<FormData> forms; |
1831 form_cache.ExtractForms(*web_frame, &forms); | 1865 form_cache.ExtractForms(*web_frame, &forms); |
1832 ASSERT_EQ(1U, forms.size()); | 1866 ASSERT_EQ(1U, forms.size()); |
1833 | 1867 |
1834 // Get the input element we want to find. | 1868 // Get the input element we want to find. |
1835 WebElement element = web_frame->document().getElementById("firstname"); | 1869 WebElement element = web_frame->document().getElementById("firstname"); |
1836 WebInputElement input_element = element.to<WebInputElement>(); | 1870 WebInputElement input_element = element.to<WebInputElement>(); |
1837 | 1871 |
1838 // Find the form that contains the input element. | 1872 // Find the form that contains the input element. |
1839 FormData form; | 1873 FormData form; |
1840 FormField field; | 1874 FormField field; |
1841 EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element, &form, | 1875 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, |
1842 &field)); | 1876 autofill::REQUIRE_NONE)); |
1843 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | 1877 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
1844 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); | 1878 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); |
1845 EXPECT_EQ(GURL("http://buh.com"), form.action); | 1879 EXPECT_EQ(GURL("http://buh.com"), form.action); |
1846 | 1880 |
1847 const std::vector<FormField>& fields = form.fields; | 1881 const std::vector<FormField>& fields = form.fields; |
1848 ASSERT_EQ(3U, fields.size()); | 1882 ASSERT_EQ(3U, fields.size()); |
1849 | 1883 |
1850 FormField expected; | 1884 FormField expected; |
1851 expected.form_control_type = ASCIIToUTF16("text"); | 1885 expected.form_control_type = ASCIIToUTF16("text"); |
1852 | 1886 |
(...skipping 14 matching lines...) Expand all Loading... |
1867 | 1901 |
1868 // Fill the form. | 1902 // Fill the form. |
1869 form.fields[0].value = ASCIIToUTF16("Brother"); | 1903 form.fields[0].value = ASCIIToUTF16("Brother"); |
1870 form.fields[1].value = ASCIIToUTF16("Jonathan"); | 1904 form.fields[1].value = ASCIIToUTF16("Jonathan"); |
1871 form.fields[2].value = ASCIIToUTF16("brotherj@example.com"); | 1905 form.fields[2].value = ASCIIToUTF16("brotherj@example.com"); |
1872 FillForm(form, input_element); | 1906 FillForm(form, input_element); |
1873 | 1907 |
1874 // Find the newly-filled form that contains the input element. | 1908 // Find the newly-filled form that contains the input element. |
1875 FormData form2; | 1909 FormData form2; |
1876 FormField field2; | 1910 FormField field2; |
1877 EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element, &form2, | 1911 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2, |
1878 &field2)); | 1912 autofill::REQUIRE_NONE)); |
1879 | 1913 |
1880 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); | 1914 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
1881 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); | 1915 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); |
1882 EXPECT_EQ(GURL("http://buh.com"), form2.action); | 1916 EXPECT_EQ(GURL("http://buh.com"), form2.action); |
1883 | 1917 |
1884 const std::vector<FormField>& fields2 = form2.fields; | 1918 const std::vector<FormField>& fields2 = form2.fields; |
1885 ASSERT_EQ(3U, fields2.size()); | 1919 ASSERT_EQ(3U, fields2.size()); |
1886 | 1920 |
1887 expected.form_control_type = ASCIIToUTF16("text"); | 1921 expected.form_control_type = ASCIIToUTF16("text"); |
1888 | 1922 |
(...skipping 12 matching lines...) Expand all Loading... |
1901 expected.name = ASCIIToUTF16("email"); | 1935 expected.name = ASCIIToUTF16("email"); |
1902 expected.value = ASCIIToUTF16("brotherj@"); | 1936 expected.value = ASCIIToUTF16("brotherj@"); |
1903 expected.max_length = 9; | 1937 expected.max_length = 9; |
1904 expected.is_autofilled = true; | 1938 expected.is_autofilled = true; |
1905 EXPECT_FORM_FIELD_EQUALS(expected, fields2[2]); | 1939 EXPECT_FORM_FIELD_EQUALS(expected, fields2[2]); |
1906 } | 1940 } |
1907 | 1941 |
1908 // This test uses negative values of the maxlength attribute for input elements. | 1942 // This test uses negative values of the maxlength attribute for input elements. |
1909 // In this case, the maxlength of the input elements is set to the default | 1943 // In this case, the maxlength of the input elements is set to the default |
1910 // maxlength (defined in WebKit.) | 1944 // maxlength (defined in WebKit.) |
1911 TEST_F(FormManagerTest, FillFormNegativeMaxLength) { | 1945 TEST_F(FormAutofillTest, FillFormNegativeMaxLength) { |
1912 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 1946 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
1913 " <INPUT type=\"text\" id=\"firstname\" maxlength=\"-1\"/>" | 1947 " <INPUT type=\"text\" id=\"firstname\" maxlength=\"-1\"/>" |
1914 " <INPUT type=\"text\" id=\"lastname\" maxlength=\"-10\"/>" | 1948 " <INPUT type=\"text\" id=\"lastname\" maxlength=\"-10\"/>" |
1915 " <INPUT type=\"text\" id=\"email\" maxlength=\"-13\"/>" | 1949 " <INPUT type=\"text\" id=\"email\" maxlength=\"-13\"/>" |
1916 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1950 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
1917 "</FORM>"); | 1951 "</FORM>"); |
1918 | 1952 |
1919 WebFrame* web_frame = GetMainFrame(); | 1953 WebFrame* web_frame = GetMainFrame(); |
1920 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | 1954 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
1921 | 1955 |
1922 FormCache form_cache; | 1956 FormCache form_cache; |
1923 std::vector<FormData> forms; | 1957 std::vector<FormData> forms; |
1924 form_cache.ExtractForms(*web_frame, &forms); | 1958 form_cache.ExtractForms(*web_frame, &forms); |
1925 ASSERT_EQ(1U, forms.size()); | 1959 ASSERT_EQ(1U, forms.size()); |
1926 | 1960 |
1927 // Get the input element we want to find. | 1961 // Get the input element we want to find. |
1928 WebElement element = web_frame->document().getElementById("firstname"); | 1962 WebElement element = web_frame->document().getElementById("firstname"); |
1929 WebInputElement input_element = element.to<WebInputElement>(); | 1963 WebInputElement input_element = element.to<WebInputElement>(); |
1930 | 1964 |
1931 // Find the form that contains the input element. | 1965 // Find the form that contains the input element. |
1932 FormData form; | 1966 FormData form; |
1933 FormField field; | 1967 FormField field; |
1934 EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element, &form, | 1968 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, |
1935 &field)); | 1969 autofill::REQUIRE_NONE)); |
1936 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | 1970 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
1937 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); | 1971 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); |
1938 EXPECT_EQ(GURL("http://buh.com"), form.action); | 1972 EXPECT_EQ(GURL("http://buh.com"), form.action); |
1939 | 1973 |
1940 const std::vector<FormField>& fields = form.fields; | 1974 const std::vector<FormField>& fields = form.fields; |
1941 ASSERT_EQ(3U, fields.size()); | 1975 ASSERT_EQ(3U, fields.size()); |
1942 | 1976 |
1943 FormField expected; | 1977 FormField expected; |
1944 expected.form_control_type = ASCIIToUTF16("text"); | 1978 expected.form_control_type = ASCIIToUTF16("text"); |
1945 expected.max_length = WebInputElement::defaultMaxLength(); | 1979 expected.max_length = WebInputElement::defaultMaxLength(); |
1946 | 1980 |
1947 expected.name = ASCIIToUTF16("firstname"); | 1981 expected.name = ASCIIToUTF16("firstname"); |
1948 EXPECT_FORM_FIELD_EQUALS(expected, fields[0]); | 1982 EXPECT_FORM_FIELD_EQUALS(expected, fields[0]); |
1949 | 1983 |
1950 expected.name = ASCIIToUTF16("lastname"); | 1984 expected.name = ASCIIToUTF16("lastname"); |
1951 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); | 1985 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); |
1952 | 1986 |
1953 expected.name = ASCIIToUTF16("email"); | 1987 expected.name = ASCIIToUTF16("email"); |
1954 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); | 1988 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); |
1955 | 1989 |
1956 // Fill the form. | 1990 // Fill the form. |
1957 form.fields[0].value = ASCIIToUTF16("Brother"); | 1991 form.fields[0].value = ASCIIToUTF16("Brother"); |
1958 form.fields[1].value = ASCIIToUTF16("Jonathan"); | 1992 form.fields[1].value = ASCIIToUTF16("Jonathan"); |
1959 form.fields[2].value = ASCIIToUTF16("brotherj@example.com"); | 1993 form.fields[2].value = ASCIIToUTF16("brotherj@example.com"); |
1960 FillForm(form, input_element); | 1994 FillForm(form, input_element); |
1961 | 1995 |
1962 // Find the newly-filled form that contains the input element. | 1996 // Find the newly-filled form that contains the input element. |
1963 FormData form2; | 1997 FormData form2; |
1964 FormField field2; | 1998 FormField field2; |
1965 EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element, &form2, | 1999 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2, |
1966 &field2)); | 2000 autofill::REQUIRE_NONE)); |
1967 | 2001 |
1968 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); | 2002 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
1969 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); | 2003 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); |
1970 EXPECT_EQ(GURL("http://buh.com"), form2.action); | 2004 EXPECT_EQ(GURL("http://buh.com"), form2.action); |
1971 | 2005 |
1972 const std::vector<FormField>& fields2 = form2.fields; | 2006 const std::vector<FormField>& fields2 = form2.fields; |
1973 ASSERT_EQ(3U, fields2.size()); | 2007 ASSERT_EQ(3U, fields2.size()); |
1974 | 2008 |
1975 expected.name = ASCIIToUTF16("firstname"); | 2009 expected.name = ASCIIToUTF16("firstname"); |
1976 expected.value = ASCIIToUTF16("Brother"); | 2010 expected.value = ASCIIToUTF16("Brother"); |
1977 EXPECT_FORM_FIELD_EQUALS(expected, fields[0]); | 2011 EXPECT_FORM_FIELD_EQUALS(expected, fields[0]); |
1978 | 2012 |
1979 expected.name = ASCIIToUTF16("lastname"); | 2013 expected.name = ASCIIToUTF16("lastname"); |
1980 expected.value = ASCIIToUTF16("Jonathan"); | 2014 expected.value = ASCIIToUTF16("Jonathan"); |
1981 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); | 2015 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); |
1982 | 2016 |
1983 expected.name = ASCIIToUTF16("email"); | 2017 expected.name = ASCIIToUTF16("email"); |
1984 expected.value = ASCIIToUTF16("brotherj@example.com"); | 2018 expected.value = ASCIIToUTF16("brotherj@example.com"); |
1985 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); | 2019 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); |
1986 } | 2020 } |
1987 | 2021 |
1988 TEST_F(FormManagerTest, FillFormEmptyName) { | 2022 TEST_F(FormAutofillTest, FillFormEmptyName) { |
1989 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 2023 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
1990 " <INPUT type=\"text\" id=\"firstname\"/>" | 2024 " <INPUT type=\"text\" id=\"firstname\"/>" |
1991 " <INPUT type=\"text\" id=\"lastname\"/>" | 2025 " <INPUT type=\"text\" id=\"lastname\"/>" |
1992 " <INPUT type=\"text\" id=\"email\"/>" | 2026 " <INPUT type=\"text\" id=\"email\"/>" |
1993 " <INPUT type=\"submit\" value=\"Send\"/>" | 2027 " <INPUT type=\"submit\" value=\"Send\"/>" |
1994 "</FORM>"); | 2028 "</FORM>"); |
1995 | 2029 |
1996 WebFrame* web_frame = GetMainFrame(); | 2030 WebFrame* web_frame = GetMainFrame(); |
1997 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | 2031 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
1998 | 2032 |
1999 FormCache form_cache; | 2033 FormCache form_cache; |
2000 std::vector<FormData> forms; | 2034 std::vector<FormData> forms; |
2001 form_cache.ExtractForms(*web_frame, &forms); | 2035 form_cache.ExtractForms(*web_frame, &forms); |
2002 ASSERT_EQ(1U, forms.size()); | 2036 ASSERT_EQ(1U, forms.size()); |
2003 | 2037 |
2004 // Get the input element we want to find. | 2038 // Get the input element we want to find. |
2005 WebElement element = web_frame->document().getElementById("firstname"); | 2039 WebElement element = web_frame->document().getElementById("firstname"); |
2006 WebInputElement input_element = element.to<WebInputElement>(); | 2040 WebInputElement input_element = element.to<WebInputElement>(); |
2007 | 2041 |
2008 // Find the form that contains the input element. | 2042 // Find the form that contains the input element. |
2009 FormData form; | 2043 FormData form; |
2010 FormField field; | 2044 FormField field; |
2011 EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element, &form, | 2045 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, |
2012 &field)); | 2046 autofill::REQUIRE_NONE)); |
2013 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | 2047 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
2014 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); | 2048 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); |
2015 EXPECT_EQ(GURL("http://buh.com"), form.action); | 2049 EXPECT_EQ(GURL("http://buh.com"), form.action); |
2016 | 2050 |
2017 const std::vector<FormField>& fields = form.fields; | 2051 const std::vector<FormField>& fields = form.fields; |
2018 ASSERT_EQ(3U, fields.size()); | 2052 ASSERT_EQ(3U, fields.size()); |
2019 | 2053 |
2020 FormField expected; | 2054 FormField expected; |
2021 expected.form_control_type = ASCIIToUTF16("text"); | 2055 expected.form_control_type = ASCIIToUTF16("text"); |
2022 expected.max_length = WebInputElement::defaultMaxLength(); | 2056 expected.max_length = WebInputElement::defaultMaxLength(); |
2023 | 2057 |
2024 expected.name = ASCIIToUTF16("firstname"); | 2058 expected.name = ASCIIToUTF16("firstname"); |
2025 EXPECT_FORM_FIELD_EQUALS(expected, fields[0]); | 2059 EXPECT_FORM_FIELD_EQUALS(expected, fields[0]); |
2026 | 2060 |
2027 expected.name = ASCIIToUTF16("lastname"); | 2061 expected.name = ASCIIToUTF16("lastname"); |
2028 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); | 2062 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); |
2029 | 2063 |
2030 expected.name = ASCIIToUTF16("email"); | 2064 expected.name = ASCIIToUTF16("email"); |
2031 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); | 2065 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); |
2032 | 2066 |
2033 // Fill the form. | 2067 // Fill the form. |
2034 form.fields[0].value = ASCIIToUTF16("Wyatt"); | 2068 form.fields[0].value = ASCIIToUTF16("Wyatt"); |
2035 form.fields[1].value = ASCIIToUTF16("Earp"); | 2069 form.fields[1].value = ASCIIToUTF16("Earp"); |
2036 form.fields[2].value = ASCIIToUTF16("wyatt@example.com"); | 2070 form.fields[2].value = ASCIIToUTF16("wyatt@example.com"); |
2037 FillForm(form, input_element); | 2071 FillForm(form, input_element); |
2038 | 2072 |
2039 // Find the newly-filled form that contains the input element. | 2073 // Find the newly-filled form that contains the input element. |
2040 FormData form2; | 2074 FormData form2; |
2041 FormField field2; | 2075 FormField field2; |
2042 EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element, &form2, | 2076 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2, |
2043 &field2)); | 2077 autofill::REQUIRE_NONE)); |
2044 | 2078 |
2045 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); | 2079 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
2046 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); | 2080 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); |
2047 EXPECT_EQ(GURL("http://buh.com"), form2.action); | 2081 EXPECT_EQ(GURL("http://buh.com"), form2.action); |
2048 | 2082 |
2049 const std::vector<FormField>& fields2 = form2.fields; | 2083 const std::vector<FormField>& fields2 = form2.fields; |
2050 ASSERT_EQ(3U, fields2.size()); | 2084 ASSERT_EQ(3U, fields2.size()); |
2051 | 2085 |
2052 expected.form_control_type = ASCIIToUTF16("text"); | 2086 expected.form_control_type = ASCIIToUTF16("text"); |
2053 expected.max_length = WebInputElement::defaultMaxLength(); | 2087 expected.max_length = WebInputElement::defaultMaxLength(); |
2054 | 2088 |
2055 expected.name = ASCIIToUTF16("firstname"); | 2089 expected.name = ASCIIToUTF16("firstname"); |
2056 expected.value = ASCIIToUTF16("Wyatt"); | 2090 expected.value = ASCIIToUTF16("Wyatt"); |
2057 EXPECT_FORM_FIELD_EQUALS(expected, fields[0]); | 2091 EXPECT_FORM_FIELD_EQUALS(expected, fields[0]); |
2058 | 2092 |
2059 expected.name = ASCIIToUTF16("lastname"); | 2093 expected.name = ASCIIToUTF16("lastname"); |
2060 expected.value = ASCIIToUTF16("Earp"); | 2094 expected.value = ASCIIToUTF16("Earp"); |
2061 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); | 2095 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); |
2062 | 2096 |
2063 expected.name = ASCIIToUTF16("email"); | 2097 expected.name = ASCIIToUTF16("email"); |
2064 expected.value = ASCIIToUTF16("wyatt@example.com"); | 2098 expected.value = ASCIIToUTF16("wyatt@example.com"); |
2065 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); | 2099 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); |
2066 } | 2100 } |
2067 | 2101 |
2068 TEST_F(FormManagerTest, FillFormEmptyFormNames) { | 2102 TEST_F(FormAutofillTest, FillFormEmptyFormNames) { |
2069 LoadHTML("<FORM action=\"http://buh.com\" method=\"post\">" | 2103 LoadHTML("<FORM action=\"http://buh.com\" method=\"post\">" |
2070 " <INPUT type=\"text\" id=\"firstname\"/>" | 2104 " <INPUT type=\"text\" id=\"firstname\"/>" |
2071 " <INPUT type=\"text\" id=\"middlename\"/>" | 2105 " <INPUT type=\"text\" id=\"middlename\"/>" |
2072 " <INPUT type=\"text\" id=\"lastname\"/>" | 2106 " <INPUT type=\"text\" id=\"lastname\"/>" |
2073 " <INPUT type=\"submit\" value=\"Send\"/>" | 2107 " <INPUT type=\"submit\" value=\"Send\"/>" |
2074 "</FORM>" | 2108 "</FORM>" |
2075 "<FORM action=\"http://abc.com\" method=\"post\">" | 2109 "<FORM action=\"http://abc.com\" method=\"post\">" |
2076 " <INPUT type=\"text\" id=\"apple\"/>" | 2110 " <INPUT type=\"text\" id=\"apple\"/>" |
2077 " <INPUT type=\"text\" id=\"banana\"/>" | 2111 " <INPUT type=\"text\" id=\"banana\"/>" |
2078 " <INPUT type=\"text\" id=\"cantelope\"/>" | 2112 " <INPUT type=\"text\" id=\"cantelope\"/>" |
2079 " <INPUT type=\"submit\" value=\"Send\"/>" | 2113 " <INPUT type=\"submit\" value=\"Send\"/>" |
2080 "</FORM>"); | 2114 "</FORM>"); |
2081 | 2115 |
2082 WebFrame* web_frame = GetMainFrame(); | 2116 WebFrame* web_frame = GetMainFrame(); |
2083 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | 2117 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
2084 | 2118 |
2085 FormCache form_cache; | 2119 FormCache form_cache; |
2086 std::vector<FormData> forms; | 2120 std::vector<FormData> forms; |
2087 form_cache.ExtractForms(*web_frame, &forms); | 2121 form_cache.ExtractForms(*web_frame, &forms); |
2088 ASSERT_EQ(2U, forms.size()); | 2122 ASSERT_EQ(2U, forms.size()); |
2089 | 2123 |
2090 // Get the input element we want to find. | 2124 // Get the input element we want to find. |
2091 WebElement element = web_frame->document().getElementById("apple"); | 2125 WebElement element = web_frame->document().getElementById("apple"); |
2092 WebInputElement input_element = element.to<WebInputElement>(); | 2126 WebInputElement input_element = element.to<WebInputElement>(); |
2093 | 2127 |
2094 // Find the form that contains the input element. | 2128 // Find the form that contains the input element. |
2095 FormData form; | 2129 FormData form; |
2096 FormField field; | 2130 FormField field; |
2097 EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element, &form, | 2131 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, |
2098 &field)); | 2132 autofill::REQUIRE_NONE)); |
2099 EXPECT_EQ(string16(), form.name); | 2133 EXPECT_EQ(string16(), form.name); |
2100 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); | 2134 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); |
2101 EXPECT_EQ(GURL("http://abc.com"), form.action); | 2135 EXPECT_EQ(GURL("http://abc.com"), form.action); |
2102 | 2136 |
2103 const std::vector<FormField>& fields = form.fields; | 2137 const std::vector<FormField>& fields = form.fields; |
2104 ASSERT_EQ(3U, fields.size()); | 2138 ASSERT_EQ(3U, fields.size()); |
2105 | 2139 |
2106 FormField expected; | 2140 FormField expected; |
2107 expected.form_control_type = ASCIIToUTF16("text"); | 2141 expected.form_control_type = ASCIIToUTF16("text"); |
2108 expected.max_length = WebInputElement::defaultMaxLength(); | 2142 expected.max_length = WebInputElement::defaultMaxLength(); |
(...skipping 12 matching lines...) Expand all Loading... |
2121 | 2155 |
2122 // Fill the form. | 2156 // Fill the form. |
2123 form.fields[0].value = ASCIIToUTF16("Red"); | 2157 form.fields[0].value = ASCIIToUTF16("Red"); |
2124 form.fields[1].value = ASCIIToUTF16("Yellow"); | 2158 form.fields[1].value = ASCIIToUTF16("Yellow"); |
2125 form.fields[2].value = ASCIIToUTF16("Also Yellow"); | 2159 form.fields[2].value = ASCIIToUTF16("Also Yellow"); |
2126 FillForm(form, input_element); | 2160 FillForm(form, input_element); |
2127 | 2161 |
2128 // Find the newly-filled form that contains the input element. | 2162 // Find the newly-filled form that contains the input element. |
2129 FormData form2; | 2163 FormData form2; |
2130 FormField field2; | 2164 FormField field2; |
2131 EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element, &form2, | 2165 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2, |
2132 &field2)); | 2166 autofill::REQUIRE_NONE)); |
2133 | 2167 |
2134 EXPECT_EQ(string16(), form2.name); | 2168 EXPECT_EQ(string16(), form2.name); |
2135 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); | 2169 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); |
2136 EXPECT_EQ(GURL("http://abc.com"), form2.action); | 2170 EXPECT_EQ(GURL("http://abc.com"), form2.action); |
2137 | 2171 |
2138 const std::vector<FormField>& fields2 = form2.fields; | 2172 const std::vector<FormField>& fields2 = form2.fields; |
2139 ASSERT_EQ(3U, fields2.size()); | 2173 ASSERT_EQ(3U, fields2.size()); |
2140 | 2174 |
2141 expected.name = ASCIIToUTF16("apple"); | 2175 expected.name = ASCIIToUTF16("apple"); |
2142 expected.value = ASCIIToUTF16("Red"); | 2176 expected.value = ASCIIToUTF16("Red"); |
2143 expected.is_autofilled = true; | 2177 expected.is_autofilled = true; |
2144 EXPECT_FORM_FIELD_EQUALS(expected, fields2[0]); | 2178 EXPECT_FORM_FIELD_EQUALS(expected, fields2[0]); |
2145 | 2179 |
2146 expected.name = ASCIIToUTF16("banana"); | 2180 expected.name = ASCIIToUTF16("banana"); |
2147 expected.value = ASCIIToUTF16("Yellow"); | 2181 expected.value = ASCIIToUTF16("Yellow"); |
2148 expected.is_autofilled = true; | 2182 expected.is_autofilled = true; |
2149 EXPECT_FORM_FIELD_EQUALS(expected, fields2[1]); | 2183 EXPECT_FORM_FIELD_EQUALS(expected, fields2[1]); |
2150 | 2184 |
2151 expected.name = ASCIIToUTF16("cantelope"); | 2185 expected.name = ASCIIToUTF16("cantelope"); |
2152 expected.value = ASCIIToUTF16("Also Yellow"); | 2186 expected.value = ASCIIToUTF16("Also Yellow"); |
2153 expected.is_autofilled = true; | 2187 expected.is_autofilled = true; |
2154 EXPECT_FORM_FIELD_EQUALS(expected, fields2[2]); | 2188 EXPECT_FORM_FIELD_EQUALS(expected, fields2[2]); |
2155 } | 2189 } |
2156 | 2190 |
2157 TEST_F(FormManagerTest, ThreePartPhone) { | 2191 TEST_F(FormAutofillTest, ThreePartPhone) { |
2158 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 2192 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
2159 " Phone:" | 2193 " Phone:" |
2160 " <input type=\"text\" name=\"dayphone1\">" | 2194 " <input type=\"text\" name=\"dayphone1\">" |
2161 " -" | 2195 " -" |
2162 " <input type=\"text\" name=\"dayphone2\">" | 2196 " <input type=\"text\" name=\"dayphone2\">" |
2163 " -" | 2197 " -" |
2164 " <input type=\"text\" name=\"dayphone3\">" | 2198 " <input type=\"text\" name=\"dayphone3\">" |
2165 " ext.:" | 2199 " ext.:" |
2166 " <input type=\"text\" name=\"dayphone4\">" | 2200 " <input type=\"text\" name=\"dayphone4\">" |
2167 " <input type=\"submit\" name=\"reply-send\" value=\"Send\">" | 2201 " <input type=\"submit\" name=\"reply-send\" value=\"Send\">" |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2204 expected.label = ASCIIToUTF16("-"); | 2238 expected.label = ASCIIToUTF16("-"); |
2205 expected.name = ASCIIToUTF16("dayphone3"); | 2239 expected.name = ASCIIToUTF16("dayphone3"); |
2206 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); | 2240 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); |
2207 | 2241 |
2208 expected.label = ASCIIToUTF16("ext.:"); | 2242 expected.label = ASCIIToUTF16("ext.:"); |
2209 expected.name = ASCIIToUTF16("dayphone4"); | 2243 expected.name = ASCIIToUTF16("dayphone4"); |
2210 EXPECT_FORM_FIELD_EQUALS(expected, fields[3]); | 2244 EXPECT_FORM_FIELD_EQUALS(expected, fields[3]); |
2211 } | 2245 } |
2212 | 2246 |
2213 | 2247 |
2214 TEST_F(FormManagerTest, MaxLengthFields) { | 2248 TEST_F(FormAutofillTest, MaxLengthFields) { |
2215 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 2249 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
2216 " Phone:" | 2250 " Phone:" |
2217 " <input type=\"text\" maxlength=\"3\" name=\"dayphone1\">" | 2251 " <input type=\"text\" maxlength=\"3\" name=\"dayphone1\">" |
2218 " -" | 2252 " -" |
2219 " <input type=\"text\" maxlength=\"3\" name=\"dayphone2\">" | 2253 " <input type=\"text\" maxlength=\"3\" name=\"dayphone2\">" |
2220 " -" | 2254 " -" |
2221 " <input type=\"text\" maxlength=\"4\" size=\"5\"" | 2255 " <input type=\"text\" maxlength=\"4\" size=\"5\"" |
2222 " name=\"dayphone3\">" | 2256 " name=\"dayphone3\">" |
2223 " ext.:" | 2257 " ext.:" |
2224 " <input type=\"text\" maxlength=\"5\" name=\"dayphone4\">" | 2258 " <input type=\"text\" maxlength=\"5\" name=\"dayphone4\">" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2280 // When invalid |size|, default is returned. | 2314 // When invalid |size|, default is returned. |
2281 expected.label = string16(); | 2315 expected.label = string16(); |
2282 expected.name = ASCIIToUTF16("invalid1"); | 2316 expected.name = ASCIIToUTF16("invalid1"); |
2283 expected.max_length = WebInputElement::defaultMaxLength(); | 2317 expected.max_length = WebInputElement::defaultMaxLength(); |
2284 EXPECT_FORM_FIELD_EQUALS(expected, fields[5]); | 2318 EXPECT_FORM_FIELD_EQUALS(expected, fields[5]); |
2285 } | 2319 } |
2286 | 2320 |
2287 // This test re-creates the experience of typing in a field then selecting a | 2321 // This test re-creates the experience of typing in a field then selecting a |
2288 // profile from the Autofill suggestions popup. The field that is being typed | 2322 // profile from the Autofill suggestions popup. The field that is being typed |
2289 // into should be filled even though it's not technically empty. | 2323 // into should be filled even though it's not technically empty. |
2290 TEST_F(FormManagerTest, FillFormNonEmptyField) { | 2324 TEST_F(FormAutofillTest, FillFormNonEmptyField) { |
2291 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 2325 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
2292 " <INPUT type=\"text\" id=\"firstname\"/>" | 2326 " <INPUT type=\"text\" id=\"firstname\"/>" |
2293 " <INPUT type=\"text\" id=\"lastname\"/>" | 2327 " <INPUT type=\"text\" id=\"lastname\"/>" |
2294 " <INPUT type=\"text\" id=\"email\"/>" | 2328 " <INPUT type=\"text\" id=\"email\"/>" |
2295 " <INPUT type=\"submit\" value=\"Send\"/>" | 2329 " <INPUT type=\"submit\" value=\"Send\"/>" |
2296 "</FORM>"); | 2330 "</FORM>"); |
2297 | 2331 |
2298 WebFrame* web_frame = GetMainFrame(); | 2332 WebFrame* web_frame = GetMainFrame(); |
2299 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | 2333 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
2300 | 2334 |
2301 FormCache form_cache; | 2335 FormCache form_cache; |
2302 std::vector<FormData> forms; | 2336 std::vector<FormData> forms; |
2303 form_cache.ExtractForms(*web_frame, &forms); | 2337 form_cache.ExtractForms(*web_frame, &forms); |
2304 ASSERT_EQ(1U, forms.size()); | 2338 ASSERT_EQ(1U, forms.size()); |
2305 | 2339 |
2306 // Get the input element we want to find. | 2340 // Get the input element we want to find. |
2307 WebElement element = web_frame->document().getElementById("firstname"); | 2341 WebElement element = web_frame->document().getElementById("firstname"); |
2308 WebInputElement input_element = element.to<WebInputElement>(); | 2342 WebInputElement input_element = element.to<WebInputElement>(); |
2309 | 2343 |
2310 // Simulate typing by modifying the field value. | 2344 // Simulate typing by modifying the field value. |
2311 input_element.setValue(ASCIIToUTF16("Wy")); | 2345 input_element.setValue(ASCIIToUTF16("Wy")); |
2312 | 2346 |
2313 // Find the form that contains the input element. | 2347 // Find the form that contains the input element. |
2314 FormData form; | 2348 FormData form; |
2315 FormField field; | 2349 FormField field; |
2316 EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element, &form, | 2350 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, |
2317 &field)); | 2351 autofill::REQUIRE_NONE)); |
2318 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | 2352 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
2319 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); | 2353 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); |
2320 EXPECT_EQ(GURL("http://buh.com"), form.action); | 2354 EXPECT_EQ(GURL("http://buh.com"), form.action); |
2321 | 2355 |
2322 const std::vector<FormField>& fields = form.fields; | 2356 const std::vector<FormField>& fields = form.fields; |
2323 ASSERT_EQ(3U, fields.size()); | 2357 ASSERT_EQ(3U, fields.size()); |
2324 | 2358 |
2325 FormField expected; | 2359 FormField expected; |
2326 expected.form_control_type = ASCIIToUTF16("text"); | 2360 expected.form_control_type = ASCIIToUTF16("text"); |
2327 expected.max_length = WebInputElement::defaultMaxLength(); | 2361 expected.max_length = WebInputElement::defaultMaxLength(); |
(...skipping 20 matching lines...) Expand all Loading... |
2348 PreviewForm(form, input_element); | 2382 PreviewForm(form, input_element); |
2349 EXPECT_EQ(2, input_element.selectionStart()); | 2383 EXPECT_EQ(2, input_element.selectionStart()); |
2350 EXPECT_EQ(5, input_element.selectionEnd()); | 2384 EXPECT_EQ(5, input_element.selectionEnd()); |
2351 | 2385 |
2352 // Fill the form. | 2386 // Fill the form. |
2353 FillForm(form, input_element); | 2387 FillForm(form, input_element); |
2354 | 2388 |
2355 // Find the newly-filled form that contains the input element. | 2389 // Find the newly-filled form that contains the input element. |
2356 FormData form2; | 2390 FormData form2; |
2357 FormField field2; | 2391 FormField field2; |
2358 EXPECT_TRUE(FindFormAndFieldForFormControlElement(input_element, &form2, | 2392 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2, |
2359 &field2)); | 2393 autofill::REQUIRE_NONE)); |
2360 | 2394 |
2361 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); | 2395 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
2362 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); | 2396 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); |
2363 EXPECT_EQ(GURL("http://buh.com"), form2.action); | 2397 EXPECT_EQ(GURL("http://buh.com"), form2.action); |
2364 | 2398 |
2365 const std::vector<FormField>& fields2 = form2.fields; | 2399 const std::vector<FormField>& fields2 = form2.fields; |
2366 ASSERT_EQ(3U, fields2.size()); | 2400 ASSERT_EQ(3U, fields2.size()); |
2367 | 2401 |
2368 expected.name = ASCIIToUTF16("firstname"); | 2402 expected.name = ASCIIToUTF16("firstname"); |
2369 expected.value = ASCIIToUTF16("Wyatt"); | 2403 expected.value = ASCIIToUTF16("Wyatt"); |
2370 expected.is_autofilled = true; | 2404 expected.is_autofilled = true; |
2371 EXPECT_FORM_FIELD_EQUALS(expected, fields2[0]); | 2405 EXPECT_FORM_FIELD_EQUALS(expected, fields2[0]); |
2372 | 2406 |
2373 expected.name = ASCIIToUTF16("lastname"); | 2407 expected.name = ASCIIToUTF16("lastname"); |
2374 expected.value = ASCIIToUTF16("Earp"); | 2408 expected.value = ASCIIToUTF16("Earp"); |
2375 expected.is_autofilled = true; | 2409 expected.is_autofilled = true; |
2376 EXPECT_FORM_FIELD_EQUALS(expected, fields2[1]); | 2410 EXPECT_FORM_FIELD_EQUALS(expected, fields2[1]); |
2377 | 2411 |
2378 expected.name = ASCIIToUTF16("email"); | 2412 expected.name = ASCIIToUTF16("email"); |
2379 expected.value = ASCIIToUTF16("wyatt@example.com"); | 2413 expected.value = ASCIIToUTF16("wyatt@example.com"); |
2380 expected.is_autofilled = true; | 2414 expected.is_autofilled = true; |
2381 EXPECT_FORM_FIELD_EQUALS(expected, fields2[2]); | 2415 EXPECT_FORM_FIELD_EQUALS(expected, fields2[2]); |
2382 | 2416 |
2383 // Verify that the cursor position has been updated. | 2417 // Verify that the cursor position has been updated. |
2384 EXPECT_EQ(5, input_element.selectionStart()); | 2418 EXPECT_EQ(5, input_element.selectionStart()); |
2385 EXPECT_EQ(5, input_element.selectionEnd()); | 2419 EXPECT_EQ(5, input_element.selectionEnd()); |
2386 } | 2420 } |
2387 | 2421 |
2388 TEST_F(FormManagerTest, ClearFormWithNode) { | 2422 TEST_F(FormAutofillTest, ClearFormWithNode) { |
2389 LoadHTML( | 2423 LoadHTML( |
2390 "<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 2424 "<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
2391 " <INPUT type=\"text\" id=\"firstname\" value=\"Wyatt\"/>" | 2425 " <INPUT type=\"text\" id=\"firstname\" value=\"Wyatt\"/>" |
2392 " <INPUT type=\"text\" id=\"lastname\" value=\"Earp\"/>" | 2426 " <INPUT type=\"text\" id=\"lastname\" value=\"Earp\"/>" |
2393 " <INPUT type=\"text\" autocomplete=\"off\" id=\"noAC\" value=\"one\"/>" | 2427 " <INPUT type=\"text\" autocomplete=\"off\" id=\"noAC\" value=\"one\"/>" |
2394 " <INPUT type=\"text\" id=\"notenabled\" disabled=\"disabled\">" | 2428 " <INPUT type=\"text\" id=\"notenabled\" disabled=\"disabled\">" |
2395 " <INPUT type=\"submit\" value=\"Send\"/>" | 2429 " <INPUT type=\"submit\" value=\"Send\"/>" |
2396 "</FORM>"); | 2430 "</FORM>"); |
2397 | 2431 |
2398 WebFrame* web_frame = GetMainFrame(); | 2432 WebFrame* web_frame = GetMainFrame(); |
(...skipping 16 matching lines...) Expand all Loading... |
2415 | 2449 |
2416 // Clear the form. | 2450 // Clear the form. |
2417 EXPECT_TRUE(form_cache.ClearFormWithElement(firstname)); | 2451 EXPECT_TRUE(form_cache.ClearFormWithElement(firstname)); |
2418 | 2452 |
2419 // Verify that the auto-filled attribute has been turned off. | 2453 // Verify that the auto-filled attribute has been turned off. |
2420 EXPECT_FALSE(firstname.isAutofilled()); | 2454 EXPECT_FALSE(firstname.isAutofilled()); |
2421 | 2455 |
2422 // Verify the form is cleared. | 2456 // Verify the form is cleared. |
2423 FormData form2; | 2457 FormData form2; |
2424 FormField field2; | 2458 FormField field2; |
2425 EXPECT_TRUE(FindFormAndFieldForFormControlElement(firstname, &form2, | 2459 EXPECT_TRUE(FindFormAndFieldForInputElement(firstname, &form2, &field2, |
2426 &field2)); | 2460 autofill::REQUIRE_NONE)); |
2427 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); | 2461 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
2428 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); | 2462 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); |
2429 EXPECT_EQ(GURL("http://buh.com"), form2.action); | 2463 EXPECT_EQ(GURL("http://buh.com"), form2.action); |
2430 | 2464 |
2431 const std::vector<FormField>& fields2 = form2.fields; | 2465 const std::vector<FormField>& fields2 = form2.fields; |
2432 ASSERT_EQ(4U, fields2.size()); | 2466 ASSERT_EQ(4U, fields2.size()); |
2433 | 2467 |
2434 FormField expected; | 2468 FormField expected; |
2435 expected.form_control_type = ASCIIToUTF16("text"); | 2469 expected.form_control_type = ASCIIToUTF16("text"); |
2436 expected.max_length = WebInputElement::defaultMaxLength(); | 2470 expected.max_length = WebInputElement::defaultMaxLength(); |
(...skipping 12 matching lines...) Expand all Loading... |
2449 | 2483 |
2450 expected.name = ASCIIToUTF16("notenabled"); | 2484 expected.name = ASCIIToUTF16("notenabled"); |
2451 expected.value = ASCIIToUTF16("no clear"); | 2485 expected.value = ASCIIToUTF16("no clear"); |
2452 EXPECT_FORM_FIELD_EQUALS(expected, fields2[3]); | 2486 EXPECT_FORM_FIELD_EQUALS(expected, fields2[3]); |
2453 | 2487 |
2454 // Verify that the cursor position has been updated. | 2488 // Verify that the cursor position has been updated. |
2455 EXPECT_EQ(0, firstname.selectionStart()); | 2489 EXPECT_EQ(0, firstname.selectionStart()); |
2456 EXPECT_EQ(0, firstname.selectionEnd()); | 2490 EXPECT_EQ(0, firstname.selectionEnd()); |
2457 } | 2491 } |
2458 | 2492 |
2459 TEST_F(FormManagerTest, ClearFormWithNodeContainingSelectOne) { | 2493 TEST_F(FormAutofillTest, ClearFormWithNodeContainingSelectOne) { |
2460 LoadHTML( | 2494 LoadHTML( |
2461 "<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 2495 "<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
2462 " <INPUT type=\"text\" id=\"firstname\" value=\"Wyatt\"/>" | 2496 " <INPUT type=\"text\" id=\"firstname\" value=\"Wyatt\"/>" |
2463 " <INPUT type=\"text\" id=\"lastname\" value=\"Earp\"/>" | 2497 " <INPUT type=\"text\" id=\"lastname\" value=\"Earp\"/>" |
2464 " <SELECT id=\"state\" name=\"state\">" | 2498 " <SELECT id=\"state\" name=\"state\">" |
2465 " <OPTION selected>?</OPTION>" | 2499 " <OPTION selected>?</OPTION>" |
2466 " <OPTION>AA</OPTION>" | 2500 " <OPTION>AA</OPTION>" |
2467 " <OPTION>AE</OPTION>" | 2501 " <OPTION>AE</OPTION>" |
2468 " <OPTION>AK</OPTION>" | 2502 " <OPTION>AK</OPTION>" |
2469 " </SELECT>" | 2503 " </SELECT>" |
(...skipping 20 matching lines...) Expand all Loading... |
2490 | 2524 |
2491 // Clear the form. | 2525 // Clear the form. |
2492 EXPECT_TRUE(form_cache.ClearFormWithElement(firstname)); | 2526 EXPECT_TRUE(form_cache.ClearFormWithElement(firstname)); |
2493 | 2527 |
2494 // Verify that the auto-filled attribute has been turned off. | 2528 // Verify that the auto-filled attribute has been turned off. |
2495 EXPECT_FALSE(firstname.isAutofilled()); | 2529 EXPECT_FALSE(firstname.isAutofilled()); |
2496 | 2530 |
2497 // Verify the form is cleared. | 2531 // Verify the form is cleared. |
2498 FormData form2; | 2532 FormData form2; |
2499 FormField field2; | 2533 FormField field2; |
2500 EXPECT_TRUE(FindFormAndFieldForFormControlElement(firstname, &form2, | 2534 EXPECT_TRUE(FindFormAndFieldForInputElement(firstname, &form2, &field2, |
2501 &field2)); | 2535 autofill::REQUIRE_NONE)); |
2502 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); | 2536 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
2503 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); | 2537 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); |
2504 EXPECT_EQ(GURL("http://buh.com"), form2.action); | 2538 EXPECT_EQ(GURL("http://buh.com"), form2.action); |
2505 | 2539 |
2506 const std::vector<FormField>& fields2 = form2.fields; | 2540 const std::vector<FormField>& fields2 = form2.fields; |
2507 ASSERT_EQ(3U, fields2.size()); | 2541 ASSERT_EQ(3U, fields2.size()); |
2508 | 2542 |
2509 FormField expected; | 2543 FormField expected; |
2510 | 2544 |
2511 expected.name = ASCIIToUTF16("firstname"); | 2545 expected.name = ASCIIToUTF16("firstname"); |
(...skipping 12 matching lines...) Expand all Loading... |
2524 expected.value = ASCIIToUTF16("?"); | 2558 expected.value = ASCIIToUTF16("?"); |
2525 expected.form_control_type = ASCIIToUTF16("select-one"); | 2559 expected.form_control_type = ASCIIToUTF16("select-one"); |
2526 expected.max_length = 0; | 2560 expected.max_length = 0; |
2527 EXPECT_FORM_FIELD_EQUALS(expected, fields2[2]); | 2561 EXPECT_FORM_FIELD_EQUALS(expected, fields2[2]); |
2528 | 2562 |
2529 // Verify that the cursor position has been updated. | 2563 // Verify that the cursor position has been updated. |
2530 EXPECT_EQ(0, firstname.selectionStart()); | 2564 EXPECT_EQ(0, firstname.selectionStart()); |
2531 EXPECT_EQ(0, firstname.selectionEnd()); | 2565 EXPECT_EQ(0, firstname.selectionEnd()); |
2532 } | 2566 } |
2533 | 2567 |
2534 TEST_F(FormManagerTest, ClearPreviewedFormWithElement) { | 2568 TEST_F(FormAutofillTest, ClearPreviewedFormWithElement) { |
2535 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 2569 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
2536 " <INPUT type=\"text\" id=\"firstname\" value=\"Wyatt\"/>" | 2570 " <INPUT type=\"text\" id=\"firstname\" value=\"Wyatt\"/>" |
2537 " <INPUT type=\"text\" id=\"lastname\"/>" | 2571 " <INPUT type=\"text\" id=\"lastname\"/>" |
2538 " <INPUT type=\"text\" id=\"email\"/>" | 2572 " <INPUT type=\"text\" id=\"email\"/>" |
2539 " <INPUT type=\"email\" id=\"email2\"/>" | 2573 " <INPUT type=\"email\" id=\"email2\"/>" |
2540 " <INPUT type=\"tel\" id=\"phone\"/>" | 2574 " <INPUT type=\"tel\" id=\"phone\"/>" |
2541 " <INPUT type=\"submit\" value=\"Send\"/>" | 2575 " <INPUT type=\"submit\" value=\"Send\"/>" |
2542 "</FORM>"); | 2576 "</FORM>"); |
2543 | 2577 |
2544 WebFrame* web_frame = GetMainFrame(); | 2578 WebFrame* web_frame = GetMainFrame(); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2592 EXPECT_FALSE(email2.isAutofilled()); | 2626 EXPECT_FALSE(email2.isAutofilled()); |
2593 EXPECT_TRUE(phone.value().isEmpty()); | 2627 EXPECT_TRUE(phone.value().isEmpty()); |
2594 EXPECT_TRUE(phone.suggestedValue().isEmpty()); | 2628 EXPECT_TRUE(phone.suggestedValue().isEmpty()); |
2595 EXPECT_FALSE(phone.isAutofilled()); | 2629 EXPECT_FALSE(phone.isAutofilled()); |
2596 | 2630 |
2597 // Verify that the cursor position has been updated. | 2631 // Verify that the cursor position has been updated. |
2598 EXPECT_EQ(0, lastname.selectionStart()); | 2632 EXPECT_EQ(0, lastname.selectionStart()); |
2599 EXPECT_EQ(0, lastname.selectionEnd()); | 2633 EXPECT_EQ(0, lastname.selectionEnd()); |
2600 } | 2634 } |
2601 | 2635 |
2602 TEST_F(FormManagerTest, ClearPreviewedFormWithNonEmptyInitiatingNode) { | 2636 TEST_F(FormAutofillTest, ClearPreviewedFormWithNonEmptyInitiatingNode) { |
2603 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 2637 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
2604 " <INPUT type=\"text\" id=\"firstname\" value=\"W\"/>" | 2638 " <INPUT type=\"text\" id=\"firstname\" value=\"W\"/>" |
2605 " <INPUT type=\"text\" id=\"lastname\"/>" | 2639 " <INPUT type=\"text\" id=\"lastname\"/>" |
2606 " <INPUT type=\"text\" id=\"email\"/>" | 2640 " <INPUT type=\"text\" id=\"email\"/>" |
2607 " <INPUT type=\"email\" id=\"email2\"/>" | 2641 " <INPUT type=\"email\" id=\"email2\"/>" |
2608 " <INPUT type=\"tel\" id=\"phone\"/>" | 2642 " <INPUT type=\"tel\" id=\"phone\"/>" |
2609 " <INPUT type=\"submit\" value=\"Send\"/>" | 2643 " <INPUT type=\"submit\" value=\"Send\"/>" |
2610 "</FORM>"); | 2644 "</FORM>"); |
2611 | 2645 |
2612 WebFrame* web_frame = GetMainFrame(); | 2646 WebFrame* web_frame = GetMainFrame(); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2660 EXPECT_TRUE(email.suggestedValue().isEmpty()); | 2694 EXPECT_TRUE(email.suggestedValue().isEmpty()); |
2661 EXPECT_FALSE(email.isAutofilled()); | 2695 EXPECT_FALSE(email.isAutofilled()); |
2662 EXPECT_TRUE(email2.value().isEmpty()); | 2696 EXPECT_TRUE(email2.value().isEmpty()); |
2663 EXPECT_TRUE(email2.suggestedValue().isEmpty()); | 2697 EXPECT_TRUE(email2.suggestedValue().isEmpty()); |
2664 EXPECT_FALSE(email2.isAutofilled()); | 2698 EXPECT_FALSE(email2.isAutofilled()); |
2665 EXPECT_TRUE(phone.value().isEmpty()); | 2699 EXPECT_TRUE(phone.value().isEmpty()); |
2666 EXPECT_TRUE(phone.suggestedValue().isEmpty()); | 2700 EXPECT_TRUE(phone.suggestedValue().isEmpty()); |
2667 EXPECT_FALSE(phone.isAutofilled()); | 2701 EXPECT_FALSE(phone.isAutofilled()); |
2668 } | 2702 } |
2669 | 2703 |
2670 TEST_F(FormManagerTest, ClearPreviewedFormWithAutofilledInitiatingNode) { | 2704 TEST_F(FormAutofillTest, ClearPreviewedFormWithAutofilledInitiatingNode) { |
2671 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 2705 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
2672 " <INPUT type=\"text\" id=\"firstname\" value=\"W\"/>" | 2706 " <INPUT type=\"text\" id=\"firstname\" value=\"W\"/>" |
2673 " <INPUT type=\"text\" id=\"lastname\"/>" | 2707 " <INPUT type=\"text\" id=\"lastname\"/>" |
2674 " <INPUT type=\"text\" id=\"email\"/>" | 2708 " <INPUT type=\"text\" id=\"email\"/>" |
2675 " <INPUT type=\"email\" id=\"email2\"/>" | 2709 " <INPUT type=\"email\" id=\"email2\"/>" |
2676 " <INPUT type=\"tel\" id=\"phone\"/>" | 2710 " <INPUT type=\"tel\" id=\"phone\"/>" |
2677 " <INPUT type=\"submit\" value=\"Send\"/>" | 2711 " <INPUT type=\"submit\" value=\"Send\"/>" |
2678 "</FORM>"); | 2712 "</FORM>"); |
2679 | 2713 |
2680 WebFrame* web_frame = GetMainFrame(); | 2714 WebFrame* web_frame = GetMainFrame(); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2727 EXPECT_TRUE(email.suggestedValue().isEmpty()); | 2761 EXPECT_TRUE(email.suggestedValue().isEmpty()); |
2728 EXPECT_FALSE(email.isAutofilled()); | 2762 EXPECT_FALSE(email.isAutofilled()); |
2729 EXPECT_TRUE(email2.value().isEmpty()); | 2763 EXPECT_TRUE(email2.value().isEmpty()); |
2730 EXPECT_TRUE(email2.suggestedValue().isEmpty()); | 2764 EXPECT_TRUE(email2.suggestedValue().isEmpty()); |
2731 EXPECT_FALSE(email2.isAutofilled()); | 2765 EXPECT_FALSE(email2.isAutofilled()); |
2732 EXPECT_TRUE(phone.value().isEmpty()); | 2766 EXPECT_TRUE(phone.value().isEmpty()); |
2733 EXPECT_TRUE(phone.suggestedValue().isEmpty()); | 2767 EXPECT_TRUE(phone.suggestedValue().isEmpty()); |
2734 EXPECT_FALSE(phone.isAutofilled()); | 2768 EXPECT_FALSE(phone.isAutofilled()); |
2735 } | 2769 } |
2736 | 2770 |
2737 TEST_F(FormManagerTest, FormWithNodeIsAutofilled) { | 2771 TEST_F(FormAutofillTest, FormWithNodeIsAutofilled) { |
2738 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 2772 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
2739 " <INPUT type=\"text\" id=\"firstname\" value=\"Wyatt\"/>" | 2773 " <INPUT type=\"text\" id=\"firstname\" value=\"Wyatt\"/>" |
2740 " <INPUT type=\"text\" id=\"lastname\"/>" | 2774 " <INPUT type=\"text\" id=\"lastname\"/>" |
2741 " <INPUT type=\"text\" id=\"email\"/>" | 2775 " <INPUT type=\"text\" id=\"email\"/>" |
2742 " <INPUT type=\"email\" id=\"email2\"/>" | 2776 " <INPUT type=\"email\" id=\"email2\"/>" |
2743 " <INPUT type=\"tel\" id=\"phone\"/>" | 2777 " <INPUT type=\"tel\" id=\"phone\"/>" |
2744 " <INPUT type=\"submit\" value=\"Send\"/>" | 2778 " <INPUT type=\"submit\" value=\"Send\"/>" |
2745 "</FORM>"); | 2779 "</FORM>"); |
2746 | 2780 |
2747 WebFrame* web_frame = GetMainFrame(); | 2781 WebFrame* web_frame = GetMainFrame(); |
(...skipping 10 matching lines...) Expand all Loading... |
2758 // Auto-filled attribute not set yet. | 2792 // Auto-filled attribute not set yet. |
2759 EXPECT_FALSE(FormWithElementIsAutofilled(firstname)); | 2793 EXPECT_FALSE(FormWithElementIsAutofilled(firstname)); |
2760 | 2794 |
2761 // Set the auto-filled attribute. | 2795 // Set the auto-filled attribute. |
2762 firstname.setAutofilled(true); | 2796 firstname.setAutofilled(true); |
2763 | 2797 |
2764 EXPECT_TRUE(FormWithElementIsAutofilled(firstname)); | 2798 EXPECT_TRUE(FormWithElementIsAutofilled(firstname)); |
2765 } | 2799 } |
2766 | 2800 |
2767 // If we have multiple labels per id, the labels concatenated into label string. | 2801 // If we have multiple labels per id, the labels concatenated into label string. |
2768 TEST_F(FormManagerTest, MultipleLabelsPerElement) { | 2802 TEST_F(FormAutofillTest, MultipleLabelsPerElement) { |
2769 std::vector<string16> labels, names, values; | 2803 std::vector<string16> labels, names, values; |
2770 | 2804 |
2771 labels.push_back(ASCIIToUTF16("First Name:")); | 2805 labels.push_back(ASCIIToUTF16("First Name:")); |
2772 names.push_back(ASCIIToUTF16("firstname")); | 2806 names.push_back(ASCIIToUTF16("firstname")); |
2773 values.push_back(ASCIIToUTF16("John")); | 2807 values.push_back(ASCIIToUTF16("John")); |
2774 | 2808 |
2775 labels.push_back(ASCIIToUTF16("Last Name:")); | 2809 labels.push_back(ASCIIToUTF16("Last Name:")); |
2776 names.push_back(ASCIIToUTF16("lastname")); | 2810 names.push_back(ASCIIToUTF16("lastname")); |
2777 values.push_back(ASCIIToUTF16("Smith")); | 2811 values.push_back(ASCIIToUTF16("Smith")); |
2778 | 2812 |
(...skipping 10 matching lines...) Expand all Loading... |
2789 " <LABEL for=\"lastname\"> Last Name: </LABEL>" | 2823 " <LABEL for=\"lastname\"> Last Name: </LABEL>" |
2790 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 2824 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
2791 " <LABEL for=\"email\"> Email: </LABEL>" | 2825 " <LABEL for=\"email\"> Email: </LABEL>" |
2792 " <LABEL for=\"email\"> xxx@yyy.com </LABEL>" | 2826 " <LABEL for=\"email\"> xxx@yyy.com </LABEL>" |
2793 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" | 2827 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" |
2794 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 2828 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
2795 "</FORM>", | 2829 "</FORM>", |
2796 labels, names, values); | 2830 labels, names, values); |
2797 } | 2831 } |
2798 | 2832 |
2799 TEST_F(FormManagerTest, SelectOneAsText) { | 2833 TEST_F(FormAutofillTest, SelectOneAsText) { |
2800 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 2834 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
2801 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 2835 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
2802 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 2836 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
2803 " <SELECT id=\"country\">" | 2837 " <SELECT id=\"country\">" |
2804 " <OPTION value=\"AF\">Afghanistan</OPTION>" | 2838 " <OPTION value=\"AF\">Afghanistan</OPTION>" |
2805 " <OPTION value=\"AL\">Albania</OPTION>" | 2839 " <OPTION value=\"AL\">Albania</OPTION>" |
2806 " <OPTION value=\"DZ\">Algeria</OPTION>" | 2840 " <OPTION value=\"DZ\">Algeria</OPTION>" |
2807 " </SELECT>" | 2841 " </SELECT>" |
2808 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 2842 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
2809 "</FORM>"); | 2843 "</FORM>"); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2880 expected.form_control_type = ASCIIToUTF16("text"); | 2914 expected.form_control_type = ASCIIToUTF16("text"); |
2881 expected.max_length = WebInputElement::defaultMaxLength(); | 2915 expected.max_length = WebInputElement::defaultMaxLength(); |
2882 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); | 2916 EXPECT_FORM_FIELD_EQUALS(expected, fields[1]); |
2883 | 2917 |
2884 expected.name = ASCIIToUTF16("country"); | 2918 expected.name = ASCIIToUTF16("country"); |
2885 expected.value = ASCIIToUTF16("AL"); | 2919 expected.value = ASCIIToUTF16("AL"); |
2886 expected.form_control_type = ASCIIToUTF16("select-one"); | 2920 expected.form_control_type = ASCIIToUTF16("select-one"); |
2887 expected.max_length = 0; | 2921 expected.max_length = 0; |
2888 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); | 2922 EXPECT_FORM_FIELD_EQUALS(expected, fields[2]); |
2889 } | 2923 } |
OLD | NEW |