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

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

Issue 6437001: Pull in a named constant from WebKit (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Unwrapped in all its glory Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/string16.h" 7 #include "base/string16.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "chrome/renderer/autofill/form_manager.h" 10 #include "chrome/renderer/autofill/form_manager.h"
(...skipping 20 matching lines...) Expand all
31 using WebKit::WebSelectElement; 31 using WebKit::WebSelectElement;
32 using WebKit::WebNode; 32 using WebKit::WebNode;
33 using WebKit::WebString; 33 using WebKit::WebString;
34 using WebKit::WebVector; 34 using WebKit::WebVector;
35 35
36 using autofill::FormManager; 36 using autofill::FormManager;
37 37
38 using webkit_glue::FormData; 38 using webkit_glue::FormData;
39 using webkit_glue::FormField; 39 using webkit_glue::FormField;
40 40
41 namespace {
42
43 // TODO(isherman): Pull this as a named constant from WebKit
44 const int kDefaultMaxLength = 0x80000;
45
46 } // namespace
47
48 class FormManagerTest : public RenderViewTest { 41 class FormManagerTest : public RenderViewTest {
49 public: 42 public:
50 FormManagerTest() : RenderViewTest() {} 43 FormManagerTest() : RenderViewTest() {}
51 virtual ~FormManagerTest() {} 44 virtual ~FormManagerTest() {}
52 45
53 void ExpectLabels(const char* html, 46 void ExpectLabels(const char* html,
54 const std::vector<string16>& labels, 47 const std::vector<string16>& labels,
55 const std::vector<string16>& names, 48 const std::vector<string16>& names,
56 const std::vector<string16>& values) { 49 const std::vector<string16>& values) {
57 ASSERT_EQ(labels.size(), names.size()); 50 ASSERT_EQ(labels.size(), names.size());
(...skipping 17 matching lines...) Expand all
75 EXPECT_EQ(GURL(web_frame->url()), form.origin); 68 EXPECT_EQ(GURL(web_frame->url()), form.origin);
76 EXPECT_EQ(GURL("http://cnn.com"), form.action); 69 EXPECT_EQ(GURL("http://cnn.com"), form.action);
77 70
78 const std::vector<FormField>& fields = form.fields; 71 const std::vector<FormField>& fields = form.fields;
79 ASSERT_EQ(labels.size(), fields.size()); 72 ASSERT_EQ(labels.size(), fields.size());
80 for (size_t i = 0; i < labels.size(); ++i) { 73 for (size_t i = 0; i < labels.size(); ++i) {
81 FormField expected = FormField(labels[i], 74 FormField expected = FormField(labels[i],
82 names[i], 75 names[i],
83 values[i], 76 values[i],
84 ASCIIToUTF16("text"), 77 ASCIIToUTF16("text"),
85 kDefaultMaxLength, 78 WebInputElement::defaultMaxLength(),
86 false); 79 false);
87 EXPECT_TRUE(fields[i].StrictlyEqualsHack(expected)) 80 EXPECT_TRUE(fields[i].StrictlyEqualsHack(expected))
88 << "Expected \"" << expected << "\", got \"" << fields[i] << "\""; 81 << "Expected \"" << expected << "\", got \"" << fields[i] << "\"";
89 } 82 }
90 } 83 }
91 84
92 void ExpectJohnSmithLabels(const char* html) { 85 void ExpectJohnSmithLabels(const char* html) {
93 std::vector<string16> labels, names, values; 86 std::vector<string16> labels, names, values;
94 87
95 labels.push_back(ASCIIToUTF16("First name:")); 88 labels.push_back(ASCIIToUTF16("First name:"));
96 names.push_back(ASCIIToUTF16("firstname")); 89 names.push_back(ASCIIToUTF16("firstname"));
97 values.push_back(ASCIIToUTF16("John")); 90 values.push_back(ASCIIToUTF16("John"));
98 91
99 labels.push_back(ASCIIToUTF16("Last name:")); 92 labels.push_back(ASCIIToUTF16("Last name:"));
100 names.push_back(ASCIIToUTF16("lastname")); 93 names.push_back(ASCIIToUTF16("lastname"));
101 values.push_back(ASCIIToUTF16("Smith")); 94 values.push_back(ASCIIToUTF16("Smith"));
102 95
103 labels.push_back(ASCIIToUTF16("Email:")); 96 labels.push_back(ASCIIToUTF16("Email:"));
104 names.push_back(ASCIIToUTF16("email")); 97 names.push_back(ASCIIToUTF16("email"));
105 values.push_back(ASCIIToUTF16("john@example.com")); 98 values.push_back(ASCIIToUTF16("john@example.com"));
106 99
107 ExpectLabels(html, labels, names, values); 100 ExpectLabels(html, labels, names, values);
108 } 101 }
109 102
110
111 private: 103 private:
112 DISALLOW_COPY_AND_ASSIGN(FormManagerTest); 104 DISALLOW_COPY_AND_ASSIGN(FormManagerTest);
113 }; 105 };
114 106
115 // We should be able to extract a normal text field. 107 // We should be able to extract a normal text field.
116 TEST_F(FormManagerTest, WebFormControlElementToFormField) { 108 TEST_F(FormManagerTest, WebFormControlElementToFormField) {
117 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"/>"); 109 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"/>");
118 110
119 WebFrame* frame = GetMainFrame(); 111 WebFrame* frame = GetMainFrame();
120 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); 112 ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
121 113
122 WebElement web_element = frame->document().getElementById("element"); 114 WebElement web_element = frame->document().getElementById("element");
123 WebFormControlElement element = web_element.to<WebFormControlElement>(); 115 WebFormControlElement element = web_element.to<WebFormControlElement>();
124 FormField result1; 116 FormField result1;
125 FormManager::WebFormControlElementToFormField(element, 117 FormManager::WebFormControlElementToFormField(element,
126 FormManager::EXTRACT_NONE, 118 FormManager::EXTRACT_NONE,
127 &result1); 119 &result1);
128 EXPECT_TRUE(result1.StrictlyEqualsHack(FormField(string16(), 120 EXPECT_TRUE(result1.StrictlyEqualsHack(
129 ASCIIToUTF16("element"), 121 FormField(string16(),
130 string16(), 122 ASCIIToUTF16("element"),
131 ASCIIToUTF16("text"), 123 string16(),
132 kDefaultMaxLength, 124 ASCIIToUTF16("text"),
133 false))); 125 WebInputElement::defaultMaxLength(),
126 false)));
134 FormField result2; 127 FormField result2;
135 FormManager::WebFormControlElementToFormField(element, 128 FormManager::WebFormControlElementToFormField(element,
136 FormManager::EXTRACT_VALUE, 129 FormManager::EXTRACT_VALUE,
137 &result2); 130 &result2);
138 EXPECT_TRUE(result2.StrictlyEqualsHack(FormField(string16(), 131 EXPECT_TRUE(result2.StrictlyEqualsHack(
139 ASCIIToUTF16("element"), 132 FormField(string16(),
140 ASCIIToUTF16("value"), 133 ASCIIToUTF16("element"),
141 ASCIIToUTF16("text"), 134 ASCIIToUTF16("value"),
142 kDefaultMaxLength, 135 ASCIIToUTF16("text"),
143 false))); 136 WebInputElement::defaultMaxLength(),
137 false)));
144 } 138 }
145 139
146 // We should be able to extract a text field with autocomplete="off". 140 // We should be able to extract a text field with autocomplete="off".
147 TEST_F(FormManagerTest, WebFormControlElementToFormFieldAutocompleteOff) { 141 TEST_F(FormManagerTest, WebFormControlElementToFormFieldAutocompleteOff) {
148 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"" 142 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\""
149 " autocomplete=\"off\"/>"); 143 " autocomplete=\"off\"/>");
150 144
151 WebFrame* frame = GetMainFrame(); 145 WebFrame* frame = GetMainFrame();
152 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); 146 ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
153 147
154 WebElement web_element = frame->document().getElementById("element"); 148 WebElement web_element = frame->document().getElementById("element");
155 WebFormControlElement element = web_element.to<WebFormControlElement>(); 149 WebFormControlElement element = web_element.to<WebFormControlElement>();
156 FormField result; 150 FormField result;
157 FormManager::WebFormControlElementToFormField(element, 151 FormManager::WebFormControlElementToFormField(element,
158 FormManager::EXTRACT_VALUE, 152 FormManager::EXTRACT_VALUE,
159 &result); 153 &result);
160 EXPECT_TRUE(result.StrictlyEqualsHack(FormField(string16(), 154 EXPECT_TRUE(result.StrictlyEqualsHack(
161 ASCIIToUTF16("element"), 155 FormField(string16(),
162 ASCIIToUTF16("value"), 156 ASCIIToUTF16("element"),
163 ASCIIToUTF16("text"), 157 ASCIIToUTF16("value"),
164 kDefaultMaxLength, 158 ASCIIToUTF16("text"),
165 false))); 159 WebInputElement::defaultMaxLength(),
160 false)));
166 } 161 }
167 162
168 // We should be able to extract a text field with maxlength specified. 163 // We should be able to extract a text field with maxlength specified.
169 TEST_F(FormManagerTest, WebFormControlElementToFormFieldMaxLength) { 164 TEST_F(FormManagerTest, WebFormControlElementToFormFieldMaxLength) {
170 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\"" 165 LoadHTML("<INPUT type=\"text\" id=\"element\" value=\"value\""
171 " maxlength=\"5\"/>"); 166 " maxlength=\"5\"/>");
172 167
173 WebFrame* frame = GetMainFrame(); 168 WebFrame* frame = GetMainFrame();
174 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); 169 ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
175 170
(...skipping 18 matching lines...) Expand all
194 WebFrame* frame = GetMainFrame(); 189 WebFrame* frame = GetMainFrame();
195 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); 190 ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
196 191
197 WebElement web_element = frame->document().getElementById("element"); 192 WebElement web_element = frame->document().getElementById("element");
198 WebInputElement element = web_element.to<WebInputElement>(); 193 WebInputElement element = web_element.to<WebInputElement>();
199 element.setAutofilled(true); 194 element.setAutofilled(true);
200 FormField result; 195 FormField result;
201 FormManager::WebFormControlElementToFormField(element, 196 FormManager::WebFormControlElementToFormField(element,
202 FormManager::EXTRACT_VALUE, 197 FormManager::EXTRACT_VALUE,
203 &result); 198 &result);
204 EXPECT_TRUE(result.StrictlyEqualsHack(FormField(string16(), 199 EXPECT_TRUE(result.StrictlyEqualsHack(
205 ASCIIToUTF16("element"), 200 FormField(string16(),
206 ASCIIToUTF16("value"), 201 ASCIIToUTF16("element"),
207 ASCIIToUTF16("text"), 202 ASCIIToUTF16("value"),
208 kDefaultMaxLength, 203 ASCIIToUTF16("text"),
209 true))); 204 WebInputElement::defaultMaxLength(),
205 true)));
210 } 206 }
211 207
212 // We should be able to extract a <select> field. 208 // We should be able to extract a <select> field.
213 TEST_F(FormManagerTest, WebFormControlElementToFormFieldSelect) { 209 TEST_F(FormManagerTest, WebFormControlElementToFormFieldSelect) {
214 LoadHTML("<SELECT id=\"element\"/>" 210 LoadHTML("<SELECT id=\"element\"/>"
215 " <OPTION value=\"CA\">California</OPTION>" 211 " <OPTION value=\"CA\">California</OPTION>"
216 " <OPTION value=\"TX\">Texas</OPTION>" 212 " <OPTION value=\"TX\">Texas</OPTION>"
217 "</SELECT>"); 213 "</SELECT>");
218 214
219 WebFrame* frame = GetMainFrame(); 215 WebFrame* frame = GetMainFrame();
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 EXPECT_EQ(GURL(frame->url()), form.origin); 359 EXPECT_EQ(GURL(frame->url()), form.origin);
364 EXPECT_EQ(GURL("http://cnn.com"), form.action); 360 EXPECT_EQ(GURL("http://cnn.com"), form.action);
365 361
366 const std::vector<FormField>& fields = form.fields; 362 const std::vector<FormField>& fields = form.fields;
367 ASSERT_EQ(3U, fields.size()); 363 ASSERT_EQ(3U, fields.size());
368 EXPECT_TRUE(fields[0].StrictlyEqualsHack( 364 EXPECT_TRUE(fields[0].StrictlyEqualsHack(
369 FormField(string16(), 365 FormField(string16(),
370 ASCIIToUTF16("firstname"), 366 ASCIIToUTF16("firstname"),
371 ASCIIToUTF16("John"), 367 ASCIIToUTF16("John"),
372 ASCIIToUTF16("text"), 368 ASCIIToUTF16("text"),
373 kDefaultMaxLength, 369 WebInputElement::defaultMaxLength(),
374 false))); 370 false)));
375 EXPECT_TRUE(fields[1].StrictlyEqualsHack( 371 EXPECT_TRUE(fields[1].StrictlyEqualsHack(
376 FormField(string16(), 372 FormField(string16(),
377 ASCIIToUTF16("lastname"), 373 ASCIIToUTF16("lastname"),
378 ASCIIToUTF16("Smith"), 374 ASCIIToUTF16("Smith"),
379 ASCIIToUTF16("text"), 375 ASCIIToUTF16("text"),
380 kDefaultMaxLength, 376 WebInputElement::defaultMaxLength(),
381 false))); 377 false)));
382 EXPECT_TRUE(fields[2].StrictlyEqualsHack( 378 EXPECT_TRUE(fields[2].StrictlyEqualsHack(
383 FormField(string16(), 379 FormField(string16(),
384 ASCIIToUTF16("state"), 380 ASCIIToUTF16("state"),
385 ASCIIToUTF16("CA"), 381 ASCIIToUTF16("CA"),
386 ASCIIToUTF16("select-one"), 382 ASCIIToUTF16("select-one"),
387 0, 383 0,
388 false))); 384 false)));
389 } 385 }
390 386
(...skipping 19 matching lines...) Expand all
410 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 406 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
411 EXPECT_EQ(GURL(web_frame->url()), form.origin); 407 EXPECT_EQ(GURL(web_frame->url()), form.origin);
412 EXPECT_EQ(GURL("http://cnn.com"), form.action); 408 EXPECT_EQ(GURL("http://cnn.com"), form.action);
413 409
414 const std::vector<FormField>& fields = form.fields; 410 const std::vector<FormField>& fields = form.fields;
415 ASSERT_EQ(3U, fields.size()); 411 ASSERT_EQ(3U, fields.size());
416 EXPECT_EQ(FormField(string16(), 412 EXPECT_EQ(FormField(string16(),
417 ASCIIToUTF16("firstname"), 413 ASCIIToUTF16("firstname"),
418 ASCIIToUTF16("John"), 414 ASCIIToUTF16("John"),
419 ASCIIToUTF16("text"), 415 ASCIIToUTF16("text"),
420 kDefaultMaxLength, 416 WebInputElement::defaultMaxLength(),
421 false), 417 false),
422 fields[0]); 418 fields[0]);
423 EXPECT_EQ(FormField(string16(), 419 EXPECT_EQ(FormField(string16(),
424 ASCIIToUTF16("lastname"), 420 ASCIIToUTF16("lastname"),
425 ASCIIToUTF16("Smith"), 421 ASCIIToUTF16("Smith"),
426 ASCIIToUTF16("text"), 422 ASCIIToUTF16("text"),
427 kDefaultMaxLength, 423 WebInputElement::defaultMaxLength(),
428 false), 424 false),
429 fields[1]); 425 fields[1]);
430 EXPECT_EQ(FormField(string16(), 426 EXPECT_EQ(FormField(string16(),
431 ASCIIToUTF16("email"), 427 ASCIIToUTF16("email"),
432 ASCIIToUTF16("john@example.com"), 428 ASCIIToUTF16("john@example.com"),
433 ASCIIToUTF16("text"), 429 ASCIIToUTF16("text"),
434 kDefaultMaxLength, 430 WebInputElement::defaultMaxLength(),
435 false), 431 false),
436 fields[2]); 432 fields[2]);
437 } 433 }
438 434
439 TEST_F(FormManagerTest, ExtractMultipleForms) { 435 TEST_F(FormManagerTest, ExtractMultipleForms) {
440 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" 436 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
441 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" 437 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
442 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" 438 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
443 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" 439 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>"
444 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" 440 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
(...skipping 20 matching lines...) Expand all
465 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 461 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
466 EXPECT_EQ(GURL(web_frame->url()), form.origin); 462 EXPECT_EQ(GURL(web_frame->url()), form.origin);
467 EXPECT_EQ(GURL("http://cnn.com"), form.action); 463 EXPECT_EQ(GURL("http://cnn.com"), form.action);
468 464
469 const std::vector<FormField>& fields = form.fields; 465 const std::vector<FormField>& fields = form.fields;
470 ASSERT_EQ(3U, fields.size()); 466 ASSERT_EQ(3U, fields.size());
471 EXPECT_EQ(FormField(string16(), 467 EXPECT_EQ(FormField(string16(),
472 ASCIIToUTF16("firstname"), 468 ASCIIToUTF16("firstname"),
473 ASCIIToUTF16("John"), 469 ASCIIToUTF16("John"),
474 ASCIIToUTF16("text"), 470 ASCIIToUTF16("text"),
475 kDefaultMaxLength, 471 WebInputElement::defaultMaxLength(),
476 false), 472 false),
477 fields[0]); 473 fields[0]);
478 EXPECT_EQ(FormField(string16(), 474 EXPECT_EQ(FormField(string16(),
479 ASCIIToUTF16("lastname"), 475 ASCIIToUTF16("lastname"),
480 ASCIIToUTF16("Smith"), 476 ASCIIToUTF16("Smith"),
481 ASCIIToUTF16("text"), 477 ASCIIToUTF16("text"),
482 kDefaultMaxLength, 478 WebInputElement::defaultMaxLength(),
483 false), 479 false),
484 fields[1]); 480 fields[1]);
485 EXPECT_EQ(FormField(string16(), 481 EXPECT_EQ(FormField(string16(),
486 ASCIIToUTF16("email"), 482 ASCIIToUTF16("email"),
487 ASCIIToUTF16("john@example.com"), 483 ASCIIToUTF16("john@example.com"),
488 ASCIIToUTF16("text"), 484 ASCIIToUTF16("text"),
489 kDefaultMaxLength, 485 WebInputElement::defaultMaxLength(),
490 false), 486 false),
491 fields[2]); 487 fields[2]);
492 488
493 // Second form. 489 // Second form.
494 const FormData& form2 = forms[1]; 490 const FormData& form2 = forms[1];
495 EXPECT_EQ(ASCIIToUTF16("TestForm2"), form2.name); 491 EXPECT_EQ(ASCIIToUTF16("TestForm2"), form2.name);
496 EXPECT_EQ(GURL(web_frame->url()), form2.origin); 492 EXPECT_EQ(GURL(web_frame->url()), form2.origin);
497 EXPECT_EQ(GURL("http://zoo.com"), form2.action); 493 EXPECT_EQ(GURL("http://zoo.com"), form2.action);
498 494
499 const std::vector<FormField>& fields2 = form2.fields; 495 const std::vector<FormField>& fields2 = form2.fields;
500 ASSERT_EQ(3U, fields2.size()); 496 ASSERT_EQ(3U, fields2.size());
501 EXPECT_EQ(FormField(string16(), 497 EXPECT_EQ(FormField(string16(),
502 ASCIIToUTF16("firstname"), 498 ASCIIToUTF16("firstname"),
503 ASCIIToUTF16("Jack"), 499 ASCIIToUTF16("Jack"),
504 ASCIIToUTF16("text"), 500 ASCIIToUTF16("text"),
505 kDefaultMaxLength, 501 WebInputElement::defaultMaxLength(),
506 false), 502 false),
507 fields2[0]); 503 fields2[0]);
508 EXPECT_EQ(FormField(string16(), 504 EXPECT_EQ(FormField(string16(),
509 ASCIIToUTF16("lastname"), 505 ASCIIToUTF16("lastname"),
510 ASCIIToUTF16("Adams"), 506 ASCIIToUTF16("Adams"),
511 ASCIIToUTF16("text"), 507 ASCIIToUTF16("text"),
512 kDefaultMaxLength, 508 WebInputElement::defaultMaxLength(),
513 false), 509 false),
514 fields2[1]); 510 fields2[1]);
515 EXPECT_EQ(FormField(string16(), 511 EXPECT_EQ(FormField(string16(),
516 ASCIIToUTF16("email"), 512 ASCIIToUTF16("email"),
517 ASCIIToUTF16("jack@example.com"), 513 ASCIIToUTF16("jack@example.com"),
518 ASCIIToUTF16("text"), 514 ASCIIToUTF16("text"),
519 kDefaultMaxLength, 515 WebInputElement::defaultMaxLength(),
520 false), 516 false),
521 fields[2]); 517 fields[2]);
522 } 518 }
523 519
524 // We should not extract a form if it has too few fillable fields. 520 // We should not extract a form if it has too few fillable fields.
525 TEST_F(FormManagerTest, ExtractFormsTooFewFields) { 521 TEST_F(FormManagerTest, ExtractFormsTooFewFields) {
526 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" 522 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
527 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" 523 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
528 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" 524 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
529 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" 525 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 588 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
593 EXPECT_EQ(GURL(web_frame->url()), form.origin); 589 EXPECT_EQ(GURL(web_frame->url()), form.origin);
594 EXPECT_EQ(GURL("http://abc.com"), form.action); 590 EXPECT_EQ(GURL("http://abc.com"), form.action);
595 591
596 const std::vector<FormField>& fields = form.fields; 592 const std::vector<FormField>& fields = form.fields;
597 ASSERT_EQ(3U, fields.size()); 593 ASSERT_EQ(3U, fields.size());
598 EXPECT_EQ(FormField(string16(), 594 EXPECT_EQ(FormField(string16(),
599 ASCIIToUTF16("middlename"), 595 ASCIIToUTF16("middlename"),
600 ASCIIToUTF16("Jack"), 596 ASCIIToUTF16("Jack"),
601 ASCIIToUTF16("text"), 597 ASCIIToUTF16("text"),
602 kDefaultMaxLength, 598 WebInputElement::defaultMaxLength(),
603 false), 599 false),
604 fields[0]); 600 fields[0]);
605 EXPECT_EQ(FormField(string16(), 601 EXPECT_EQ(FormField(string16(),
606 ASCIIToUTF16("lastname"), 602 ASCIIToUTF16("lastname"),
607 ASCIIToUTF16("Smith"), 603 ASCIIToUTF16("Smith"),
608 ASCIIToUTF16("text"), 604 ASCIIToUTF16("text"),
609 kDefaultMaxLength, 605 WebInputElement::defaultMaxLength(),
610 false), 606 false),
611 fields[1]); 607 fields[1]);
612 EXPECT_EQ(FormField(string16(), 608 EXPECT_EQ(FormField(string16(),
613 ASCIIToUTF16("email"), 609 ASCIIToUTF16("email"),
614 ASCIIToUTF16("john@example.com"), 610 ASCIIToUTF16("john@example.com"),
615 ASCIIToUTF16("text"), 611 ASCIIToUTF16("text"),
616 kDefaultMaxLength, 612 WebInputElement::defaultMaxLength(),
617 false), 613 false),
618 fields[2]); 614 fields[2]);
619 } 615 }
620 616
621 TEST_F(FormManagerTest, GetFormsElementsEnabled) { 617 TEST_F(FormManagerTest, GetFormsElementsEnabled) {
622 // The firstname element is not enabled due to disabled being set. 618 // The firstname element is not enabled due to disabled being set.
623 LoadHTML("<FORM name=\"TestForm\" action=\"http://xyz.com\" method=\"post\">" 619 LoadHTML("<FORM name=\"TestForm\" action=\"http://xyz.com\" method=\"post\">"
624 " <INPUT disabled type=\"text\" id=\"firstname\" value=\"John\"/>" 620 " <INPUT disabled type=\"text\" id=\"firstname\" value=\"John\"/>"
625 " <INPUT type=\"text\" id=\"middlename\" value=\"Jack\"/>" 621 " <INPUT type=\"text\" id=\"middlename\" value=\"Jack\"/>"
626 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" 622 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
(...skipping 15 matching lines...) Expand all
642 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 638 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
643 EXPECT_EQ(GURL(web_frame->url()), form.origin); 639 EXPECT_EQ(GURL(web_frame->url()), form.origin);
644 EXPECT_EQ(GURL("http://xyz.com"), form.action); 640 EXPECT_EQ(GURL("http://xyz.com"), form.action);
645 641
646 const std::vector<FormField>& fields = form.fields; 642 const std::vector<FormField>& fields = form.fields;
647 ASSERT_EQ(3U, fields.size()); 643 ASSERT_EQ(3U, fields.size());
648 EXPECT_EQ(FormField(string16(), 644 EXPECT_EQ(FormField(string16(),
649 ASCIIToUTF16("middlename"), 645 ASCIIToUTF16("middlename"),
650 ASCIIToUTF16("Jack"), 646 ASCIIToUTF16("Jack"),
651 ASCIIToUTF16("text"), 647 ASCIIToUTF16("text"),
652 kDefaultMaxLength, 648 WebInputElement::defaultMaxLength(),
653 false), 649 false),
654 fields[0]); 650 fields[0]);
655 EXPECT_EQ(FormField(string16(), 651 EXPECT_EQ(FormField(string16(),
656 ASCIIToUTF16("lastname"), 652 ASCIIToUTF16("lastname"),
657 ASCIIToUTF16("Smith"), 653 ASCIIToUTF16("Smith"),
658 ASCIIToUTF16("text"), 654 ASCIIToUTF16("text"),
659 kDefaultMaxLength, 655 WebInputElement::defaultMaxLength(),
660 false), 656 false),
661 fields[1]); 657 fields[1]);
662 EXPECT_EQ(FormField(string16(), 658 EXPECT_EQ(FormField(string16(),
663 ASCIIToUTF16("email"), 659 ASCIIToUTF16("email"),
664 ASCIIToUTF16("jack@example.com"), 660 ASCIIToUTF16("jack@example.com"),
665 ASCIIToUTF16("text"), 661 ASCIIToUTF16("text"),
666 kDefaultMaxLength, 662 WebInputElement::defaultMaxLength(),
667 false), 663 false),
668 fields[2]); 664 fields[2]);
669 } 665 }
670 666
671 TEST_F(FormManagerTest, FindForm) { 667 TEST_F(FormManagerTest, FindForm) {
672 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" 668 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
673 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" 669 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
674 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" 670 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
675 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>" 671 " <INPUT type=\"text\" id=\"email\" value=\"john@example.com\"/>"
676 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" 672 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
(...skipping 21 matching lines...) Expand all
698 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 694 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
699 EXPECT_EQ(GURL(web_frame->url()), form.origin); 695 EXPECT_EQ(GURL(web_frame->url()), form.origin);
700 EXPECT_EQ(GURL("http://buh.com"), form.action); 696 EXPECT_EQ(GURL("http://buh.com"), form.action);
701 697
702 const std::vector<FormField>& fields = form.fields; 698 const std::vector<FormField>& fields = form.fields;
703 ASSERT_EQ(3U, fields.size()); 699 ASSERT_EQ(3U, fields.size());
704 EXPECT_EQ(FormField(string16(), 700 EXPECT_EQ(FormField(string16(),
705 ASCIIToUTF16("firstname"), 701 ASCIIToUTF16("firstname"),
706 ASCIIToUTF16("John"), 702 ASCIIToUTF16("John"),
707 ASCIIToUTF16("text"), 703 ASCIIToUTF16("text"),
708 kDefaultMaxLength, 704 WebInputElement::defaultMaxLength(),
709 false), 705 false),
710 fields[0]); 706 fields[0]);
711 EXPECT_EQ(FormField(string16(), 707 EXPECT_EQ(FormField(string16(),
712 ASCIIToUTF16("lastname"), 708 ASCIIToUTF16("lastname"),
713 ASCIIToUTF16("Smith"), 709 ASCIIToUTF16("Smith"),
714 ASCIIToUTF16("text"), 710 ASCIIToUTF16("text"),
715 kDefaultMaxLength, 711 WebInputElement::defaultMaxLength(),
716 false), 712 false),
717 fields[1]); 713 fields[1]);
718 EXPECT_EQ(FormField(string16(), 714 EXPECT_EQ(FormField(string16(),
719 ASCIIToUTF16("email"), 715 ASCIIToUTF16("email"),
720 ASCIIToUTF16("john@example.com"), 716 ASCIIToUTF16("john@example.com"),
721 ASCIIToUTF16("text"), 717 ASCIIToUTF16("text"),
722 kDefaultMaxLength, 718 WebInputElement::defaultMaxLength(),
723 false), 719 false),
724 fields[2]); 720 fields[2]);
725 } 721 }
726 722
727 TEST_F(FormManagerTest, FillForm) { 723 TEST_F(FormManagerTest, FillForm) {
728 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" 724 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
729 " <INPUT type=\"text\" id=\"firstname\"/>" 725 " <INPUT type=\"text\" id=\"firstname\"/>"
730 " <INPUT type=\"text\" id=\"lastname\"/>" 726 " <INPUT type=\"text\" id=\"lastname\"/>"
731 " <INPUT type=\"hidden\" id=\"imhidden\"/>" 727 " <INPUT type=\"hidden\" id=\"imhidden\"/>"
732 " <INPUT type=\"text\" id=\"notempty\" value=\"Hi\"/>" 728 " <INPUT type=\"text\" id=\"notempty\" value=\"Hi\"/>"
(...skipping 24 matching lines...) Expand all
757 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 753 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
758 EXPECT_EQ(GURL(web_frame->url()), form.origin); 754 EXPECT_EQ(GURL(web_frame->url()), form.origin);
759 EXPECT_EQ(GURL("http://buh.com"), form.action); 755 EXPECT_EQ(GURL("http://buh.com"), form.action);
760 756
761 const std::vector<FormField>& fields = form.fields; 757 const std::vector<FormField>& fields = form.fields;
762 ASSERT_EQ(5U, fields.size()); 758 ASSERT_EQ(5U, fields.size());
763 EXPECT_EQ(FormField(string16(), 759 EXPECT_EQ(FormField(string16(),
764 ASCIIToUTF16("firstname"), 760 ASCIIToUTF16("firstname"),
765 string16(), 761 string16(),
766 ASCIIToUTF16("text"), 762 ASCIIToUTF16("text"),
767 kDefaultMaxLength, 763 WebInputElement::defaultMaxLength(),
768 false), 764 false),
769 fields[0]); 765 fields[0]);
770 EXPECT_EQ(FormField(string16(), 766 EXPECT_EQ(FormField(string16(),
771 ASCIIToUTF16("lastname"), 767 ASCIIToUTF16("lastname"),
772 string16(), 768 string16(),
773 ASCIIToUTF16("text"), 769 ASCIIToUTF16("text"),
774 kDefaultMaxLength, 770 WebInputElement::defaultMaxLength(),
775 false), 771 false),
776 fields[1]); 772 fields[1]);
777 EXPECT_EQ(FormField(string16(), 773 EXPECT_EQ(FormField(string16(),
778 ASCIIToUTF16("notempty"), 774 ASCIIToUTF16("notempty"),
779 ASCIIToUTF16("Hi"), 775 ASCIIToUTF16("Hi"),
780 ASCIIToUTF16("text"), 776 ASCIIToUTF16("text"),
781 kDefaultMaxLength, 777 WebInputElement::defaultMaxLength(),
782 false), 778 false),
783 fields[2]); 779 fields[2]);
784 EXPECT_EQ(FormField(string16(), 780 EXPECT_EQ(FormField(string16(),
785 ASCIIToUTF16("noautocomplete"), 781 ASCIIToUTF16("noautocomplete"),
786 string16(), 782 string16(),
787 ASCIIToUTF16("text"), 783 ASCIIToUTF16("text"),
788 kDefaultMaxLength, 784 WebInputElement::defaultMaxLength(),
789 false), 785 false),
790 fields[3]); 786 fields[3]);
791 EXPECT_EQ(FormField(string16(), 787 EXPECT_EQ(FormField(string16(),
792 ASCIIToUTF16("notenabled"), 788 ASCIIToUTF16("notenabled"),
793 string16(), 789 string16(),
794 ASCIIToUTF16("text"), 790 ASCIIToUTF16("text"),
795 kDefaultMaxLength, 791 WebInputElement::defaultMaxLength(),
796 false), 792 false),
797 fields[4]); 793 fields[4]);
798 794
799 // Fill the form. 795 // Fill the form.
800 form.fields[0].set_value(ASCIIToUTF16("Wyatt")); 796 form.fields[0].set_value(ASCIIToUTF16("Wyatt"));
801 form.fields[1].set_value(ASCIIToUTF16("Earp")); 797 form.fields[1].set_value(ASCIIToUTF16("Earp"));
802 form.fields[2].set_value(ASCIIToUTF16("Alpha")); 798 form.fields[2].set_value(ASCIIToUTF16("Alpha"));
803 form.fields[3].set_value(ASCIIToUTF16("Beta")); 799 form.fields[3].set_value(ASCIIToUTF16("Beta"));
804 form.fields[4].set_value(ASCIIToUTF16("Gamma")); 800 form.fields[4].set_value(ASCIIToUTF16("Gamma"));
805 EXPECT_TRUE(form_manager.FillForm(form, input_element)); 801 EXPECT_TRUE(form_manager.FillForm(form, input_element));
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 865 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
870 EXPECT_EQ(GURL(web_frame->url()), form.origin); 866 EXPECT_EQ(GURL(web_frame->url()), form.origin);
871 EXPECT_EQ(GURL("http://buh.com"), form.action); 867 EXPECT_EQ(GURL("http://buh.com"), form.action);
872 868
873 const std::vector<FormField>& fields = form.fields; 869 const std::vector<FormField>& fields = form.fields;
874 ASSERT_EQ(5U, fields.size()); 870 ASSERT_EQ(5U, fields.size());
875 EXPECT_EQ(FormField(string16(), 871 EXPECT_EQ(FormField(string16(),
876 ASCIIToUTF16("firstname"), 872 ASCIIToUTF16("firstname"),
877 string16(), 873 string16(),
878 ASCIIToUTF16("text"), 874 ASCIIToUTF16("text"),
879 kDefaultMaxLength, 875 WebInputElement::defaultMaxLength(),
880 false), 876 false),
881 fields[0]); 877 fields[0]);
882 EXPECT_EQ(FormField(string16(), 878 EXPECT_EQ(FormField(string16(),
883 ASCIIToUTF16("lastname"), 879 ASCIIToUTF16("lastname"),
884 string16(), 880 string16(),
885 ASCIIToUTF16("text"), 881 ASCIIToUTF16("text"),
886 kDefaultMaxLength, 882 WebInputElement::defaultMaxLength(),
887 false), 883 false),
888 fields[1]); 884 fields[1]);
889 EXPECT_EQ(FormField(string16(), 885 EXPECT_EQ(FormField(string16(),
890 ASCIIToUTF16("notempty"), 886 ASCIIToUTF16("notempty"),
891 ASCIIToUTF16("Hi"), 887 ASCIIToUTF16("Hi"),
892 ASCIIToUTF16("text"), 888 ASCIIToUTF16("text"),
893 kDefaultMaxLength, 889 WebInputElement::defaultMaxLength(),
894 false), 890 false),
895 fields[2]); 891 fields[2]);
896 EXPECT_EQ(FormField(string16(), 892 EXPECT_EQ(FormField(string16(),
897 ASCIIToUTF16("noautocomplete"), 893 ASCIIToUTF16("noautocomplete"),
898 string16(), 894 string16(),
899 ASCIIToUTF16("text"), 895 ASCIIToUTF16("text"),
900 kDefaultMaxLength, 896 WebInputElement::defaultMaxLength(),
901 false), 897 false),
902 fields[3]); 898 fields[3]);
903 EXPECT_EQ(FormField(string16(), 899 EXPECT_EQ(FormField(string16(),
904 ASCIIToUTF16("notenabled"), 900 ASCIIToUTF16("notenabled"),
905 string16(), 901 string16(),
906 ASCIIToUTF16("text"), 902 ASCIIToUTF16("text"),
907 kDefaultMaxLength, 903 WebInputElement::defaultMaxLength(),
908 false), 904 false),
909 fields[4]); 905 fields[4]);
910 906
911 // Preview the form. 907 // Preview the form.
912 form.fields[0].set_value(ASCIIToUTF16("Wyatt")); 908 form.fields[0].set_value(ASCIIToUTF16("Wyatt"));
913 form.fields[1].set_value(ASCIIToUTF16("Earp")); 909 form.fields[1].set_value(ASCIIToUTF16("Earp"));
914 form.fields[2].set_value(ASCIIToUTF16("Alpha")); 910 form.fields[2].set_value(ASCIIToUTF16("Alpha"));
915 form.fields[3].set_value(ASCIIToUTF16("Beta")); 911 form.fields[3].set_value(ASCIIToUTF16("Beta"));
916 form.fields[4].set_value(ASCIIToUTF16("Gamma")); 912 form.fields[4].set_value(ASCIIToUTF16("Gamma"));
917 EXPECT_TRUE(form_manager.PreviewForm(form, input_element)); 913 EXPECT_TRUE(form_manager.PreviewForm(form, input_element));
(...skipping 638 matching lines...) Expand 10 before | Expand all | Expand 10 after
1556 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 1552 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
1557 EXPECT_EQ(GURL(web_frame->url()), form.origin); 1553 EXPECT_EQ(GURL(web_frame->url()), form.origin);
1558 EXPECT_EQ(GURL("http://buh.com"), form.action); 1554 EXPECT_EQ(GURL("http://buh.com"), form.action);
1559 1555
1560 const std::vector<FormField>& fields = form.fields; 1556 const std::vector<FormField>& fields = form.fields;
1561 ASSERT_EQ(3U, fields.size()); 1557 ASSERT_EQ(3U, fields.size());
1562 EXPECT_EQ(FormField(string16(), 1558 EXPECT_EQ(FormField(string16(),
1563 ASCIIToUTF16("firstname"), 1559 ASCIIToUTF16("firstname"),
1564 string16(), 1560 string16(),
1565 ASCIIToUTF16("text"), 1561 ASCIIToUTF16("text"),
1566 kDefaultMaxLength, 1562 WebInputElement::defaultMaxLength(),
1567 false), 1563 false),
1568 fields[0]); 1564 fields[0]);
1569 EXPECT_EQ(FormField(string16(), 1565 EXPECT_EQ(FormField(string16(),
1570 ASCIIToUTF16("lastname"), 1566 ASCIIToUTF16("lastname"),
1571 string16(), 1567 string16(),
1572 ASCIIToUTF16("text"), 1568 ASCIIToUTF16("text"),
1573 kDefaultMaxLength, 1569 WebInputElement::defaultMaxLength(),
1574 false), 1570 false),
1575 fields[1]); 1571 fields[1]);
1576 EXPECT_EQ(FormField(string16(), 1572 EXPECT_EQ(FormField(string16(),
1577 ASCIIToUTF16("email"), 1573 ASCIIToUTF16("email"),
1578 string16(), 1574 string16(),
1579 ASCIIToUTF16("text"), 1575 ASCIIToUTF16("text"),
1580 kDefaultMaxLength, 1576 WebInputElement::defaultMaxLength(),
1581 false), 1577 false),
1582 fields[2]); 1578 fields[2]);
1583 1579
1584 // Fill the form. 1580 // Fill the form.
1585 form.fields[0].set_value(ASCIIToUTF16("Brother")); 1581 form.fields[0].set_value(ASCIIToUTF16("Brother"));
1586 form.fields[1].set_value(ASCIIToUTF16("Jonathan")); 1582 form.fields[1].set_value(ASCIIToUTF16("Jonathan"));
1587 form.fields[2].set_value(ASCIIToUTF16("brotherj@example.com")); 1583 form.fields[2].set_value(ASCIIToUTF16("brotherj@example.com"));
1588 EXPECT_TRUE(form_manager.FillForm(form, WebNode())); 1584 EXPECT_TRUE(form_manager.FillForm(form, WebNode()));
1589 1585
1590 // Find the newly-filled form that contains the input element. 1586 // Find the newly-filled form that contains the input element.
1591 FormData form2; 1587 FormData form2;
1592 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( 1588 EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
1593 input_element, FormManager::REQUIRE_NONE, &form2)); 1589 input_element, FormManager::REQUIRE_NONE, &form2));
1594 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); 1590 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
1595 EXPECT_EQ(GURL(web_frame->url()), form2.origin); 1591 EXPECT_EQ(GURL(web_frame->url()), form2.origin);
1596 EXPECT_EQ(GURL("http://buh.com"), form2.action); 1592 EXPECT_EQ(GURL("http://buh.com"), form2.action);
1597 1593
1598 const std::vector<FormField>& fields2 = form2.fields; 1594 const std::vector<FormField>& fields2 = form2.fields;
1599 ASSERT_EQ(3U, fields2.size()); 1595 ASSERT_EQ(3U, fields2.size());
1600 EXPECT_TRUE(fields2[0].StrictlyEqualsHack( 1596 EXPECT_TRUE(fields2[0].StrictlyEqualsHack(
1601 FormField(string16(), 1597 FormField(string16(),
1602 ASCIIToUTF16("firstname"), 1598 ASCIIToUTF16("firstname"),
1603 ASCIIToUTF16("Brother"), 1599 ASCIIToUTF16("Brother"),
1604 ASCIIToUTF16("text"), 1600 ASCIIToUTF16("text"),
1605 kDefaultMaxLength, 1601 WebInputElement::defaultMaxLength(),
1606 false))); 1602 false)));
1607 EXPECT_TRUE(fields2[1].StrictlyEqualsHack( 1603 EXPECT_TRUE(fields2[1].StrictlyEqualsHack(
1608 FormField(string16(), 1604 FormField(string16(),
1609 ASCIIToUTF16("lastname"), 1605 ASCIIToUTF16("lastname"),
1610 ASCIIToUTF16("Jonathan"), 1606 ASCIIToUTF16("Jonathan"),
1611 ASCIIToUTF16("text"), 1607 ASCIIToUTF16("text"),
1612 kDefaultMaxLength, 1608 WebInputElement::defaultMaxLength(),
1613 false))); 1609 false)));
1614 EXPECT_TRUE(fields2[2].StrictlyEqualsHack( 1610 EXPECT_TRUE(fields2[2].StrictlyEqualsHack(
1615 FormField(string16(), 1611 FormField(string16(),
1616 ASCIIToUTF16("email"), 1612 ASCIIToUTF16("email"),
1617 ASCIIToUTF16("brotherj@example.com"), 1613 ASCIIToUTF16("brotherj@example.com"),
1618 ASCIIToUTF16("text"), 1614 ASCIIToUTF16("text"),
1619 kDefaultMaxLength, 1615 WebInputElement::defaultMaxLength(),
1620 false))); 1616 false)));
1621 } 1617 }
1622 1618
1623 // This test sends a FormData object to FillForm with more fields than are in 1619 // This test sends a FormData object to FillForm with more fields than are in
1624 // the cached WebFormElement. In this case, we only fill out the fields that 1620 // the cached WebFormElement. In this case, we only fill out the fields that
1625 // match between the FormData object and the WebFormElement. 1621 // match between the FormData object and the WebFormElement.
1626 TEST_F(FormManagerTest, FillFormMoreFormDataFields) { 1622 TEST_F(FormManagerTest, FillFormMoreFormDataFields) {
1627 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" 1623 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
1628 " <INPUT type=\"text\" id=\"firstname\"/>" 1624 " <INPUT type=\"text\" id=\"firstname\"/>"
1629 " <INPUT type=\"text\" id=\"middlename\"/>" 1625 " <INPUT type=\"text\" id=\"middlename\"/>"
(...skipping 19 matching lines...) Expand all
1649 // middlename 1645 // middlename
1650 // second 1646 // second
1651 // lastname 1647 // lastname
1652 // postfix 1648 // postfix
1653 FormData* form = &forms[0]; 1649 FormData* form = &forms[0];
1654 1650
1655 FormField field1(string16(), 1651 FormField field1(string16(),
1656 ASCIIToUTF16("prefix"), 1652 ASCIIToUTF16("prefix"),
1657 string16(), 1653 string16(),
1658 ASCIIToUTF16("text"), 1654 ASCIIToUTF16("text"),
1659 kDefaultMaxLength, 1655 WebInputElement::defaultMaxLength(),
1660 false); 1656 false);
1661 form->fields.insert(form->fields.begin(), field1); 1657 form->fields.insert(form->fields.begin(), field1);
1662 1658
1663 FormField field2(string16(), 1659 FormField field2(string16(),
1664 ASCIIToUTF16("hidden"), 1660 ASCIIToUTF16("hidden"),
1665 string16(), 1661 string16(),
1666 ASCIIToUTF16("text"), 1662 ASCIIToUTF16("text"),
1667 kDefaultMaxLength, 1663 WebInputElement::defaultMaxLength(),
1668 false); 1664 false);
1669 form->fields.insert(form->fields.begin() + 2, field2); 1665 form->fields.insert(form->fields.begin() + 2, field2);
1670 1666
1671 FormField field3(string16(), 1667 FormField field3(string16(),
1672 ASCIIToUTF16("second"), 1668 ASCIIToUTF16("second"),
1673 string16(), 1669 string16(),
1674 ASCIIToUTF16("text"), 1670 ASCIIToUTF16("text"),
1675 kDefaultMaxLength, 1671 WebInputElement::defaultMaxLength(),
1676 false); 1672 false);
1677 form->fields.insert(form->fields.begin() + 4, field3); 1673 form->fields.insert(form->fields.begin() + 4, field3);
1678 1674
1679 FormField field4(string16(), 1675 FormField field4(string16(),
1680 ASCIIToUTF16("postfix"), 1676 ASCIIToUTF16("postfix"),
1681 string16(), 1677 string16(),
1682 ASCIIToUTF16("text"), 1678 ASCIIToUTF16("text"),
1683 kDefaultMaxLength, 1679 WebInputElement::defaultMaxLength(),
1684 false); 1680 false);
1685 form->fields.insert(form->fields.begin() + 6, field4); 1681 form->fields.insert(form->fields.begin() + 6, field4);
1686 1682
1687 // Fill the form. 1683 // Fill the form.
1688 form->fields[0].set_value(ASCIIToUTF16("Alpha")); 1684 form->fields[0].set_value(ASCIIToUTF16("Alpha"));
1689 form->fields[1].set_value(ASCIIToUTF16("Brother")); 1685 form->fields[1].set_value(ASCIIToUTF16("Brother"));
1690 form->fields[2].set_value(ASCIIToUTF16("Abracadabra")); 1686 form->fields[2].set_value(ASCIIToUTF16("Abracadabra"));
1691 form->fields[3].set_value(ASCIIToUTF16("Joseph")); 1687 form->fields[3].set_value(ASCIIToUTF16("Joseph"));
1692 form->fields[4].set_value(ASCIIToUTF16("Beta")); 1688 form->fields[4].set_value(ASCIIToUTF16("Beta"));
1693 form->fields[5].set_value(ASCIIToUTF16("Jonathan")); 1689 form->fields[5].set_value(ASCIIToUTF16("Jonathan"));
1694 form->fields[6].set_value(ASCIIToUTF16("Omega")); 1690 form->fields[6].set_value(ASCIIToUTF16("Omega"));
1695 EXPECT_TRUE(form_manager.FillForm(*form, WebNode())); 1691 EXPECT_TRUE(form_manager.FillForm(*form, WebNode()));
1696 1692
1697 // Get the input element we want to find. 1693 // Get the input element we want to find.
1698 WebElement element = web_frame->document().getElementById("firstname"); 1694 WebElement element = web_frame->document().getElementById("firstname");
1699 WebInputElement input_element = element.to<WebInputElement>(); 1695 WebInputElement input_element = element.to<WebInputElement>();
1700 1696
1701 // Find the newly-filled form that contains the input element. 1697 // Find the newly-filled form that contains the input element.
1702 FormData form2; 1698 FormData form2;
1703 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( 1699 EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
1704 input_element, FormManager::REQUIRE_NONE, &form2)); 1700 input_element, FormManager::REQUIRE_NONE, &form2));
1705 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); 1701 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
1706 EXPECT_EQ(GURL(web_frame->url()), form2.origin); 1702 EXPECT_EQ(GURL(web_frame->url()), form2.origin);
1707 EXPECT_EQ(GURL("http://buh.com"), form2.action); 1703 EXPECT_EQ(GURL("http://buh.com"), form2.action);
1708 1704
1709 const std::vector<FormField>& fields = form2.fields; 1705 const std::vector<FormField>& fields = form2.fields;
1710 ASSERT_EQ(3U, fields.size()); 1706 ASSERT_EQ(3U, fields.size());
1711 EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(), 1707 EXPECT_TRUE(fields[0].StrictlyEqualsHack(
1712 ASCIIToUTF16("firstname"), 1708 FormField(string16(),
1713 ASCIIToUTF16("Brother"), 1709 ASCIIToUTF16("firstname"),
1714 ASCIIToUTF16("text"), 1710 ASCIIToUTF16("Brother"),
1715 kDefaultMaxLength, 1711 ASCIIToUTF16("text"),
1716 false))); 1712 WebInputElement::defaultMaxLength(),
1717 EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(), 1713 false)));
1718 ASCIIToUTF16("middlename"), 1714 EXPECT_TRUE(fields[1].StrictlyEqualsHack(
1719 ASCIIToUTF16("Joseph"), 1715 FormField(string16(),
1720 ASCIIToUTF16("text"), 1716 ASCIIToUTF16("middlename"),
1721 kDefaultMaxLength, 1717 ASCIIToUTF16("Joseph"),
1722 false))); 1718 ASCIIToUTF16("text"),
1723 EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(), 1719 WebInputElement::defaultMaxLength(),
1724 ASCIIToUTF16("lastname"), 1720 false)));
1725 ASCIIToUTF16("Jonathan"), 1721 EXPECT_TRUE(fields[2].StrictlyEqualsHack(
1726 ASCIIToUTF16("text"), 1722 FormField(string16(),
1727 kDefaultMaxLength, 1723 ASCIIToUTF16("lastname"),
1728 false))); 1724 ASCIIToUTF16("Jonathan"),
1725 ASCIIToUTF16("text"),
1726 WebInputElement::defaultMaxLength(),
1727 false)));
1729 } 1728 }
1730 1729
1731 // This test sends a FormData object to FillForm with fewer fields than are in 1730 // This test sends a FormData object to FillForm with fewer fields than are in
1732 // the cached WebFormElement. In this case, we only fill out the fields that 1731 // the cached WebFormElement. In this case, we only fill out the fields that
1733 // match between the FormData object and the WebFormElement. 1732 // match between the FormData object and the WebFormElement.
1734 TEST_F(FormManagerTest, FillFormFewerFormDataFields) { 1733 TEST_F(FormManagerTest, FillFormFewerFormDataFields) {
1735 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" 1734 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
1736 " <INPUT type=\"text\" id=\"prefix\"/>" 1735 " <INPUT type=\"text\" id=\"prefix\"/>"
1737 " <INPUT type=\"text\" id=\"firstname\"/>" 1736 " <INPUT type=\"text\" id=\"firstname\"/>"
1738 " <INPUT type=\"text\" id=\"hidden\"/>" 1737 " <INPUT type=\"text\" id=\"hidden\"/>"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1777 // Find the newly-filled form that contains the input element. 1776 // Find the newly-filled form that contains the input element.
1778 FormData form2; 1777 FormData form2;
1779 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( 1778 EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
1780 input_element, FormManager::REQUIRE_NONE, &form2)); 1779 input_element, FormManager::REQUIRE_NONE, &form2));
1781 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); 1780 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
1782 EXPECT_EQ(GURL(web_frame->url()), form2.origin); 1781 EXPECT_EQ(GURL(web_frame->url()), form2.origin);
1783 EXPECT_EQ(GURL("http://buh.com"), form2.action); 1782 EXPECT_EQ(GURL("http://buh.com"), form2.action);
1784 1783
1785 const std::vector<FormField>& fields = form2.fields; 1784 const std::vector<FormField>& fields = form2.fields;
1786 ASSERT_EQ(7U, fields.size()); 1785 ASSERT_EQ(7U, fields.size());
1787 EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(), 1786 EXPECT_TRUE(fields[0].StrictlyEqualsHack(
1788 ASCIIToUTF16("prefix"), 1787 FormField(string16(),
1789 string16(), 1788 ASCIIToUTF16("prefix"),
1790 ASCIIToUTF16("text"), 1789 string16(),
1791 kDefaultMaxLength, 1790 ASCIIToUTF16("text"),
1792 false))); 1791 WebInputElement::defaultMaxLength(),
1793 EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(), 1792 false)));
1794 ASCIIToUTF16("firstname"), 1793 EXPECT_TRUE(fields[1].StrictlyEqualsHack(
1795 ASCIIToUTF16("Brother"), 1794 FormField(string16(),
1796 ASCIIToUTF16("text"), 1795 ASCIIToUTF16("firstname"),
1797 kDefaultMaxLength, 1796 ASCIIToUTF16("Brother"),
1798 false))); 1797 ASCIIToUTF16("text"),
1799 EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(), 1798 WebInputElement::defaultMaxLength(),
1800 ASCIIToUTF16("hidden"), 1799 false)));
1801 string16(), 1800 EXPECT_TRUE(fields[2].StrictlyEqualsHack(
1802 ASCIIToUTF16("text"), 1801 FormField(string16(),
1803 kDefaultMaxLength, 1802 ASCIIToUTF16("hidden"),
1804 false))); 1803 string16(),
1805 EXPECT_TRUE(fields[3].StrictlyEqualsHack(FormField(string16(), 1804 ASCIIToUTF16("text"),
1806 ASCIIToUTF16("middlename"), 1805 WebInputElement::defaultMaxLength(),
1807 ASCIIToUTF16("Joseph"), 1806 false)));
1808 ASCIIToUTF16("text"), 1807 EXPECT_TRUE(fields[3].StrictlyEqualsHack(
1809 kDefaultMaxLength, 1808 FormField(string16(),
1810 false))); 1809 ASCIIToUTF16("middlename"),
1811 EXPECT_TRUE(fields[4].StrictlyEqualsHack(FormField(string16(), 1810 ASCIIToUTF16("Joseph"),
1812 ASCIIToUTF16("second"), 1811 ASCIIToUTF16("text"),
1813 string16(), 1812 WebInputElement::defaultMaxLength(),
1814 ASCIIToUTF16("text"), 1813 false)));
1815 kDefaultMaxLength, 1814 EXPECT_TRUE(fields[4].StrictlyEqualsHack(
1816 false))); 1815 FormField(string16(),
1817 EXPECT_TRUE(fields[5].StrictlyEqualsHack(FormField(string16(), 1816 ASCIIToUTF16("second"),
1818 ASCIIToUTF16("lastname"), 1817 string16(),
1819 ASCIIToUTF16("Jonathan"), 1818 ASCIIToUTF16("text"),
1820 ASCIIToUTF16("text"), 1819 WebInputElement::defaultMaxLength(),
1821 kDefaultMaxLength, 1820 false)));
1822 false))); 1821 EXPECT_TRUE(fields[5].StrictlyEqualsHack(
1823 EXPECT_TRUE(fields[6].StrictlyEqualsHack(FormField(string16(), 1822 FormField(string16(),
1824 ASCIIToUTF16("postfix"), 1823 ASCIIToUTF16("lastname"),
1825 string16(), 1824 ASCIIToUTF16("Jonathan"),
1826 ASCIIToUTF16("text"), 1825 ASCIIToUTF16("text"),
1827 kDefaultMaxLength, 1826 WebInputElement::defaultMaxLength(),
1828 false))); 1827 false)));
1828 EXPECT_TRUE(fields[6].StrictlyEqualsHack(
1829 FormField(string16(),
1830 ASCIIToUTF16("postfix"),
1831 string16(),
1832 ASCIIToUTF16("text"),
1833 WebInputElement::defaultMaxLength(),
1834 false)));
1829 } 1835 }
1830 1836
1831 // This test sends a FormData object to FillForm with a field changed from 1837 // This test sends a FormData object to FillForm with a field changed from
1832 // those in the cached WebFormElement. In this case, we only fill out the 1838 // those in the cached WebFormElement. In this case, we only fill out the
1833 // fields that match between the FormData object and the WebFormElement. 1839 // fields that match between the FormData object and the WebFormElement.
1834 TEST_F(FormManagerTest, FillFormChangedFormDataFields) { 1840 TEST_F(FormManagerTest, FillFormChangedFormDataFields) {
1835 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" 1841 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
1836 " <INPUT type=\"text\" id=\"firstname\"/>" 1842 " <INPUT type=\"text\" id=\"firstname\"/>"
1837 " <INPUT type=\"text\" id=\"middlename\"/>" 1843 " <INPUT type=\"text\" id=\"middlename\"/>"
1838 " <INPUT type=\"text\" id=\"lastname\"/>" 1844 " <INPUT type=\"text\" id=\"lastname\"/>"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1878 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); 1884 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
1879 EXPECT_EQ(GURL(web_frame->url()), form2.origin); 1885 EXPECT_EQ(GURL(web_frame->url()), form2.origin);
1880 EXPECT_EQ(GURL("http://buh.com"), form2.action); 1886 EXPECT_EQ(GURL("http://buh.com"), form2.action);
1881 1887
1882 const std::vector<FormField>& fields = form2.fields; 1888 const std::vector<FormField>& fields = form2.fields;
1883 ASSERT_EQ(3U, fields.size()); 1889 ASSERT_EQ(3U, fields.size());
1884 EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(), 1890 EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(),
1885 ASCIIToUTF16("firstname"), 1891 ASCIIToUTF16("firstname"),
1886 ASCIIToUTF16("Brother"), 1892 ASCIIToUTF16("Brother"),
1887 ASCIIToUTF16("text"), 1893 ASCIIToUTF16("text"),
1888 kDefaultMaxLength, 1894 WebInputElement::defaultMaxLength(),
1889 false))); 1895 false)));
1890 EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(), 1896 EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(),
1891 ASCIIToUTF16("middlename"), 1897 ASCIIToUTF16("middlename"),
1892 string16(), 1898 string16(),
1893 ASCIIToUTF16("text"), 1899 ASCIIToUTF16("text"),
1894 kDefaultMaxLength, 1900 WebInputElement::defaultMaxLength(),
1895 false))); 1901 false)));
1896 EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(), 1902 EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(),
1897 ASCIIToUTF16("lastname"), 1903 ASCIIToUTF16("lastname"),
1898 ASCIIToUTF16("Jonathan"), 1904 ASCIIToUTF16("Jonathan"),
1899 ASCIIToUTF16("text"), 1905 ASCIIToUTF16("text"),
1900 kDefaultMaxLength, 1906 WebInputElement::defaultMaxLength(),
1901 false))); 1907 false)));
1902 } 1908 }
1903 1909
1904 // This test sends a FormData object to FillForm with fewer fields than are in 1910 // This test sends a FormData object to FillForm with fewer fields than are in
1905 // the cached WebFormElement. In this case, we only fill out the fields that 1911 // the cached WebFormElement. In this case, we only fill out the fields that
1906 // match between the FormData object and the WebFormElement. 1912 // match between the FormData object and the WebFormElement.
1907 TEST_F(FormManagerTest, FillFormExtraFieldInCache) { 1913 TEST_F(FormManagerTest, FillFormExtraFieldInCache) {
1908 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" 1914 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
1909 " <INPUT type=\"text\" id=\"firstname\"/>" 1915 " <INPUT type=\"text\" id=\"firstname\"/>"
1910 " <INPUT type=\"text\" id=\"middlename\"/>" 1916 " <INPUT type=\"text\" id=\"middlename\"/>"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1944 // Find the newly-filled form that contains the input element. 1950 // Find the newly-filled form that contains the input element.
1945 FormData form2; 1951 FormData form2;
1946 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( 1952 EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
1947 input_element, FormManager::REQUIRE_NONE, &form2)); 1953 input_element, FormManager::REQUIRE_NONE, &form2));
1948 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); 1954 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
1949 EXPECT_EQ(GURL(web_frame->url()), form2.origin); 1955 EXPECT_EQ(GURL(web_frame->url()), form2.origin);
1950 EXPECT_EQ(GURL("http://buh.com"), form2.action); 1956 EXPECT_EQ(GURL("http://buh.com"), form2.action);
1951 1957
1952 const std::vector<FormField>& fields = form2.fields; 1958 const std::vector<FormField>& fields = form2.fields;
1953 ASSERT_EQ(4U, fields.size()); 1959 ASSERT_EQ(4U, fields.size());
1954 EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(), 1960 EXPECT_TRUE(fields[0].StrictlyEqualsHack(
1955 ASCIIToUTF16("firstname"), 1961 FormField(string16(),
1956 ASCIIToUTF16("Brother"), 1962 ASCIIToUTF16("firstname"),
1957 ASCIIToUTF16("text"), 1963 ASCIIToUTF16("Brother"),
1958 kDefaultMaxLength, 1964 ASCIIToUTF16("text"),
1959 false))); 1965 WebInputElement::defaultMaxLength(),
1960 EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(), 1966 false)));
1961 ASCIIToUTF16("middlename"), 1967 EXPECT_TRUE(fields[1].StrictlyEqualsHack(
1962 ASCIIToUTF16("Joseph"), 1968 FormField(string16(),
1963 ASCIIToUTF16("text"), 1969 ASCIIToUTF16("middlename"),
1964 kDefaultMaxLength, 1970 ASCIIToUTF16("Joseph"),
1965 false))); 1971 ASCIIToUTF16("text"),
1966 EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(), 1972 WebInputElement::defaultMaxLength(),
1967 ASCIIToUTF16("lastname"), 1973 false)));
1968 ASCIIToUTF16("Jonathan"), 1974 EXPECT_TRUE(fields[2].StrictlyEqualsHack(
1969 ASCIIToUTF16("text"), 1975 FormField(string16(),
1970 kDefaultMaxLength, 1976 ASCIIToUTF16("lastname"),
1971 false))); 1977 ASCIIToUTF16("Jonathan"),
1972 EXPECT_TRUE(fields[3].StrictlyEqualsHack(FormField(string16(), 1978 ASCIIToUTF16("text"),
1973 ASCIIToUTF16("postfix"), 1979 WebInputElement::defaultMaxLength(),
1974 string16(), 1980 false)));
1975 ASCIIToUTF16("text"), 1981 EXPECT_TRUE(fields[3].StrictlyEqualsHack(
1976 kDefaultMaxLength, 1982 FormField(string16(),
1977 false))); 1983 ASCIIToUTF16("postfix"),
1984 string16(),
1985 ASCIIToUTF16("text"),
1986 WebInputElement::defaultMaxLength(),
1987 false)));
1978 } 1988 }
1979 1989
1980 TEST_F(FormManagerTest, FillFormEmptyName) { 1990 TEST_F(FormManagerTest, FillFormEmptyName) {
1981 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" 1991 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
1982 " <INPUT type=\"text\" id=\"firstname\"/>" 1992 " <INPUT type=\"text\" id=\"firstname\"/>"
1983 " <INPUT type=\"text\" id=\"lastname\"/>" 1993 " <INPUT type=\"text\" id=\"lastname\"/>"
1984 " <INPUT type=\"text\" id=\"email\"/>" 1994 " <INPUT type=\"text\" id=\"email\"/>"
1985 " <INPUT type=\"submit\" value=\"Send\"/>" 1995 " <INPUT type=\"submit\" value=\"Send\"/>"
1986 "</FORM>"); 1996 "</FORM>");
1987 1997
(...skipping 19 matching lines...) Expand all
2007 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 2017 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
2008 EXPECT_EQ(GURL(web_frame->url()), form.origin); 2018 EXPECT_EQ(GURL(web_frame->url()), form.origin);
2009 EXPECT_EQ(GURL("http://buh.com"), form.action); 2019 EXPECT_EQ(GURL("http://buh.com"), form.action);
2010 2020
2011 const std::vector<FormField>& fields = form.fields; 2021 const std::vector<FormField>& fields = form.fields;
2012 ASSERT_EQ(3U, fields.size()); 2022 ASSERT_EQ(3U, fields.size());
2013 EXPECT_EQ(FormField(string16(), 2023 EXPECT_EQ(FormField(string16(),
2014 ASCIIToUTF16("firstname"), 2024 ASCIIToUTF16("firstname"),
2015 string16(), 2025 string16(),
2016 ASCIIToUTF16("text"), 2026 ASCIIToUTF16("text"),
2017 kDefaultMaxLength, 2027 WebInputElement::defaultMaxLength(),
2018 false), 2028 false),
2019 fields[0]); 2029 fields[0]);
2020 EXPECT_EQ(FormField(string16(), 2030 EXPECT_EQ(FormField(string16(),
2021 ASCIIToUTF16("lastname"), 2031 ASCIIToUTF16("lastname"),
2022 string16(), 2032 string16(),
2023 ASCIIToUTF16("text"), 2033 ASCIIToUTF16("text"),
2024 kDefaultMaxLength, 2034 WebInputElement::defaultMaxLength(),
2025 false), 2035 false),
2026 fields[1]); 2036 fields[1]);
2027 EXPECT_EQ(FormField(string16(), 2037 EXPECT_EQ(FormField(string16(),
2028 ASCIIToUTF16("email"), 2038 ASCIIToUTF16("email"),
2029 string16(), 2039 string16(),
2030 ASCIIToUTF16("text"), 2040 ASCIIToUTF16("text"),
2031 kDefaultMaxLength, 2041 WebInputElement::defaultMaxLength(),
2032 false), 2042 false),
2033 fields[2]); 2043 fields[2]);
2034 2044
2035 // Fill the form. 2045 // Fill the form.
2036 form.fields[0].set_value(ASCIIToUTF16("Wyatt")); 2046 form.fields[0].set_value(ASCIIToUTF16("Wyatt"));
2037 form.fields[1].set_value(ASCIIToUTF16("Earp")); 2047 form.fields[1].set_value(ASCIIToUTF16("Earp"));
2038 form.fields[2].set_value(ASCIIToUTF16("wyatt@example.com")); 2048 form.fields[2].set_value(ASCIIToUTF16("wyatt@example.com"));
2039 EXPECT_TRUE(form_manager.FillForm(form, WebNode())); 2049 EXPECT_TRUE(form_manager.FillForm(form, WebNode()));
2040 2050
2041 // Find the newly-filled form that contains the input element. 2051 // Find the newly-filled form that contains the input element.
2042 FormData form2; 2052 FormData form2;
2043 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( 2053 EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
2044 input_element, FormManager::REQUIRE_NONE, &form2)); 2054 input_element, FormManager::REQUIRE_NONE, &form2));
2045 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); 2055 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
2046 EXPECT_EQ(GURL(web_frame->url()), form2.origin); 2056 EXPECT_EQ(GURL(web_frame->url()), form2.origin);
2047 EXPECT_EQ(GURL("http://buh.com"), form2.action); 2057 EXPECT_EQ(GURL("http://buh.com"), form2.action);
2048 2058
2049 const std::vector<FormField>& fields2 = form2.fields; 2059 const std::vector<FormField>& fields2 = form2.fields;
2050 ASSERT_EQ(3U, fields2.size()); 2060 ASSERT_EQ(3U, fields2.size());
2051 EXPECT_EQ(FormField(string16(), 2061 EXPECT_EQ(FormField(string16(),
2052 ASCIIToUTF16("firstname"), 2062 ASCIIToUTF16("firstname"),
2053 ASCIIToUTF16("Wyatt"), 2063 ASCIIToUTF16("Wyatt"),
2054 ASCIIToUTF16("text"), 2064 ASCIIToUTF16("text"),
2055 kDefaultMaxLength, 2065 WebInputElement::defaultMaxLength(),
2056 false), 2066 false),
2057 fields2[0]); 2067 fields2[0]);
2058 EXPECT_EQ(FormField(string16(), 2068 EXPECT_EQ(FormField(string16(),
2059 ASCIIToUTF16("lastname"), 2069 ASCIIToUTF16("lastname"),
2060 ASCIIToUTF16("Earp"), 2070 ASCIIToUTF16("Earp"),
2061 ASCIIToUTF16("text"), 2071 ASCIIToUTF16("text"),
2062 kDefaultMaxLength, 2072 WebInputElement::defaultMaxLength(),
2063 false), 2073 false),
2064 fields2[1]); 2074 fields2[1]);
2065 EXPECT_EQ(FormField(string16(), 2075 EXPECT_EQ(FormField(string16(),
2066 ASCIIToUTF16("email"), 2076 ASCIIToUTF16("email"),
2067 ASCIIToUTF16("wyatt@example.com"), 2077 ASCIIToUTF16("wyatt@example.com"),
2068 ASCIIToUTF16("text"), 2078 ASCIIToUTF16("text"),
2069 kDefaultMaxLength, 2079 WebInputElement::defaultMaxLength(),
2070 false), 2080 false),
2071 fields2[2]); 2081 fields2[2]);
2072 } 2082 }
2073 2083
2074 TEST_F(FormManagerTest, FillFormEmptyFormNames) { 2084 TEST_F(FormManagerTest, FillFormEmptyFormNames) {
2075 LoadHTML("<FORM action=\"http://buh.com\" method=\"post\">" 2085 LoadHTML("<FORM action=\"http://buh.com\" method=\"post\">"
2076 " <INPUT type=\"text\" id=\"firstname\"/>" 2086 " <INPUT type=\"text\" id=\"firstname\"/>"
2077 " <INPUT type=\"text\" id=\"middlename\"/>" 2087 " <INPUT type=\"text\" id=\"middlename\"/>"
2078 " <INPUT type=\"text\" id=\"lastname\"/>" 2088 " <INPUT type=\"text\" id=\"lastname\"/>"
2079 " <INPUT type=\"submit\" value=\"Send\"/>" 2089 " <INPUT type=\"submit\" value=\"Send\"/>"
(...skipping 27 matching lines...) Expand all
2107 EXPECT_EQ(string16(), form.name); 2117 EXPECT_EQ(string16(), form.name);
2108 EXPECT_EQ(GURL(web_frame->url()), form.origin); 2118 EXPECT_EQ(GURL(web_frame->url()), form.origin);
2109 EXPECT_EQ(GURL("http://abc.com"), form.action); 2119 EXPECT_EQ(GURL("http://abc.com"), form.action);
2110 2120
2111 const std::vector<FormField>& fields = form.fields; 2121 const std::vector<FormField>& fields = form.fields;
2112 ASSERT_EQ(3U, fields.size()); 2122 ASSERT_EQ(3U, fields.size());
2113 EXPECT_EQ(FormField(string16(), 2123 EXPECT_EQ(FormField(string16(),
2114 ASCIIToUTF16("apple"), 2124 ASCIIToUTF16("apple"),
2115 string16(), 2125 string16(),
2116 ASCIIToUTF16("text"), 2126 ASCIIToUTF16("text"),
2117 kDefaultMaxLength, 2127 WebInputElement::defaultMaxLength(),
2118 false), 2128 false),
2119 fields[0]); 2129 fields[0]);
2120 EXPECT_EQ(FormField(string16(), 2130 EXPECT_EQ(FormField(string16(),
2121 ASCIIToUTF16("banana"), 2131 ASCIIToUTF16("banana"),
2122 string16(), 2132 string16(),
2123 ASCIIToUTF16("text"), 2133 ASCIIToUTF16("text"),
2124 kDefaultMaxLength, 2134 WebInputElement::defaultMaxLength(),
2125 false), 2135 false),
2126 fields[1]); 2136 fields[1]);
2127 EXPECT_EQ(FormField(string16(), 2137 EXPECT_EQ(FormField(string16(),
2128 ASCIIToUTF16("cantelope"), 2138 ASCIIToUTF16("cantelope"),
2129 string16(), 2139 string16(),
2130 ASCIIToUTF16("text"), 2140 ASCIIToUTF16("text"),
2131 kDefaultMaxLength, 2141 WebInputElement::defaultMaxLength(),
2132 false), 2142 false),
2133 fields[2]); 2143 fields[2]);
2134 2144
2135 // Fill the form. 2145 // Fill the form.
2136 form.fields[0].set_value(ASCIIToUTF16("Red")); 2146 form.fields[0].set_value(ASCIIToUTF16("Red"));
2137 form.fields[1].set_value(ASCIIToUTF16("Yellow")); 2147 form.fields[1].set_value(ASCIIToUTF16("Yellow"));
2138 form.fields[2].set_value(ASCIIToUTF16("Also Yellow")); 2148 form.fields[2].set_value(ASCIIToUTF16("Also Yellow"));
2139 EXPECT_TRUE(form_manager.FillForm(form, WebNode())); 2149 EXPECT_TRUE(form_manager.FillForm(form, WebNode()));
2140 2150
2141 // Find the newly-filled form that contains the input element. 2151 // Find the newly-filled form that contains the input element.
2142 FormData form2; 2152 FormData form2;
2143 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( 2153 EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
2144 input_element, FormManager::REQUIRE_NONE, &form2)); 2154 input_element, FormManager::REQUIRE_NONE, &form2));
2145 EXPECT_EQ(string16(), form2.name); 2155 EXPECT_EQ(string16(), form2.name);
2146 EXPECT_EQ(GURL(web_frame->url()), form2.origin); 2156 EXPECT_EQ(GURL(web_frame->url()), form2.origin);
2147 EXPECT_EQ(GURL("http://abc.com"), form2.action); 2157 EXPECT_EQ(GURL("http://abc.com"), form2.action);
2148 2158
2149 const std::vector<FormField>& fields2 = form2.fields; 2159 const std::vector<FormField>& fields2 = form2.fields;
2150 ASSERT_EQ(3U, fields2.size()); 2160 ASSERT_EQ(3U, fields2.size());
2151 EXPECT_EQ(FormField(string16(), 2161 EXPECT_EQ(FormField(string16(),
2152 ASCIIToUTF16("apple"), 2162 ASCIIToUTF16("apple"),
2153 ASCIIToUTF16("Red"), 2163 ASCIIToUTF16("Red"),
2154 ASCIIToUTF16("text"), 2164 ASCIIToUTF16("text"),
2155 kDefaultMaxLength, 2165 WebInputElement::defaultMaxLength(),
2156 false), 2166 false),
2157 fields2[0]); 2167 fields2[0]);
2158 EXPECT_EQ(FormField(string16(), 2168 EXPECT_EQ(FormField(string16(),
2159 ASCIIToUTF16("banana"), 2169 ASCIIToUTF16("banana"),
2160 ASCIIToUTF16("Yellow"), 2170 ASCIIToUTF16("Yellow"),
2161 ASCIIToUTF16("text"), 2171 ASCIIToUTF16("text"),
2162 kDefaultMaxLength, 2172 WebInputElement::defaultMaxLength(),
2163 false), 2173 false),
2164 fields2[1]); 2174 fields2[1]);
2165 EXPECT_EQ(FormField(string16(), 2175 EXPECT_EQ(FormField(string16(),
2166 ASCIIToUTF16("cantelope"), 2176 ASCIIToUTF16("cantelope"),
2167 ASCIIToUTF16("Also Yellow"), 2177 ASCIIToUTF16("Also Yellow"),
2168 ASCIIToUTF16("text"), 2178 ASCIIToUTF16("text"),
2169 kDefaultMaxLength, 2179 WebInputElement::defaultMaxLength(),
2170 false), 2180 false),
2171 fields2[2]); 2181 fields2[2]);
2172 } 2182 }
2173 2183
2174 TEST_F(FormManagerTest, ThreePartPhone) { 2184 TEST_F(FormManagerTest, ThreePartPhone) {
2175 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" 2185 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
2176 " Phone:" 2186 " Phone:"
2177 " <input type=\"text\" name=\"dayphone1\">" 2187 " <input type=\"text\" name=\"dayphone1\">"
2178 " -" 2188 " -"
2179 " <input type=\"text\" name=\"dayphone2\">" 2189 " <input type=\"text\" name=\"dayphone2\">"
(...skipping 20 matching lines...) Expand all
2200 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 2210 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
2201 EXPECT_EQ(GURL(frame->url()), form.origin); 2211 EXPECT_EQ(GURL(frame->url()), form.origin);
2202 EXPECT_EQ(GURL("http://cnn.com"), form.action); 2212 EXPECT_EQ(GURL("http://cnn.com"), form.action);
2203 2213
2204 const std::vector<FormField>& fields = form.fields; 2214 const std::vector<FormField>& fields = form.fields;
2205 ASSERT_EQ(4U, fields.size()); 2215 ASSERT_EQ(4U, fields.size());
2206 EXPECT_EQ(FormField(ASCIIToUTF16("Phone:"), 2216 EXPECT_EQ(FormField(ASCIIToUTF16("Phone:"),
2207 ASCIIToUTF16("dayphone1"), 2217 ASCIIToUTF16("dayphone1"),
2208 string16(), 2218 string16(),
2209 ASCIIToUTF16("text"), 2219 ASCIIToUTF16("text"),
2210 kDefaultMaxLength, 2220 WebInputElement::defaultMaxLength(),
2211 false), 2221 false),
2212 fields[0]); 2222 fields[0]);
2213 EXPECT_EQ(FormField(ASCIIToUTF16("-"), 2223 EXPECT_EQ(FormField(ASCIIToUTF16("-"),
2214 ASCIIToUTF16("dayphone2"), 2224 ASCIIToUTF16("dayphone2"),
2215 string16(), 2225 string16(),
2216 ASCIIToUTF16("text"), 2226 ASCIIToUTF16("text"),
2217 kDefaultMaxLength, 2227 WebInputElement::defaultMaxLength(),
2218 false), 2228 false),
2219 fields[1]); 2229 fields[1]);
2220 EXPECT_EQ(FormField(ASCIIToUTF16("-"), 2230 EXPECT_EQ(FormField(ASCIIToUTF16("-"),
2221 ASCIIToUTF16("dayphone3"), 2231 ASCIIToUTF16("dayphone3"),
2222 string16(), 2232 string16(),
2223 ASCIIToUTF16("text"), 2233 ASCIIToUTF16("text"),
2224 kDefaultMaxLength, 2234 WebInputElement::defaultMaxLength(),
2225 false), 2235 false),
2226 fields[2]); 2236 fields[2]);
2227 EXPECT_EQ(FormField(ASCIIToUTF16("ext.:"), 2237 EXPECT_EQ(FormField(ASCIIToUTF16("ext.:"),
2228 ASCIIToUTF16("dayphone4"), 2238 ASCIIToUTF16("dayphone4"),
2229 string16(), 2239 string16(),
2230 ASCIIToUTF16("text"), 2240 ASCIIToUTF16("text"),
2231 kDefaultMaxLength, 2241 WebInputElement::defaultMaxLength(),
2232 false), 2242 false),
2233 fields[3]); 2243 fields[3]);
2234 } 2244 }
2235 2245
2236 2246
2237 TEST_F(FormManagerTest, MaxLengthFields) { 2247 TEST_F(FormManagerTest, MaxLengthFields) {
2238 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" 2248 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
2239 " Phone:" 2249 " Phone:"
2240 " <input type=\"text\" maxlength=\"3\" name=\"dayphone1\">" 2250 " <input type=\"text\" maxlength=\"3\" name=\"dayphone1\">"
2241 " -" 2251 " -"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
2294 string16(), 2304 string16(),
2295 ASCIIToUTF16("text"), 2305 ASCIIToUTF16("text"),
2296 5, 2306 5,
2297 false), 2307 false),
2298 fields[3]); 2308 fields[3]);
2299 // When unspecified |size|, default is returned. 2309 // When unspecified |size|, default is returned.
2300 EXPECT_EQ(FormField(string16(), 2310 EXPECT_EQ(FormField(string16(),
2301 ASCIIToUTF16("default1"), 2311 ASCIIToUTF16("default1"),
2302 string16(), 2312 string16(),
2303 ASCIIToUTF16("text"), 2313 ASCIIToUTF16("text"),
2304 kDefaultMaxLength, 2314 WebInputElement::defaultMaxLength(),
2305 false), 2315 false),
2306 fields[4]); 2316 fields[4]);
2307 // When invalid |size|, default is returned. 2317 // When invalid |size|, default is returned.
2308 EXPECT_EQ(FormField(string16(), 2318 EXPECT_EQ(FormField(string16(),
2309 ASCIIToUTF16("invalid1"), 2319 ASCIIToUTF16("invalid1"),
2310 string16(), 2320 string16(),
2311 ASCIIToUTF16("text"), 2321 ASCIIToUTF16("text"),
2312 kDefaultMaxLength, 2322 WebInputElement::defaultMaxLength(),
2313 false), 2323 false),
2314 fields[5]); 2324 fields[5]);
2315 } 2325 }
2316 2326
2317 // This test re-creates the experience of typing in a field then selecting a 2327 // This test re-creates the experience of typing in a field then selecting a
2318 // profile from the AutoFill suggestions popup. The field that is being typed 2328 // profile from the AutoFill suggestions popup. The field that is being typed
2319 // into should be filled even though it's not technically empty. 2329 // into should be filled even though it's not technically empty.
2320 TEST_F(FormManagerTest, FillFormNonEmptyField) { 2330 TEST_F(FormManagerTest, FillFormNonEmptyField) {
2321 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" 2331 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
2322 " <INPUT type=\"text\" id=\"firstname\"/>" 2332 " <INPUT type=\"text\" id=\"firstname\"/>"
(...skipping 27 matching lines...) Expand all
2350 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 2360 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
2351 EXPECT_EQ(GURL(web_frame->url()), form.origin); 2361 EXPECT_EQ(GURL(web_frame->url()), form.origin);
2352 EXPECT_EQ(GURL("http://buh.com"), form.action); 2362 EXPECT_EQ(GURL("http://buh.com"), form.action);
2353 2363
2354 const std::vector<FormField>& fields = form.fields; 2364 const std::vector<FormField>& fields = form.fields;
2355 ASSERT_EQ(3U, fields.size()); 2365 ASSERT_EQ(3U, fields.size());
2356 EXPECT_EQ(FormField(string16(), 2366 EXPECT_EQ(FormField(string16(),
2357 ASCIIToUTF16("firstname"), 2367 ASCIIToUTF16("firstname"),
2358 string16(), 2368 string16(),
2359 ASCIIToUTF16("text"), 2369 ASCIIToUTF16("text"),
2360 kDefaultMaxLength, 2370 WebInputElement::defaultMaxLength(),
2361 false), 2371 false),
2362 fields[0]); 2372 fields[0]);
2363 EXPECT_EQ(FormField(string16(), 2373 EXPECT_EQ(FormField(string16(),
2364 ASCIIToUTF16("lastname"), 2374 ASCIIToUTF16("lastname"),
2365 string16(), 2375 string16(),
2366 ASCIIToUTF16("text"), 2376 ASCIIToUTF16("text"),
2367 kDefaultMaxLength, 2377 WebInputElement::defaultMaxLength(),
2368 false), 2378 false),
2369 fields[1]); 2379 fields[1]);
2370 EXPECT_EQ(FormField(string16(), 2380 EXPECT_EQ(FormField(string16(),
2371 ASCIIToUTF16("email"), 2381 ASCIIToUTF16("email"),
2372 string16(), 2382 string16(),
2373 ASCIIToUTF16("text"), 2383 ASCIIToUTF16("text"),
2374 kDefaultMaxLength, 2384 WebInputElement::defaultMaxLength(),
2375 false), 2385 false),
2376 fields[2]); 2386 fields[2]);
2377 2387
2378 // Fill the form. 2388 // Fill the form.
2379 form.fields[0].set_value(ASCIIToUTF16("Wyatt")); 2389 form.fields[0].set_value(ASCIIToUTF16("Wyatt"));
2380 form.fields[1].set_value(ASCIIToUTF16("Earp")); 2390 form.fields[1].set_value(ASCIIToUTF16("Earp"));
2381 form.fields[2].set_value(ASCIIToUTF16("wyatt@example.com")); 2391 form.fields[2].set_value(ASCIIToUTF16("wyatt@example.com"));
2382 EXPECT_TRUE(form_manager.FillForm(form, input_element)); 2392 EXPECT_TRUE(form_manager.FillForm(form, input_element));
2383 2393
2384 // Find the newly-filled form that contains the input element. 2394 // Find the newly-filled form that contains the input element.
2385 FormData form2; 2395 FormData form2;
2386 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( 2396 EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
2387 input_element, FormManager::REQUIRE_NONE, &form2)); 2397 input_element, FormManager::REQUIRE_NONE, &form2));
2388 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); 2398 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
2389 EXPECT_EQ(GURL(web_frame->url()), form2.origin); 2399 EXPECT_EQ(GURL(web_frame->url()), form2.origin);
2390 EXPECT_EQ(GURL("http://buh.com"), form2.action); 2400 EXPECT_EQ(GURL("http://buh.com"), form2.action);
2391 2401
2392 const std::vector<FormField>& fields2 = form2.fields; 2402 const std::vector<FormField>& fields2 = form2.fields;
2393 ASSERT_EQ(3U, fields2.size()); 2403 ASSERT_EQ(3U, fields2.size());
2394 EXPECT_EQ(FormField(string16(), 2404 EXPECT_EQ(FormField(string16(),
2395 ASCIIToUTF16("firstname"), 2405 ASCIIToUTF16("firstname"),
2396 ASCIIToUTF16("Wyatt"), 2406 ASCIIToUTF16("Wyatt"),
2397 ASCIIToUTF16("text"), 2407 ASCIIToUTF16("text"),
2398 kDefaultMaxLength, 2408 WebInputElement::defaultMaxLength(),
2399 false), 2409 false),
2400 fields2[0]); 2410 fields2[0]);
2401 EXPECT_EQ(FormField(string16(), 2411 EXPECT_EQ(FormField(string16(),
2402 ASCIIToUTF16("lastname"), 2412 ASCIIToUTF16("lastname"),
2403 ASCIIToUTF16("Earp"), 2413 ASCIIToUTF16("Earp"),
2404 ASCIIToUTF16("text"), 2414 ASCIIToUTF16("text"),
2405 kDefaultMaxLength, 2415 WebInputElement::defaultMaxLength(),
2406 false), 2416 false),
2407 fields2[1]); 2417 fields2[1]);
2408 EXPECT_EQ(FormField(string16(), 2418 EXPECT_EQ(FormField(string16(),
2409 ASCIIToUTF16("email"), 2419 ASCIIToUTF16("email"),
2410 ASCIIToUTF16("wyatt@example.com"), 2420 ASCIIToUTF16("wyatt@example.com"),
2411 ASCIIToUTF16("text"), 2421 ASCIIToUTF16("text"),
2412 kDefaultMaxLength, 2422 WebInputElement::defaultMaxLength(),
2413 false), 2423 false),
2414 fields2[2]); 2424 fields2[2]);
2415 2425
2416 // Verify that the cursor position has been updated. 2426 // Verify that the cursor position has been updated.
2417 EXPECT_EQ(5, input_element.selectionStart()); 2427 EXPECT_EQ(5, input_element.selectionStart());
2418 EXPECT_EQ(5, input_element.selectionEnd()); 2428 EXPECT_EQ(5, input_element.selectionEnd());
2419 } 2429 }
2420 2430
2421 TEST_F(FormManagerTest, ClearFormWithNode) { 2431 TEST_F(FormManagerTest, ClearFormWithNode) {
2422 LoadHTML( 2432 LoadHTML(
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
2463 EXPECT_EQ(GURL(web_frame->url()), form2.origin); 2473 EXPECT_EQ(GURL(web_frame->url()), form2.origin);
2464 EXPECT_EQ(GURL("http://buh.com"), form2.action); 2474 EXPECT_EQ(GURL("http://buh.com"), form2.action);
2465 2475
2466 const std::vector<FormField>& fields2 = form2.fields; 2476 const std::vector<FormField>& fields2 = form2.fields;
2467 ASSERT_EQ(4U, fields2.size()); 2477 ASSERT_EQ(4U, fields2.size());
2468 EXPECT_TRUE(fields2[0].StrictlyEqualsHack( 2478 EXPECT_TRUE(fields2[0].StrictlyEqualsHack(
2469 FormField(string16(), 2479 FormField(string16(),
2470 ASCIIToUTF16("firstname"), 2480 ASCIIToUTF16("firstname"),
2471 string16(), 2481 string16(),
2472 ASCIIToUTF16("text"), 2482 ASCIIToUTF16("text"),
2473 kDefaultMaxLength, 2483 WebInputElement::defaultMaxLength(),
2474 false))); 2484 false)));
2475 EXPECT_TRUE(fields2[1].StrictlyEqualsHack( 2485 EXPECT_TRUE(fields2[1].StrictlyEqualsHack(
2476 FormField(string16(), 2486 FormField(string16(),
2477 ASCIIToUTF16("lastname"), 2487 ASCIIToUTF16("lastname"),
2478 string16(), 2488 string16(),
2479 ASCIIToUTF16("text"), 2489 ASCIIToUTF16("text"),
2480 kDefaultMaxLength, 2490 WebInputElement::defaultMaxLength(),
2481 false))); 2491 false)));
2482 EXPECT_TRUE(fields2[2].StrictlyEqualsHack( 2492 EXPECT_TRUE(fields2[2].StrictlyEqualsHack(
2483 FormField(string16(), 2493 FormField(string16(),
2484 ASCIIToUTF16("noAC"), 2494 ASCIIToUTF16("noAC"),
2485 string16(), 2495 string16(),
2486 ASCIIToUTF16("text"), 2496 ASCIIToUTF16("text"),
2487 kDefaultMaxLength, 2497 WebInputElement::defaultMaxLength(),
2488 false))); 2498 false)));
2489 EXPECT_TRUE(fields2[3].StrictlyEqualsHack( 2499 EXPECT_TRUE(fields2[3].StrictlyEqualsHack(
2490 FormField(string16(), 2500 FormField(string16(),
2491 ASCIIToUTF16("notenabled"), 2501 ASCIIToUTF16("notenabled"),
2492 ASCIIToUTF16("no clear"), 2502 ASCIIToUTF16("no clear"),
2493 ASCIIToUTF16("text"), 2503 ASCIIToUTF16("text"),
2494 kDefaultMaxLength, 2504 WebInputElement::defaultMaxLength(),
2495 false))); 2505 false)));
2496 2506
2497 // Verify that the cursor position has been updated. 2507 // Verify that the cursor position has been updated.
2498 EXPECT_EQ(0, firstname.selectionStart()); 2508 EXPECT_EQ(0, firstname.selectionStart());
2499 EXPECT_EQ(0, firstname.selectionEnd()); 2509 EXPECT_EQ(0, firstname.selectionEnd());
2500 } 2510 }
2501 2511
2502 TEST_F(FormManagerTest, ClearFormWithNodeContainingSelectOne) { 2512 TEST_F(FormManagerTest, ClearFormWithNodeContainingSelectOne) {
2503 LoadHTML( 2513 LoadHTML(
2504 "<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" 2514 "<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2548 EXPECT_EQ(GURL(web_frame->url()), form2.origin); 2558 EXPECT_EQ(GURL(web_frame->url()), form2.origin);
2549 EXPECT_EQ(GURL("http://buh.com"), form2.action); 2559 EXPECT_EQ(GURL("http://buh.com"), form2.action);
2550 2560
2551 const std::vector<FormField>& fields2 = form2.fields; 2561 const std::vector<FormField>& fields2 = form2.fields;
2552 ASSERT_EQ(3U, fields2.size()); 2562 ASSERT_EQ(3U, fields2.size());
2553 EXPECT_TRUE(fields2[0].StrictlyEqualsHack( 2563 EXPECT_TRUE(fields2[0].StrictlyEqualsHack(
2554 FormField(string16(), 2564 FormField(string16(),
2555 ASCIIToUTF16("firstname"), 2565 ASCIIToUTF16("firstname"),
2556 string16(), 2566 string16(),
2557 ASCIIToUTF16("text"), 2567 ASCIIToUTF16("text"),
2558 kDefaultMaxLength, 2568 WebInputElement::defaultMaxLength(),
2559 false))); 2569 false)));
2560 EXPECT_TRUE(fields2[1].StrictlyEqualsHack( 2570 EXPECT_TRUE(fields2[1].StrictlyEqualsHack(
2561 FormField(string16(), 2571 FormField(string16(),
2562 ASCIIToUTF16("lastname"), 2572 ASCIIToUTF16("lastname"),
2563 string16(), 2573 string16(),
2564 ASCIIToUTF16("text"), 2574 ASCIIToUTF16("text"),
2565 kDefaultMaxLength, 2575 WebInputElement::defaultMaxLength(),
2566 false))); 2576 false)));
2567 EXPECT_TRUE(fields2[2].StrictlyEqualsHack( 2577 EXPECT_TRUE(fields2[2].StrictlyEqualsHack(
2568 FormField(string16(), 2578 FormField(string16(),
2569 ASCIIToUTF16("state"), 2579 ASCIIToUTF16("state"),
2570 ASCIIToUTF16("?"), 2580 ASCIIToUTF16("?"),
2571 ASCIIToUTF16("select-one"), 2581 ASCIIToUTF16("select-one"),
2572 0, 2582 0,
2573 false))); 2583 false)));
2574 2584
2575 // Verify that the cursor position has been updated. 2585 // Verify that the cursor position has been updated.
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
2878 EXPECT_EQ(GURL(frame->url()), form.origin); 2888 EXPECT_EQ(GURL(frame->url()), form.origin);
2879 EXPECT_EQ(GURL("http://cnn.com"), form.action); 2889 EXPECT_EQ(GURL("http://cnn.com"), form.action);
2880 2890
2881 const std::vector<FormField>& fields = form.fields; 2891 const std::vector<FormField>& fields = form.fields;
2882 ASSERT_EQ(3U, fields.size()); 2892 ASSERT_EQ(3U, fields.size());
2883 EXPECT_TRUE(fields[0].StrictlyEqualsHack( 2893 EXPECT_TRUE(fields[0].StrictlyEqualsHack(
2884 FormField(string16(), 2894 FormField(string16(),
2885 ASCIIToUTF16("firstname"), 2895 ASCIIToUTF16("firstname"),
2886 ASCIIToUTF16("John"), 2896 ASCIIToUTF16("John"),
2887 ASCIIToUTF16("text"), 2897 ASCIIToUTF16("text"),
2888 kDefaultMaxLength, 2898 WebInputElement::defaultMaxLength(),
2889 false))); 2899 false)));
2890 EXPECT_TRUE(fields[1].StrictlyEqualsHack( 2900 EXPECT_TRUE(fields[1].StrictlyEqualsHack(
2891 FormField(string16(), 2901 FormField(string16(),
2892 ASCIIToUTF16("lastname"), 2902 ASCIIToUTF16("lastname"),
2893 ASCIIToUTF16("Smith"), 2903 ASCIIToUTF16("Smith"),
2894 ASCIIToUTF16("text"), 2904 ASCIIToUTF16("text"),
2895 kDefaultMaxLength, 2905 WebInputElement::defaultMaxLength(),
2896 false))); 2906 false)));
2897 EXPECT_TRUE(fields[2].StrictlyEqualsHack( 2907 EXPECT_TRUE(fields[2].StrictlyEqualsHack(
2898 FormField(string16(), 2908 FormField(string16(),
2899 ASCIIToUTF16("country"), 2909 ASCIIToUTF16("country"),
2900 ASCIIToUTF16("Albania"), 2910 ASCIIToUTF16("Albania"),
2901 ASCIIToUTF16("select-one"), 2911 ASCIIToUTF16("select-one"),
2902 0, 2912 0,
2903 false))); 2913 false)));
2904 2914
2905 form.fields.clear(); 2915 form.fields.clear();
2906 // Extract the country select-one value as value. 2916 // Extract the country select-one value as value.
2907 EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0], 2917 EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0],
2908 FormManager::REQUIRE_NONE, 2918 FormManager::REQUIRE_NONE,
2909 FormManager::EXTRACT_VALUE, 2919 FormManager::EXTRACT_VALUE,
2910 &form)); 2920 &form));
2911 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 2921 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
2912 EXPECT_EQ(GURL(frame->url()), form.origin); 2922 EXPECT_EQ(GURL(frame->url()), form.origin);
2913 EXPECT_EQ(GURL("http://cnn.com"), form.action); 2923 EXPECT_EQ(GURL("http://cnn.com"), form.action);
2914 2924
2915 ASSERT_EQ(3U, fields.size()); 2925 ASSERT_EQ(3U, fields.size());
2916 EXPECT_TRUE(fields[0].StrictlyEqualsHack( 2926 EXPECT_TRUE(fields[0].StrictlyEqualsHack(
2917 FormField(string16(), 2927 FormField(string16(),
2918 ASCIIToUTF16("firstname"), 2928 ASCIIToUTF16("firstname"),
2919 ASCIIToUTF16("John"), 2929 ASCIIToUTF16("John"),
2920 ASCIIToUTF16("text"), 2930 ASCIIToUTF16("text"),
2921 kDefaultMaxLength, 2931 WebInputElement::defaultMaxLength(),
2922 false))); 2932 false)));
2923 EXPECT_TRUE(fields[1].StrictlyEqualsHack( 2933 EXPECT_TRUE(fields[1].StrictlyEqualsHack(
2924 FormField(string16(), 2934 FormField(string16(),
2925 ASCIIToUTF16("lastname"), 2935 ASCIIToUTF16("lastname"),
2926 ASCIIToUTF16("Smith"), 2936 ASCIIToUTF16("Smith"),
2927 ASCIIToUTF16("text"), 2937 ASCIIToUTF16("text"),
2928 kDefaultMaxLength, 2938 WebInputElement::defaultMaxLength(),
2929 false))); 2939 false)));
2930 EXPECT_TRUE(fields[2].StrictlyEqualsHack( 2940 EXPECT_TRUE(fields[2].StrictlyEqualsHack(
2931 FormField(string16(), 2941 FormField(string16(),
2932 ASCIIToUTF16("country"), 2942 ASCIIToUTF16("country"),
2933 ASCIIToUTF16("AL"), 2943 ASCIIToUTF16("AL"),
2934 ASCIIToUTF16("select-one"), 2944 ASCIIToUTF16("select-one"),
2935 0, 2945 0,
2936 false))); 2946 false)));
2937 } 2947 }
OLDNEW
« no previous file with comments | « chrome/browser/autofill/autofill_merge_unittest.cc ('k') | chrome/renderer/render_view_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698