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

Side by Side Diff: chrome/renderer/autofill/form_autofill_browsertest.cc

Issue 11198048: [Autofill] Update the autocomplete types implementation to match the current HTML spec. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update AutofillFieldTest expectations Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 46
47 class FormAutofillTest : public ChromeRenderViewTest { 47 class FormAutofillTest : public ChromeRenderViewTest {
48 public: 48 public:
49 FormAutofillTest() : ChromeRenderViewTest() {} 49 FormAutofillTest() : ChromeRenderViewTest() {}
50 virtual ~FormAutofillTest() {} 50 virtual ~FormAutofillTest() {}
51 51
52 void ExpectLabels(const char* html, 52 void ExpectLabels(const char* html,
53 const std::vector<string16>& labels, 53 const std::vector<string16>& labels,
54 const std::vector<string16>& names, 54 const std::vector<string16>& names,
55 const std::vector<string16>& values) { 55 const std::vector<string16>& values) {
56 std::vector<string16> control_types(labels.size(), ASCIIToUTF16("text")); 56 std::vector<std::string> control_types(labels.size(), "text");
57 ExpectLabelsAndTypes(html, labels, names, values, control_types); 57 ExpectLabelsAndTypes(html, labels, names, values, control_types);
58 } 58 }
59 59
60 void ExpectLabelsAndTypes(const char* html, 60 void ExpectLabelsAndTypes(const char* html,
61 const std::vector<string16>& labels, 61 const std::vector<string16>& labels,
62 const std::vector<string16>& names, 62 const std::vector<string16>& names,
63 const std::vector<string16>& values, 63 const std::vector<string16>& values,
64 const std::vector<string16>& control_types) { 64 const std::vector<std::string>& control_types) {
65 ASSERT_EQ(labels.size(), names.size()); 65 ASSERT_EQ(labels.size(), names.size());
66 ASSERT_EQ(labels.size(), values.size()); 66 ASSERT_EQ(labels.size(), values.size());
67 ASSERT_EQ(labels.size(), control_types.size()); 67 ASSERT_EQ(labels.size(), control_types.size());
68 68
69 LoadHTML(html); 69 LoadHTML(html);
70 70
71 WebFrame* web_frame = GetMainFrame(); 71 WebFrame* web_frame = GetMainFrame();
72 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); 72 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
73 73
74 FormCache form_cache; 74 FormCache form_cache;
75 std::vector<FormData> forms; 75 std::vector<FormData> forms;
76 form_cache.ExtractForms(*web_frame, &forms); 76 form_cache.ExtractForms(*web_frame, &forms);
77 ASSERT_EQ(1U, forms.size()); 77 ASSERT_EQ(1U, forms.size());
78 78
79 const FormData& form = forms[0]; 79 const FormData& form = forms[0];
80 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 80 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
81 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); 81 EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
82 EXPECT_EQ(GURL("http://cnn.com"), form.action); 82 EXPECT_EQ(GURL("http://cnn.com"), form.action);
83 83
84 const std::vector<FormFieldData>& fields = form.fields; 84 const std::vector<FormFieldData>& fields = form.fields;
85 ASSERT_EQ(labels.size(), fields.size()); 85 ASSERT_EQ(labels.size(), fields.size());
86 for (size_t i = 0; i < labels.size(); ++i) { 86 for (size_t i = 0; i < labels.size(); ++i) {
87 int max_length = control_types[i] == ASCIIToUTF16("text") ? 87 int max_length = control_types[i] == "text" ?
88 WebInputElement::defaultMaxLength() : 0; 88 WebInputElement::defaultMaxLength() : 0;
89 FormFieldData expected; 89 FormFieldData expected;
90 expected.label = labels[i]; 90 expected.label = labels[i];
91 expected.name = names[i]; 91 expected.name = names[i];
92 expected.value = values[i]; 92 expected.value = values[i];
93 expected.form_control_type = control_types[i]; 93 expected.form_control_type = control_types[i];
94 expected.max_length = max_length; 94 expected.max_length = max_length;
95 SCOPED_TRACE(StringPrintf("i: %" PRIuS, i)); 95 SCOPED_TRACE(StringPrintf("i: %" PRIuS, i));
96 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[i]); 96 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[i]);
97 } 97 }
(...skipping 27 matching lines...) Expand all
125 125
126 WebFrame* frame = GetMainFrame(); 126 WebFrame* frame = GetMainFrame();
127 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); 127 ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
128 128
129 WebElement web_element = frame->document().getElementById("element"); 129 WebElement web_element = frame->document().getElementById("element");
130 WebFormControlElement element = web_element.to<WebFormControlElement>(); 130 WebFormControlElement element = web_element.to<WebFormControlElement>();
131 FormFieldData result1; 131 FormFieldData result1;
132 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result1); 132 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result1);
133 133
134 FormFieldData expected; 134 FormFieldData expected;
135 expected.form_control_type = ASCIIToUTF16("text"); 135 expected.form_control_type = "text";
136 expected.max_length = WebInputElement::defaultMaxLength(); 136 expected.max_length = WebInputElement::defaultMaxLength();
137 137
138 expected.name = ASCIIToUTF16("element"); 138 expected.name = ASCIIToUTF16("element");
139 expected.value = string16(); 139 expected.value = string16();
140 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result1); 140 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result1);
141 141
142 FormFieldData result2; 142 FormFieldData result2;
143 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result2); 143 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result2);
144 144
145 expected.name = ASCIIToUTF16("element"); 145 expected.name = ASCIIToUTF16("element");
(...skipping 10 matching lines...) Expand all
156 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); 156 ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
157 157
158 WebElement web_element = frame->document().getElementById("element"); 158 WebElement web_element = frame->document().getElementById("element");
159 WebFormControlElement element = web_element.to<WebFormControlElement>(); 159 WebFormControlElement element = web_element.to<WebFormControlElement>();
160 FormFieldData result; 160 FormFieldData result;
161 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); 161 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
162 162
163 FormFieldData expected; 163 FormFieldData expected;
164 expected.name = ASCIIToUTF16("element"); 164 expected.name = ASCIIToUTF16("element");
165 expected.value = ASCIIToUTF16("value"); 165 expected.value = ASCIIToUTF16("value");
166 expected.form_control_type = ASCIIToUTF16("text"); 166 expected.form_control_type = "text";
167 expected.autocomplete_attribute = "off";
167 expected.max_length = WebInputElement::defaultMaxLength(); 168 expected.max_length = WebInputElement::defaultMaxLength();
168 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); 169 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
169 } 170 }
170 171
171 // We should be able to extract a text field with maxlength specified. 172 // We should be able to extract a text field with maxlength specified.
172 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldMaxLength) { 173 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldMaxLength) {
173 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"" 174 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\""
174 " maxlength=\"5\"/>"); 175 " maxlength=\"5\"/>");
175 176
176 WebFrame* frame = GetMainFrame(); 177 WebFrame* frame = GetMainFrame();
177 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); 178 ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
178 179
179 WebElement web_element = frame->document().getElementById("element"); 180 WebElement web_element = frame->document().getElementById("element");
180 WebFormControlElement element = web_element.to<WebFormControlElement>(); 181 WebFormControlElement element = web_element.to<WebFormControlElement>();
181 FormFieldData result; 182 FormFieldData result;
182 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); 183 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
183 184
184 FormFieldData expected; 185 FormFieldData expected;
185 expected.name = ASCIIToUTF16("element"); 186 expected.name = ASCIIToUTF16("element");
186 expected.value = ASCIIToUTF16("value"); 187 expected.value = ASCIIToUTF16("value");
187 expected.form_control_type = ASCIIToUTF16("text"); 188 expected.form_control_type = "text";
188 expected.max_length = 5; 189 expected.max_length = 5;
189 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); 190 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
190 } 191 }
191 192
192 // We should be able to extract a text field that has been autofilled. 193 // We should be able to extract a text field that has been autofilled.
193 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldAutofilled) { 194 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldAutofilled) {
194 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"/>"); 195 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"/>");
195 196
196 WebFrame* frame = GetMainFrame(); 197 WebFrame* frame = GetMainFrame();
197 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); 198 ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
198 199
199 WebElement web_element = frame->document().getElementById("element"); 200 WebElement web_element = frame->document().getElementById("element");
200 WebInputElement element = web_element.to<WebInputElement>(); 201 WebInputElement element = web_element.to<WebInputElement>();
201 element.setAutofilled(true); 202 element.setAutofilled(true);
202 FormFieldData result; 203 FormFieldData result;
203 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); 204 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
204 205
205 FormFieldData expected; 206 FormFieldData expected;
206 expected.name = ASCIIToUTF16("element"); 207 expected.name = ASCIIToUTF16("element");
207 expected.value = ASCIIToUTF16("value"); 208 expected.value = ASCIIToUTF16("value");
208 expected.form_control_type = ASCIIToUTF16("text"); 209 expected.form_control_type = "text";
209 expected.max_length = WebInputElement::defaultMaxLength(); 210 expected.max_length = WebInputElement::defaultMaxLength();
210 expected.is_autofilled = true; 211 expected.is_autofilled = true;
211 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); 212 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
212 } 213 }
213 214
214 // We should be able to extract a <select> field. 215 // We should be able to extract a <select> field.
215 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldSelect) { 216 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldSelect) {
216 LoadHTML("<SELECT id=\"element\"/>" 217 LoadHTML("<SELECT id=\"element\"/>"
217 " <OPTION value=\"CA\">California</OPTION>" 218 " <OPTION value=\"CA\">California</OPTION>"
218 " <OPTION value=\"TX\">Texas</OPTION>" 219 " <OPTION value=\"TX\">Texas</OPTION>"
219 "</SELECT>"); 220 "</SELECT>");
220 221
221 WebFrame* frame = GetMainFrame(); 222 WebFrame* frame = GetMainFrame();
222 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); 223 ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
223 224
224 WebElement web_element = frame->document().getElementById("element"); 225 WebElement web_element = frame->document().getElementById("element");
225 WebFormControlElement element = web_element.to<WebFormControlElement>(); 226 WebFormControlElement element = web_element.to<WebFormControlElement>();
226 FormFieldData result1; 227 FormFieldData result1;
227 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result1); 228 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result1);
228 229
229 FormFieldData expected; 230 FormFieldData expected;
230 expected.name = ASCIIToUTF16("element"); 231 expected.name = ASCIIToUTF16("element");
231 expected.max_length = 0; 232 expected.max_length = 0;
232 expected.form_control_type = ASCIIToUTF16("select-one"); 233 expected.form_control_type = "select-one";
233 234
234 expected.value = ASCIIToUTF16("CA"); 235 expected.value = ASCIIToUTF16("CA");
235 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result1); 236 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result1);
236 237
237 FormFieldData result2; 238 FormFieldData result2;
238 WebFormControlElementToFormField( 239 WebFormControlElementToFormField(
239 element, 240 element,
240 static_cast<autofill::ExtractMask>(autofill::EXTRACT_VALUE | 241 static_cast<autofill::ExtractMask>(autofill::EXTRACT_VALUE |
241 autofill::EXTRACT_OPTION_TEXT), 242 autofill::EXTRACT_OPTION_TEXT),
242 &result2); 243 &result2);
(...skipping 29 matching lines...) Expand all
272 273
273 WebElement web_element = frame->document().getElementById("hidden"); 274 WebElement web_element = frame->document().getElementById("hidden");
274 WebFormControlElement element = web_element.to<WebFormControlElement>(); 275 WebFormControlElement element = web_element.to<WebFormControlElement>();
275 FormFieldData result; 276 FormFieldData result;
276 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); 277 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
277 278
278 FormFieldData expected; 279 FormFieldData expected;
279 expected.max_length = 0; 280 expected.max_length = 0;
280 281
281 expected.name = ASCIIToUTF16("hidden"); 282 expected.name = ASCIIToUTF16("hidden");
282 expected.form_control_type = ASCIIToUTF16("hidden"); 283 expected.form_control_type = "hidden";
283 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); 284 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
284 285
285 web_element = frame->document().getElementById("password"); 286 web_element = frame->document().getElementById("password");
286 element = web_element.to<WebFormControlElement>(); 287 element = web_element.to<WebFormControlElement>();
287 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); 288 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
288 expected.name = ASCIIToUTF16("password"); 289 expected.name = ASCIIToUTF16("password");
289 expected.form_control_type = ASCIIToUTF16("password"); 290 expected.form_control_type = "password";
290 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); 291 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
291 292
292 web_element = frame->document().getElementById("checkbox"); 293 web_element = frame->document().getElementById("checkbox");
293 element = web_element.to<WebFormControlElement>(); 294 element = web_element.to<WebFormControlElement>();
294 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); 295 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
295 expected.name = ASCIIToUTF16("checkbox"); 296 expected.name = ASCIIToUTF16("checkbox");
296 expected.form_control_type = ASCIIToUTF16("checkbox"); 297 expected.form_control_type = "checkbox";
297 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); 298 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
298 299
299 web_element = frame->document().getElementById("radio"); 300 web_element = frame->document().getElementById("radio");
300 element = web_element.to<WebFormControlElement>(); 301 element = web_element.to<WebFormControlElement>();
301 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); 302 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
302 expected.name = ASCIIToUTF16("radio"); 303 expected.name = ASCIIToUTF16("radio");
303 expected.form_control_type = ASCIIToUTF16("radio"); 304 expected.form_control_type = "radio";
304 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); 305 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
305 306
306 307
307 web_element = frame->document().getElementById("submit"); 308 web_element = frame->document().getElementById("submit");
308 element = web_element.to<WebFormControlElement>(); 309 element = web_element.to<WebFormControlElement>();
309 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result); 310 WebFormControlElementToFormField(element, autofill::EXTRACT_VALUE, &result);
310 expected.name = ASCIIToUTF16("submit"); 311 expected.name = ASCIIToUTF16("submit");
311 expected.form_control_type = ASCIIToUTF16("submit"); 312 expected.form_control_type = "submit";
312 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result); 313 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
313 } 314 }
314 315
315 // We should be able to extract the autocompletetype attribute. 316 // We should be able to extract the autocompletetype attribute.
316 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldAutocompletetype) { 317 TEST_F(FormAutofillTest, WebFormControlElementToFormFieldAutocompletetype) {
317 std::string html = 318 std::string html =
318 "<INPUT type=\"text\" id=\"absent\"/>" 319 "<INPUT type=\"text\" id=\"absent\"/>"
319 "<INPUT type=\"text\" id=\"empty\" x-autocompletetype=\"\"/>" 320 "<INPUT type=\"text\" id=\"empty\" autocomplete=\"\"/>"
320 "<INPUT type=\"text\" id=\"whitespace\" x-autocompletetype=\" \"/>" 321 "<INPUT type=\"text\" id=\"off\" autocomplete=\"off\"/>"
321 "<INPUT type=\"text\" id=\"regular\" x-autocompletetype=\"email\"/>" 322 "<INPUT type=\"text\" id=\"regular\" autocomplete=\"email\"/>"
322 "<INPUT type=\"text\" id=\"multi-valued\" " 323 "<INPUT type=\"text\" id=\"multi-valued\" "
323 " x-autocompletetype=\"x-confirm-email email\"/>" 324 " autocomplete=\"billing email\"/>"
324 "<INPUT type=\"text\" id=\"unprefixed\" autocompletetype=\"email\"/>" 325 "<INPUT type=\"text\" id=\"experimental\" x-autocompletetype=\"email\"/>"
325 "<SELECT id=\"select\" x-autocompletetype=\"state\"/>" 326 "<SELECT id=\"select\" autocomplete=\"state\"/>"
326 " <OPTION value=\"CA\">California</OPTION>" 327 " <OPTION value=\"CA\">California</OPTION>"
327 " <OPTION value=\"TX\">Texas</OPTION>" 328 " <OPTION value=\"TX\">Texas</OPTION>"
328 "</SELECT>"; 329 "</SELECT>";
329 html += 330 html +=
330 "<INPUT type=\"text\" id=\"malicious\" x-autocompletetype=\"" + 331 "<INPUT type=\"text\" id=\"malicious\" autocomplete=\"" +
331 std::string(10000, 'x') + "\"/>"; 332 std::string(10000, 'x') + "\"/>";
332 LoadHTML(html.c_str()); 333 LoadHTML(html.c_str());
333 334
334 WebFrame* frame = GetMainFrame(); 335 WebFrame* frame = GetMainFrame();
335 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); 336 ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
336 337
337 // An absent attribute is equivalent to an empty one. 338 struct TestCase {
338 WebElement web_element = frame->document().getElementById("absent"); 339 const std::string element_id;
339 WebFormControlElement element = web_element.to<WebFormControlElement>(); 340 const std::string form_control_type;
340 FormFieldData result1; 341 const std::string autocomplete_attribute;
341 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result1); 342 };
343 TestCase test_cases[] = {
344 // An absent attribute is equivalent to an empty one.
345 { "absent", "text", "" },
346 // Make sure there are no issues parsing an empty attribute.
347 { "empty", "text", "" },
348 // Make sure there are no issues parsing an attribute value that isn't a
349 // type hint.
350 { "off", "text", "off" },
351 // Common case: exactly one type specified.
352 { "regular", "text", "email" },
353 // Verify that we correctly extract multiple tokens as well.
354 { "multi-valued", "text", "billing email" },
355 // We previously extracted this data from the experimental
356 // 'x-autocompletetype' attribute. Now that the field type hints are part
357 // of the spec under the autocomplete attribute, we no longer support the
358 // experimental version.
359 { "experimental", "text", "" },
360 // <select> elements should behave no differently from text fields here.
361 { "select", "select-one", "state" },
362 // Very long attribute values should be replaced by a default string, to
363 // prevent malicious websites from DOSing the browser process.
364 { "malicious", "text", "x-max-data-length-exceeded" },
365 };
342 366
343 FormFieldData expected; 367 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) {
344 expected.name = ASCIIToUTF16("absent"); 368 WebElement web_element = frame->document().getElementById(
345 expected.form_control_type = ASCIIToUTF16("text"); 369 ASCIIToUTF16(test_cases[i].element_id));
346 expected.autocomplete_type = string16(); 370 WebFormControlElement element = web_element.to<WebFormControlElement>();
347 expected.max_length = WebInputElement::defaultMaxLength(); 371 FormFieldData result;
348 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result1); 372 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result);
349 373
350 web_element = frame->document().getElementById("empty"); 374 FormFieldData expected;
351 element = web_element.to<WebFormControlElement>(); 375 expected.name = ASCIIToUTF16(test_cases[i].element_id);
352 FormFieldData result2; 376 expected.form_control_type = test_cases[i].form_control_type;
353 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result2); 377 expected.autocomplete_attribute = test_cases[i].autocomplete_attribute;
354 expected.name = ASCIIToUTF16("empty"); 378 if (test_cases[i].form_control_type == "text")
355 expected.form_control_type = ASCIIToUTF16("text"); 379 expected.max_length = WebInputElement::defaultMaxLength();
356 expected.autocomplete_type = string16(); 380 else
357 expected.max_length = WebInputElement::defaultMaxLength(); 381 expected.max_length = 0;
358 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result2);
359 382
360 // The renderer should trim whitespace. 383 SCOPED_TRACE(test_cases[i].element_id);
361 web_element = frame->document().getElementById("whitespace"); 384 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result);
362 element = web_element.to<WebFormControlElement>(); 385 }
363 FormFieldData result3;
364 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result3);
365 expected.name = ASCIIToUTF16("whitespace");
366 expected.form_control_type = ASCIIToUTF16("text");
367 expected.autocomplete_type = string16();
368 expected.max_length = WebInputElement::defaultMaxLength();
369 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result3);
370
371 // Common case: exactly one type specified.
372 web_element = frame->document().getElementById("regular");
373 element = web_element.to<WebFormControlElement>();
374 FormFieldData result4;
375 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result4);
376 expected.name = ASCIIToUTF16("regular");
377 expected.form_control_type = ASCIIToUTF16("text");
378 expected.autocomplete_type = ASCIIToUTF16("email");
379 expected.max_length = WebInputElement::defaultMaxLength();
380 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result4);
381
382 // Verify that we correctly extract fallback types as well.
383 web_element = frame->document().getElementById("multi-valued");
384 element = web_element.to<WebFormControlElement>();
385 FormFieldData result5;
386 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result5);
387 expected.name = ASCIIToUTF16("multi-valued");
388 expected.form_control_type = ASCIIToUTF16("text");
389 expected.autocomplete_type = ASCIIToUTF16("x-confirm-email email");
390 expected.max_length = WebInputElement::defaultMaxLength();
391 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result5);
392
393 // The attribute is not yet part of the HTML standard, so we only recognize
394 // the prefixed version -- 'x-autocompletetype' -- and not the unprefixed one.
395 web_element = frame->document().getElementById("unprefixed");
396 element = web_element.to<WebFormControlElement>();
397 FormFieldData result6;
398 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result6);
399 expected.name = ASCIIToUTF16("unprefixed");
400 expected.form_control_type = ASCIIToUTF16("text");
401 expected.autocomplete_type = string16();
402 expected.max_length = WebInputElement::defaultMaxLength();
403 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result6);
404
405 // <select> elements should behave no differently from text fields here.
406 web_element = frame->document().getElementById("select");
407 element = web_element.to<WebFormControlElement>();
408 FormFieldData result7;
409 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result7);
410 expected.name = ASCIIToUTF16("select");
411 expected.form_control_type = ASCIIToUTF16("select-one");
412 expected.autocomplete_type = ASCIIToUTF16("state");
413 expected.max_length = 0;
414 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result7);
415
416 // Very long attribute values should be replaced by a default string, to
417 // prevent malicious websites from DOSing the browser process.
418 web_element = frame->document().getElementById("malicious");
419 element = web_element.to<WebFormControlElement>();
420 FormFieldData result8;
421 WebFormControlElementToFormField(element, autofill::EXTRACT_NONE, &result8);
422 expected.name = ASCIIToUTF16("malicious");
423 expected.form_control_type = ASCIIToUTF16("text");
424 expected.autocomplete_type = ASCIIToUTF16("x-max-data-length-exceeded");
425 expected.max_length = WebInputElement::defaultMaxLength();
426 EXPECT_FORM_FIELD_DATA_EQUALS(expected, result8);
427 } 386 }
428 387
429 TEST_F(FormAutofillTest, WebFormElementToFormData) { 388 TEST_F(FormAutofillTest, WebFormElementToFormData) {
430 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" 389 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
431 " <LABEL for=\"firstname\">First name:</LABEL>" 390 " <LABEL for=\"firstname\">First name:</LABEL>"
432 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" 391 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
433 " <LABEL for=\"lastname\">Last name:</LABEL>" 392 " <LABEL for=\"lastname\">Last name:</LABEL>"
434 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" 393 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
435 " <LABEL for=\"state\">State:</LABEL>" 394 " <LABEL for=\"state\">State:</LABEL>"
436 " <SELECT id=\"state\"/>" 395 " <SELECT id=\"state\"/>"
(...skipping 30 matching lines...) Expand all
467 EXPECT_EQ(GURL(frame->document().url()), form.origin); 426 EXPECT_EQ(GURL(frame->document().url()), form.origin);
468 EXPECT_EQ(GURL("http://cnn.com"), form.action); 427 EXPECT_EQ(GURL("http://cnn.com"), form.action);
469 428
470 const std::vector<FormFieldData>& fields = form.fields; 429 const std::vector<FormFieldData>& fields = form.fields;
471 ASSERT_EQ(3U, fields.size()); 430 ASSERT_EQ(3U, fields.size());
472 431
473 FormFieldData expected; 432 FormFieldData expected;
474 expected.name = ASCIIToUTF16("firstname"); 433 expected.name = ASCIIToUTF16("firstname");
475 expected.value = ASCIIToUTF16("John"); 434 expected.value = ASCIIToUTF16("John");
476 expected.label = ASCIIToUTF16("First name:"); 435 expected.label = ASCIIToUTF16("First name:");
477 expected.form_control_type = ASCIIToUTF16("text"); 436 expected.form_control_type = "text";
478 expected.max_length = WebInputElement::defaultMaxLength(); 437 expected.max_length = WebInputElement::defaultMaxLength();
479 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 438 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
480 439
481 expected.name = ASCIIToUTF16("lastname"); 440 expected.name = ASCIIToUTF16("lastname");
482 expected.value = ASCIIToUTF16("Smith"); 441 expected.value = ASCIIToUTF16("Smith");
483 expected.label = ASCIIToUTF16("Last name:"); 442 expected.label = ASCIIToUTF16("Last name:");
484 expected.form_control_type = ASCIIToUTF16("text"); 443 expected.form_control_type = "text";
485 expected.max_length = WebInputElement::defaultMaxLength(); 444 expected.max_length = WebInputElement::defaultMaxLength();
486 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 445 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
487 446
488 expected.name = ASCIIToUTF16("state"); 447 expected.name = ASCIIToUTF16("state");
489 expected.value = ASCIIToUTF16("CA"); 448 expected.value = ASCIIToUTF16("CA");
490 expected.label = ASCIIToUTF16("State:"); 449 expected.label = ASCIIToUTF16("State:");
491 expected.form_control_type = ASCIIToUTF16("select-one"); 450 expected.form_control_type = "select-one";
492 expected.max_length = 0; 451 expected.max_length = 0;
493 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]); 452 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]);
494 } 453 }
495 454
496 // We should not be able to serialize a form with too many fillable fields. 455 // We should not be able to serialize a form with too many fillable fields.
497 TEST_F(FormAutofillTest, WebFormElementToFormDataTooManyFields) { 456 TEST_F(FormAutofillTest, WebFormElementToFormDataTooManyFields) {
498 std::string html = 457 std::string html =
499 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"; 458 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">";
500 for (size_t i = 0; i < (autofill::kMaxParseableFields + 1); ++i) { 459 for (size_t i = 0; i < (autofill::kMaxParseableFields + 1); ++i) {
501 html += "<INPUT type=\"text\"/>"; 460 html += "<INPUT type=\"text\"/>";
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 // First form. 517 // First form.
559 const FormData& form = forms[0]; 518 const FormData& form = forms[0];
560 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 519 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
561 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); 520 EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
562 EXPECT_EQ(GURL("http://cnn.com"), form.action); 521 EXPECT_EQ(GURL("http://cnn.com"), form.action);
563 522
564 const std::vector<FormFieldData>& fields = form.fields; 523 const std::vector<FormFieldData>& fields = form.fields;
565 ASSERT_EQ(3U, fields.size()); 524 ASSERT_EQ(3U, fields.size());
566 525
567 FormFieldData expected; 526 FormFieldData expected;
568 expected.form_control_type = ASCIIToUTF16("text"); 527 expected.form_control_type = "text";
569 expected.max_length = WebInputElement::defaultMaxLength(); 528 expected.max_length = WebInputElement::defaultMaxLength();
570 529
571 expected.name = ASCIIToUTF16("firstname"); 530 expected.name = ASCIIToUTF16("firstname");
572 expected.value = ASCIIToUTF16("John"); 531 expected.value = ASCIIToUTF16("John");
573 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 532 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
574 533
575 expected.name = ASCIIToUTF16("lastname"); 534 expected.name = ASCIIToUTF16("lastname");
576 expected.value = ASCIIToUTF16("Smith"); 535 expected.value = ASCIIToUTF16("Smith");
577 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 536 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
578 537
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 autofill::EXTRACT_VALUE, &form, NULL)); 632 autofill::EXTRACT_VALUE, &form, NULL));
674 633
675 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 634 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
676 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); 635 EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
677 EXPECT_EQ(GURL("http://abc.com"), form.action); 636 EXPECT_EQ(GURL("http://abc.com"), form.action);
678 637
679 const std::vector<FormFieldData>& fields = form.fields; 638 const std::vector<FormFieldData>& fields = form.fields;
680 ASSERT_EQ(3U, fields.size()); 639 ASSERT_EQ(3U, fields.size());
681 640
682 FormFieldData expected; 641 FormFieldData expected;
683 expected.form_control_type = ASCIIToUTF16("text"); 642 expected.form_control_type = "text";
684 expected.max_length = WebInputElement::defaultMaxLength(); 643 expected.max_length = WebInputElement::defaultMaxLength();
685 644
686 expected.name = ASCIIToUTF16("middlename"); 645 expected.name = ASCIIToUTF16("middlename");
687 expected.value = ASCIIToUTF16("Jack"); 646 expected.value = ASCIIToUTF16("Jack");
688 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 647 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
689 648
690 expected.name = ASCIIToUTF16("lastname"); 649 expected.name = ASCIIToUTF16("lastname");
691 expected.value = ASCIIToUTF16("Smith"); 650 expected.value = ASCIIToUTF16("Smith");
692 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 651 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
693 652
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, 684 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field,
726 autofill::REQUIRE_NONE)); 685 autofill::REQUIRE_NONE));
727 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 686 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
728 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); 687 EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
729 EXPECT_EQ(GURL("http://buh.com"), form.action); 688 EXPECT_EQ(GURL("http://buh.com"), form.action);
730 689
731 const std::vector<FormFieldData>& fields = form.fields; 690 const std::vector<FormFieldData>& fields = form.fields;
732 ASSERT_EQ(4U, fields.size()); 691 ASSERT_EQ(4U, fields.size());
733 692
734 FormFieldData expected; 693 FormFieldData expected;
735 expected.form_control_type = ASCIIToUTF16("text"); 694 expected.form_control_type = "text";
736 expected.max_length = WebInputElement::defaultMaxLength(); 695 expected.max_length = WebInputElement::defaultMaxLength();
737 696
738 expected.name = ASCIIToUTF16("firstname"); 697 expected.name = ASCIIToUTF16("firstname");
739 expected.value = ASCIIToUTF16("John"); 698 expected.value = ASCIIToUTF16("John");
740 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 699 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
741 EXPECT_FORM_FIELD_DATA_EQUALS(expected, field); 700 EXPECT_FORM_FIELD_DATA_EQUALS(expected, field);
742 701
743 expected.name = ASCIIToUTF16("lastname"); 702 expected.name = ASCIIToUTF16("lastname");
744 expected.value = ASCIIToUTF16("Smith"); 703 expected.value = ASCIIToUTF16("Smith");
745 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 704 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
746 705
747 expected.name = ASCIIToUTF16("email"); 706 expected.name = ASCIIToUTF16("email");
748 expected.value = ASCIIToUTF16("john@example.com"); 707 expected.value = ASCIIToUTF16("john@example.com");
708 expected.autocomplete_attribute = "off";
749 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]); 709 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]);
710 expected.autocomplete_attribute = std::string(); // reset
750 711
751 expected.name = ASCIIToUTF16("phone"); 712 expected.name = ASCIIToUTF16("phone");
752 expected.value = ASCIIToUTF16("1.800.555.1234"); 713 expected.value = ASCIIToUTF16("1.800.555.1234");
753 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[3]); 714 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[3]);
754 715
755 // Try again, but require autocomplete. 716 // Try again, but require autocomplete.
756 FormData form2; 717 FormData form2;
757 FormFieldData field2; 718 FormFieldData field2;
758 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2, 719 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2,
759 autofill::REQUIRE_AUTOCOMPLETE)); 720 autofill::REQUIRE_AUTOCOMPLETE));
760 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); 721 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
761 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); 722 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
762 EXPECT_EQ(GURL("http://buh.com"), form2.action); 723 EXPECT_EQ(GURL("http://buh.com"), form2.action);
763 724
764 const std::vector<FormFieldData>& fields2 = form2.fields; 725 const std::vector<FormFieldData>& fields2 = form2.fields;
765 ASSERT_EQ(3U, fields2.size()); 726 ASSERT_EQ(3U, fields2.size());
766 727
767 expected.form_control_type = ASCIIToUTF16("text"); 728 expected.form_control_type = "text";
768 expected.max_length = WebInputElement::defaultMaxLength(); 729 expected.max_length = WebInputElement::defaultMaxLength();
769 730
770 expected.name = ASCIIToUTF16("firstname"); 731 expected.name = ASCIIToUTF16("firstname");
771 expected.value = ASCIIToUTF16("John"); 732 expected.value = ASCIIToUTF16("John");
772 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[0]); 733 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[0]);
773 EXPECT_FORM_FIELD_DATA_EQUALS(expected, field); 734 EXPECT_FORM_FIELD_DATA_EQUALS(expected, field);
774 735
775 expected.name = ASCIIToUTF16("lastname"); 736 expected.name = ASCIIToUTF16("lastname");
776 expected.value = ASCIIToUTF16("Smith"); 737 expected.value = ASCIIToUTF16("Smith");
777 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[1]); 738 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[1]);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
814 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, 775 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field,
815 autofill::REQUIRE_AUTOCOMPLETE)); 776 autofill::REQUIRE_AUTOCOMPLETE));
816 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 777 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
817 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); 778 EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
818 EXPECT_EQ(GURL("http://buh.com"), form.action); 779 EXPECT_EQ(GURL("http://buh.com"), form.action);
819 780
820 const std::vector<FormFieldData>& fields = form.fields; 781 const std::vector<FormFieldData>& fields = form.fields;
821 ASSERT_EQ(7U, fields.size()); 782 ASSERT_EQ(7U, fields.size());
822 783
823 FormFieldData expected; 784 FormFieldData expected;
824 expected.form_control_type = ASCIIToUTF16("text"); 785 expected.form_control_type = "text";
825 expected.max_length = WebInputElement::defaultMaxLength(); 786 expected.max_length = WebInputElement::defaultMaxLength();
826 787
827 expected.name = ASCIIToUTF16("firstname"); 788 expected.name = ASCIIToUTF16("firstname");
828 expected.value = string16(); 789 expected.value = string16();
829 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 790 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
830 791
831 expected.name = ASCIIToUTF16("lastname"); 792 expected.name = ASCIIToUTF16("lastname");
832 expected.value = string16(); 793 expected.value = string16();
833 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 794 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
834 795
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
941 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, 902 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field,
942 autofill::REQUIRE_AUTOCOMPLETE)); 903 autofill::REQUIRE_AUTOCOMPLETE));
943 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 904 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
944 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); 905 EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
945 EXPECT_EQ(GURL("http://buh.com"), form.action); 906 EXPECT_EQ(GURL("http://buh.com"), form.action);
946 907
947 const std::vector<FormFieldData>& fields = form.fields; 908 const std::vector<FormFieldData>& fields = form.fields;
948 ASSERT_EQ(4U, fields.size()); 909 ASSERT_EQ(4U, fields.size());
949 910
950 FormFieldData expected; 911 FormFieldData expected;
951 expected.form_control_type = ASCIIToUTF16("text"); 912 expected.form_control_type = "text";
952 expected.max_length = WebInputElement::defaultMaxLength(); 913 expected.max_length = WebInputElement::defaultMaxLength();
953 914
954 expected.name = ASCIIToUTF16("firstname"); 915 expected.name = ASCIIToUTF16("firstname");
955 expected.value = string16(); 916 expected.value = string16();
956 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 917 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
957 918
958 expected.name = ASCIIToUTF16("lastname"); 919 expected.name = ASCIIToUTF16("lastname");
959 expected.value = string16(); 920 expected.value = string16();
960 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 921 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
961 922
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 " </TR>" 1307 " </TR>"
1347 "</TABLE>" 1308 "</TABLE>"
1348 "</FORM>", 1309 "</FORM>",
1349 labels, names, values); 1310 labels, names, values);
1350 } 1311 }
1351 1312
1352 // <script>, <noscript> and <option> tags are excluded when the labels are 1313 // <script>, <noscript> and <option> tags are excluded when the labels are
1353 // inferred. 1314 // inferred.
1354 // Also <!-- comment --> is excluded. 1315 // Also <!-- comment --> is excluded.
1355 TEST_F(FormAutofillTest, LabelsInferredFromTableWithSpecialElements) { 1316 TEST_F(FormAutofillTest, LabelsInferredFromTableWithSpecialElements) {
1356 std::vector<string16> labels, names, values, control_types; 1317 std::vector<string16> labels, names, values;
1318 std::vector<std::string> control_types;
1357 1319
1358 labels.push_back(ASCIIToUTF16("* First Name")); 1320 labels.push_back(ASCIIToUTF16("* First Name"));
1359 names.push_back(ASCIIToUTF16("firstname")); 1321 names.push_back(ASCIIToUTF16("firstname"));
1360 values.push_back(ASCIIToUTF16("John")); 1322 values.push_back(ASCIIToUTF16("John"));
1361 control_types.push_back(ASCIIToUTF16("text")); 1323 control_types.push_back("text");
1362 1324
1363 labels.push_back(ASCIIToUTF16("* Middle Name")); 1325 labels.push_back(ASCIIToUTF16("* Middle Name"));
1364 names.push_back(ASCIIToUTF16("middlename")); 1326 names.push_back(ASCIIToUTF16("middlename"));
1365 values.push_back(ASCIIToUTF16("Joe")); 1327 values.push_back(ASCIIToUTF16("Joe"));
1366 control_types.push_back(ASCIIToUTF16("text")); 1328 control_types.push_back("text");
1367 1329
1368 labels.push_back(ASCIIToUTF16("* Last Name")); 1330 labels.push_back(ASCIIToUTF16("* Last Name"));
1369 names.push_back(ASCIIToUTF16("lastname")); 1331 names.push_back(ASCIIToUTF16("lastname"));
1370 values.push_back(ASCIIToUTF16("Smith")); 1332 values.push_back(ASCIIToUTF16("Smith"));
1371 control_types.push_back(ASCIIToUTF16("text")); 1333 control_types.push_back("text");
1372 1334
1373 labels.push_back(ASCIIToUTF16("* Country")); 1335 labels.push_back(ASCIIToUTF16("* Country"));
1374 names.push_back(ASCIIToUTF16("country")); 1336 names.push_back(ASCIIToUTF16("country"));
1375 values.push_back(ASCIIToUTF16("US")); 1337 values.push_back(ASCIIToUTF16("US"));
1376 control_types.push_back(ASCIIToUTF16("select-one")); 1338 control_types.push_back("select-one");
1377 1339
1378 labels.push_back(ASCIIToUTF16("* Email")); 1340 labels.push_back(ASCIIToUTF16("* Email"));
1379 names.push_back(ASCIIToUTF16("email")); 1341 names.push_back(ASCIIToUTF16("email"));
1380 values.push_back(ASCIIToUTF16("john@example.com")); 1342 values.push_back(ASCIIToUTF16("john@example.com"));
1381 control_types.push_back(ASCIIToUTF16("text")); 1343 control_types.push_back("text");
1382 1344
1383 ExpectLabelsAndTypes( 1345 ExpectLabelsAndTypes(
1384 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" 1346 "<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
1385 "<TABLE>" 1347 "<TABLE>"
1386 " <TR>" 1348 " <TR>"
1387 " <TD>" 1349 " <TD>"
1388 " <SPAN>*</SPAN>" 1350 " <SPAN>*</SPAN>"
1389 " <B>First Name</B>" 1351 " <B>First Name</B>"
1390 " </TD>" 1352 " </TD>"
1391 " <TD>" 1353 " <TD>"
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after
1892 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, 1854 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field,
1893 autofill::REQUIRE_NONE)); 1855 autofill::REQUIRE_NONE));
1894 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 1856 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
1895 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); 1857 EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
1896 EXPECT_EQ(GURL("http://buh.com"), form.action); 1858 EXPECT_EQ(GURL("http://buh.com"), form.action);
1897 1859
1898 const std::vector<FormFieldData>& fields = form.fields; 1860 const std::vector<FormFieldData>& fields = form.fields;
1899 ASSERT_EQ(3U, fields.size()); 1861 ASSERT_EQ(3U, fields.size());
1900 1862
1901 FormFieldData expected; 1863 FormFieldData expected;
1902 expected.form_control_type = ASCIIToUTF16("text"); 1864 expected.form_control_type = "text";
1903 1865
1904 expected.name = ASCIIToUTF16("firstname"); 1866 expected.name = ASCIIToUTF16("firstname");
1905 expected.max_length = 5; 1867 expected.max_length = 5;
1906 expected.is_autofilled = false; 1868 expected.is_autofilled = false;
1907 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 1869 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
1908 1870
1909 expected.name = ASCIIToUTF16("lastname"); 1871 expected.name = ASCIIToUTF16("lastname");
1910 expected.max_length = 7; 1872 expected.max_length = 7;
1911 expected.is_autofilled = false; 1873 expected.is_autofilled = false;
1912 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 1874 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
(...skipping 15 matching lines...) Expand all
1928 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2, 1890 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2,
1929 autofill::REQUIRE_NONE)); 1891 autofill::REQUIRE_NONE));
1930 1892
1931 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); 1893 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
1932 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); 1894 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
1933 EXPECT_EQ(GURL("http://buh.com"), form2.action); 1895 EXPECT_EQ(GURL("http://buh.com"), form2.action);
1934 1896
1935 const std::vector<FormFieldData>& fields2 = form2.fields; 1897 const std::vector<FormFieldData>& fields2 = form2.fields;
1936 ASSERT_EQ(3U, fields2.size()); 1898 ASSERT_EQ(3U, fields2.size());
1937 1899
1938 expected.form_control_type = ASCIIToUTF16("text"); 1900 expected.form_control_type = "text";
1939 1901
1940 expected.name = ASCIIToUTF16("firstname"); 1902 expected.name = ASCIIToUTF16("firstname");
1941 expected.value = ASCIIToUTF16("Broth"); 1903 expected.value = ASCIIToUTF16("Broth");
1942 expected.max_length = 5; 1904 expected.max_length = 5;
1943 expected.is_autofilled = true; 1905 expected.is_autofilled = true;
1944 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[0]); 1906 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[0]);
1945 1907
1946 expected.name = ASCIIToUTF16("lastname"); 1908 expected.name = ASCIIToUTF16("lastname");
1947 expected.value = ASCIIToUTF16("Jonatha"); 1909 expected.value = ASCIIToUTF16("Jonatha");
1948 expected.max_length = 7; 1910 expected.max_length = 7;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1985 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, 1947 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field,
1986 autofill::REQUIRE_NONE)); 1948 autofill::REQUIRE_NONE));
1987 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 1949 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
1988 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); 1950 EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
1989 EXPECT_EQ(GURL("http://buh.com"), form.action); 1951 EXPECT_EQ(GURL("http://buh.com"), form.action);
1990 1952
1991 const std::vector<FormFieldData>& fields = form.fields; 1953 const std::vector<FormFieldData>& fields = form.fields;
1992 ASSERT_EQ(3U, fields.size()); 1954 ASSERT_EQ(3U, fields.size());
1993 1955
1994 FormFieldData expected; 1956 FormFieldData expected;
1995 expected.form_control_type = ASCIIToUTF16("text"); 1957 expected.form_control_type = "text";
1996 expected.max_length = WebInputElement::defaultMaxLength(); 1958 expected.max_length = WebInputElement::defaultMaxLength();
1997 1959
1998 expected.name = ASCIIToUTF16("firstname"); 1960 expected.name = ASCIIToUTF16("firstname");
1999 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 1961 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
2000 1962
2001 expected.name = ASCIIToUTF16("lastname"); 1963 expected.name = ASCIIToUTF16("lastname");
2002 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 1964 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
2003 1965
2004 expected.name = ASCIIToUTF16("email"); 1966 expected.name = ASCIIToUTF16("email");
2005 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]); 1967 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
2062 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, 2024 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field,
2063 autofill::REQUIRE_NONE)); 2025 autofill::REQUIRE_NONE));
2064 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 2026 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
2065 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); 2027 EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
2066 EXPECT_EQ(GURL("http://buh.com"), form.action); 2028 EXPECT_EQ(GURL("http://buh.com"), form.action);
2067 2029
2068 const std::vector<FormFieldData>& fields = form.fields; 2030 const std::vector<FormFieldData>& fields = form.fields;
2069 ASSERT_EQ(3U, fields.size()); 2031 ASSERT_EQ(3U, fields.size());
2070 2032
2071 FormFieldData expected; 2033 FormFieldData expected;
2072 expected.form_control_type = ASCIIToUTF16("text"); 2034 expected.form_control_type = "text";
2073 expected.max_length = WebInputElement::defaultMaxLength(); 2035 expected.max_length = WebInputElement::defaultMaxLength();
2074 2036
2075 expected.name = ASCIIToUTF16("firstname"); 2037 expected.name = ASCIIToUTF16("firstname");
2076 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 2038 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
2077 2039
2078 expected.name = ASCIIToUTF16("lastname"); 2040 expected.name = ASCIIToUTF16("lastname");
2079 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 2041 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
2080 2042
2081 expected.name = ASCIIToUTF16("email"); 2043 expected.name = ASCIIToUTF16("email");
2082 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]); 2044 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]);
(...skipping 10 matching lines...) Expand all
2093 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2, 2055 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form2, &field2,
2094 autofill::REQUIRE_NONE)); 2056 autofill::REQUIRE_NONE));
2095 2057
2096 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); 2058 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
2097 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); 2059 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
2098 EXPECT_EQ(GURL("http://buh.com"), form2.action); 2060 EXPECT_EQ(GURL("http://buh.com"), form2.action);
2099 2061
2100 const std::vector<FormFieldData>& fields2 = form2.fields; 2062 const std::vector<FormFieldData>& fields2 = form2.fields;
2101 ASSERT_EQ(3U, fields2.size()); 2063 ASSERT_EQ(3U, fields2.size());
2102 2064
2103 expected.form_control_type = ASCIIToUTF16("text"); 2065 expected.form_control_type = "text";
2104 expected.max_length = WebInputElement::defaultMaxLength(); 2066 expected.max_length = WebInputElement::defaultMaxLength();
2105 2067
2106 expected.name = ASCIIToUTF16("firstname"); 2068 expected.name = ASCIIToUTF16("firstname");
2107 expected.value = ASCIIToUTF16("Wyatt"); 2069 expected.value = ASCIIToUTF16("Wyatt");
2108 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 2070 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
2109 2071
2110 expected.name = ASCIIToUTF16("lastname"); 2072 expected.name = ASCIIToUTF16("lastname");
2111 expected.value = ASCIIToUTF16("Earp"); 2073 expected.value = ASCIIToUTF16("Earp");
2112 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 2074 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
2113 2075
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2148 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, 2110 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field,
2149 autofill::REQUIRE_NONE)); 2111 autofill::REQUIRE_NONE));
2150 EXPECT_EQ(string16(), form.name); 2112 EXPECT_EQ(string16(), form.name);
2151 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); 2113 EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
2152 EXPECT_EQ(GURL("http://abc.com"), form.action); 2114 EXPECT_EQ(GURL("http://abc.com"), form.action);
2153 2115
2154 const std::vector<FormFieldData>& fields = form.fields; 2116 const std::vector<FormFieldData>& fields = form.fields;
2155 ASSERT_EQ(3U, fields.size()); 2117 ASSERT_EQ(3U, fields.size());
2156 2118
2157 FormFieldData expected; 2119 FormFieldData expected;
2158 expected.form_control_type = ASCIIToUTF16("text"); 2120 expected.form_control_type = "text";
2159 expected.max_length = WebInputElement::defaultMaxLength(); 2121 expected.max_length = WebInputElement::defaultMaxLength();
2160 2122
2161 expected.name = ASCIIToUTF16("apple"); 2123 expected.name = ASCIIToUTF16("apple");
2162 expected.is_autofilled = false; 2124 expected.is_autofilled = false;
2163 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 2125 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
2164 2126
2165 expected.name = ASCIIToUTF16("banana"); 2127 expected.name = ASCIIToUTF16("banana");
2166 expected.is_autofilled = false; 2128 expected.is_autofilled = false;
2167 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 2129 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
2168 2130
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
2234 &form, 2196 &form,
2235 NULL)); 2197 NULL));
2236 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 2198 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
2237 EXPECT_EQ(GURL(frame->document().url()), form.origin); 2199 EXPECT_EQ(GURL(frame->document().url()), form.origin);
2238 EXPECT_EQ(GURL("http://cnn.com"), form.action); 2200 EXPECT_EQ(GURL("http://cnn.com"), form.action);
2239 2201
2240 const std::vector<FormFieldData>& fields = form.fields; 2202 const std::vector<FormFieldData>& fields = form.fields;
2241 ASSERT_EQ(4U, fields.size()); 2203 ASSERT_EQ(4U, fields.size());
2242 2204
2243 FormFieldData expected; 2205 FormFieldData expected;
2244 expected.form_control_type = ASCIIToUTF16("text"); 2206 expected.form_control_type = "text";
2245 expected.max_length = WebInputElement::defaultMaxLength(); 2207 expected.max_length = WebInputElement::defaultMaxLength();
2246 2208
2247 expected.label = ASCIIToUTF16("Phone:"); 2209 expected.label = ASCIIToUTF16("Phone:");
2248 expected.name = ASCIIToUTF16("dayphone1"); 2210 expected.name = ASCIIToUTF16("dayphone1");
2249 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 2211 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
2250 2212
2251 expected.label = ASCIIToUTF16("-"); 2213 expected.label = ASCIIToUTF16("-");
2252 expected.name = ASCIIToUTF16("dayphone2"); 2214 expected.name = ASCIIToUTF16("dayphone2");
2253 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 2215 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
2254 2216
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2293 &form, 2255 &form,
2294 NULL)); 2256 NULL));
2295 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 2257 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
2296 EXPECT_EQ(GURL(frame->document().url()), form.origin); 2258 EXPECT_EQ(GURL(frame->document().url()), form.origin);
2297 EXPECT_EQ(GURL("http://cnn.com"), form.action); 2259 EXPECT_EQ(GURL("http://cnn.com"), form.action);
2298 2260
2299 const std::vector<FormFieldData>& fields = form.fields; 2261 const std::vector<FormFieldData>& fields = form.fields;
2300 ASSERT_EQ(6U, fields.size()); 2262 ASSERT_EQ(6U, fields.size());
2301 2263
2302 FormFieldData expected; 2264 FormFieldData expected;
2303 expected.form_control_type = ASCIIToUTF16("text"); 2265 expected.form_control_type = "text";
2304 2266
2305 expected.label = ASCIIToUTF16("Phone:"); 2267 expected.label = ASCIIToUTF16("Phone:");
2306 expected.name = ASCIIToUTF16("dayphone1"); 2268 expected.name = ASCIIToUTF16("dayphone1");
2307 expected.max_length = 3; 2269 expected.max_length = 3;
2308 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 2270 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
2309 2271
2310 expected.label = ASCIIToUTF16("-"); 2272 expected.label = ASCIIToUTF16("-");
2311 expected.name = ASCIIToUTF16("dayphone2"); 2273 expected.name = ASCIIToUTF16("dayphone2");
2312 expected.max_length = 3; 2274 expected.max_length = 3;
2313 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 2275 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
2367 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field, 2329 EXPECT_TRUE(FindFormAndFieldForInputElement(input_element, &form, &field,
2368 autofill::REQUIRE_NONE)); 2330 autofill::REQUIRE_NONE));
2369 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 2331 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
2370 EXPECT_EQ(GURL(web_frame->document().url()), form.origin); 2332 EXPECT_EQ(GURL(web_frame->document().url()), form.origin);
2371 EXPECT_EQ(GURL("http://buh.com"), form.action); 2333 EXPECT_EQ(GURL("http://buh.com"), form.action);
2372 2334
2373 const std::vector<FormFieldData>& fields = form.fields; 2335 const std::vector<FormFieldData>& fields = form.fields;
2374 ASSERT_EQ(3U, fields.size()); 2336 ASSERT_EQ(3U, fields.size());
2375 2337
2376 FormFieldData expected; 2338 FormFieldData expected;
2377 expected.form_control_type = ASCIIToUTF16("text"); 2339 expected.form_control_type = "text";
2378 expected.max_length = WebInputElement::defaultMaxLength(); 2340 expected.max_length = WebInputElement::defaultMaxLength();
2379 2341
2380 expected.name = ASCIIToUTF16("firstname"); 2342 expected.name = ASCIIToUTF16("firstname");
2381 expected.value = ASCIIToUTF16("Wy"); 2343 expected.value = ASCIIToUTF16("Wy");
2382 expected.is_autofilled = false; 2344 expected.is_autofilled = false;
2383 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 2345 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
2384 2346
2385 expected.name = ASCIIToUTF16("lastname"); 2347 expected.name = ASCIIToUTF16("lastname");
2386 expected.value = string16(); 2348 expected.value = string16();
2387 expected.is_autofilled = false; 2349 expected.is_autofilled = false;
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
2476 EXPECT_TRUE(FindFormAndFieldForInputElement(firstname, &form2, &field2, 2438 EXPECT_TRUE(FindFormAndFieldForInputElement(firstname, &form2, &field2,
2477 autofill::REQUIRE_NONE)); 2439 autofill::REQUIRE_NONE));
2478 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); 2440 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
2479 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); 2441 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
2480 EXPECT_EQ(GURL("http://buh.com"), form2.action); 2442 EXPECT_EQ(GURL("http://buh.com"), form2.action);
2481 2443
2482 const std::vector<FormFieldData>& fields2 = form2.fields; 2444 const std::vector<FormFieldData>& fields2 = form2.fields;
2483 ASSERT_EQ(4U, fields2.size()); 2445 ASSERT_EQ(4U, fields2.size());
2484 2446
2485 FormFieldData expected; 2447 FormFieldData expected;
2486 expected.form_control_type = ASCIIToUTF16("text"); 2448 expected.form_control_type = "text";
2487 expected.max_length = WebInputElement::defaultMaxLength(); 2449 expected.max_length = WebInputElement::defaultMaxLength();
2488 2450
2489 expected.name = ASCIIToUTF16("firstname"); 2451 expected.name = ASCIIToUTF16("firstname");
2490 expected.value = string16(); 2452 expected.value = string16();
2491 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[0]); 2453 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[0]);
2492 2454
2493 expected.name = ASCIIToUTF16("lastname"); 2455 expected.name = ASCIIToUTF16("lastname");
2494 expected.value = string16(); 2456 expected.value = string16();
2495 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[1]); 2457 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[1]);
2496 2458
2497 expected.name = ASCIIToUTF16("noAC"); 2459 expected.name = ASCIIToUTF16("noAC");
2498 expected.value = string16(); 2460 expected.value = string16();
2461 expected.autocomplete_attribute = "off";
2499 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[2]); 2462 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[2]);
2463 expected.autocomplete_attribute = std::string(); // reset
2500 2464
2501 expected.name = ASCIIToUTF16("notenabled"); 2465 expected.name = ASCIIToUTF16("notenabled");
2502 expected.value = ASCIIToUTF16("no clear"); 2466 expected.value = ASCIIToUTF16("no clear");
2503 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[3]); 2467 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[3]);
2504 2468
2505 // Verify that the cursor position has been updated. 2469 // Verify that the cursor position has been updated.
2506 EXPECT_EQ(0, firstname.selectionStart()); 2470 EXPECT_EQ(0, firstname.selectionStart());
2507 EXPECT_EQ(0, firstname.selectionEnd()); 2471 EXPECT_EQ(0, firstname.selectionEnd());
2508 } 2472 }
2509 2473
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2554 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin); 2518 EXPECT_EQ(GURL(web_frame->document().url()), form2.origin);
2555 EXPECT_EQ(GURL("http://buh.com"), form2.action); 2519 EXPECT_EQ(GURL("http://buh.com"), form2.action);
2556 2520
2557 const std::vector<FormFieldData>& fields2 = form2.fields; 2521 const std::vector<FormFieldData>& fields2 = form2.fields;
2558 ASSERT_EQ(3U, fields2.size()); 2522 ASSERT_EQ(3U, fields2.size());
2559 2523
2560 FormFieldData expected; 2524 FormFieldData expected;
2561 2525
2562 expected.name = ASCIIToUTF16("firstname"); 2526 expected.name = ASCIIToUTF16("firstname");
2563 expected.value = string16(); 2527 expected.value = string16();
2564 expected.form_control_type = ASCIIToUTF16("text"); 2528 expected.form_control_type = "text";
2565 expected.max_length = WebInputElement::defaultMaxLength(); 2529 expected.max_length = WebInputElement::defaultMaxLength();
2566 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[0]); 2530 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[0]);
2567 2531
2568 expected.name = ASCIIToUTF16("lastname"); 2532 expected.name = ASCIIToUTF16("lastname");
2569 expected.value = string16(); 2533 expected.value = string16();
2570 expected.form_control_type = ASCIIToUTF16("text"); 2534 expected.form_control_type = "text";
2571 expected.max_length = WebInputElement::defaultMaxLength(); 2535 expected.max_length = WebInputElement::defaultMaxLength();
2572 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[1]); 2536 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[1]);
2573 2537
2574 expected.name = ASCIIToUTF16("state"); 2538 expected.name = ASCIIToUTF16("state");
2575 expected.value = ASCIIToUTF16("?"); 2539 expected.value = ASCIIToUTF16("?");
2576 expected.form_control_type = ASCIIToUTF16("select-one"); 2540 expected.form_control_type = "select-one";
2577 expected.max_length = 0; 2541 expected.max_length = 0;
2578 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[2]); 2542 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields2[2]);
2579 2543
2580 // Verify that the cursor position has been updated. 2544 // Verify that the cursor position has been updated.
2581 EXPECT_EQ(0, firstname.selectionStart()); 2545 EXPECT_EQ(0, firstname.selectionStart());
2582 EXPECT_EQ(0, firstname.selectionEnd()); 2546 EXPECT_EQ(0, firstname.selectionEnd());
2583 } 2547 }
2584 2548
2585 TEST_F(FormAutofillTest, ClearPreviewedFormWithElement) { 2549 TEST_F(FormAutofillTest, ClearPreviewedFormWithElement) {
2586 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" 2550 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
2883 EXPECT_EQ(GURL(frame->document().url()), form.origin); 2847 EXPECT_EQ(GURL(frame->document().url()), form.origin);
2884 EXPECT_EQ(GURL("http://cnn.com"), form.action); 2848 EXPECT_EQ(GURL("http://cnn.com"), form.action);
2885 2849
2886 const std::vector<FormFieldData>& fields = form.fields; 2850 const std::vector<FormFieldData>& fields = form.fields;
2887 ASSERT_EQ(3U, fields.size()); 2851 ASSERT_EQ(3U, fields.size());
2888 2852
2889 FormFieldData expected; 2853 FormFieldData expected;
2890 2854
2891 expected.name = ASCIIToUTF16("firstname"); 2855 expected.name = ASCIIToUTF16("firstname");
2892 expected.value = ASCIIToUTF16("John"); 2856 expected.value = ASCIIToUTF16("John");
2893 expected.form_control_type = ASCIIToUTF16("text"); 2857 expected.form_control_type = "text";
2894 expected.max_length = WebInputElement::defaultMaxLength(); 2858 expected.max_length = WebInputElement::defaultMaxLength();
2895 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 2859 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
2896 2860
2897 expected.name = ASCIIToUTF16("lastname"); 2861 expected.name = ASCIIToUTF16("lastname");
2898 expected.value = ASCIIToUTF16("Smith"); 2862 expected.value = ASCIIToUTF16("Smith");
2899 expected.form_control_type = ASCIIToUTF16("text"); 2863 expected.form_control_type = "text";
2900 expected.max_length = WebInputElement::defaultMaxLength(); 2864 expected.max_length = WebInputElement::defaultMaxLength();
2901 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 2865 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
2902 2866
2903 expected.name = ASCIIToUTF16("country"); 2867 expected.name = ASCIIToUTF16("country");
2904 expected.value = ASCIIToUTF16("Albania"); 2868 expected.value = ASCIIToUTF16("Albania");
2905 expected.form_control_type = ASCIIToUTF16("select-one"); 2869 expected.form_control_type = "select-one";
2906 expected.max_length = 0; 2870 expected.max_length = 0;
2907 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]); 2871 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]);
2908 2872
2909 form.fields.clear(); 2873 form.fields.clear();
2910 // Extract the country select-one value as value. 2874 // Extract the country select-one value as value.
2911 EXPECT_TRUE(WebFormElementToFormData(forms[0], 2875 EXPECT_TRUE(WebFormElementToFormData(forms[0],
2912 WebFormControlElement(), 2876 WebFormControlElement(),
2913 autofill::REQUIRE_NONE, 2877 autofill::REQUIRE_NONE,
2914 autofill::EXTRACT_VALUE, 2878 autofill::EXTRACT_VALUE,
2915 &form, 2879 &form,
2916 NULL)); 2880 NULL));
2917 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 2881 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
2918 EXPECT_EQ(GURL(frame->document().url()), form.origin); 2882 EXPECT_EQ(GURL(frame->document().url()), form.origin);
2919 EXPECT_EQ(GURL("http://cnn.com"), form.action); 2883 EXPECT_EQ(GURL("http://cnn.com"), form.action);
2920 2884
2921 ASSERT_EQ(3U, fields.size()); 2885 ASSERT_EQ(3U, fields.size());
2922 2886
2923 expected.name = ASCIIToUTF16("firstname"); 2887 expected.name = ASCIIToUTF16("firstname");
2924 expected.value = ASCIIToUTF16("John"); 2888 expected.value = ASCIIToUTF16("John");
2925 expected.form_control_type = ASCIIToUTF16("text"); 2889 expected.form_control_type = "text";
2926 expected.max_length = WebInputElement::defaultMaxLength(); 2890 expected.max_length = WebInputElement::defaultMaxLength();
2927 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]); 2891 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[0]);
2928 2892
2929 expected.name = ASCIIToUTF16("lastname"); 2893 expected.name = ASCIIToUTF16("lastname");
2930 expected.value = ASCIIToUTF16("Smith"); 2894 expected.value = ASCIIToUTF16("Smith");
2931 expected.form_control_type = ASCIIToUTF16("text"); 2895 expected.form_control_type = "text";
2932 expected.max_length = WebInputElement::defaultMaxLength(); 2896 expected.max_length = WebInputElement::defaultMaxLength();
2933 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]); 2897 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[1]);
2934 2898
2935 expected.name = ASCIIToUTF16("country"); 2899 expected.name = ASCIIToUTF16("country");
2936 expected.value = ASCIIToUTF16("AL"); 2900 expected.value = ASCIIToUTF16("AL");
2937 expected.form_control_type = ASCIIToUTF16("select-one"); 2901 expected.form_control_type = "select-one";
2938 expected.max_length = 0; 2902 expected.max_length = 0;
2939 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]); 2903 EXPECT_FORM_FIELD_DATA_EQUALS(expected, fields[2]);
2940 } 2904 }
OLDNEW
« no previous file with comments | « chrome/renderer/autofill/autofill_renderer_browsertest.cc ('k') | chrome/renderer/autofill/form_autofill_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698