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

Side by Side Diff: chrome/renderer/form_manager_unittest.cc

Issue 1380002: Label scraping for AutoFill.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 9 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
« no previous file with comments | « chrome/renderer/form_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chrome/renderer/form_manager.h" 5 #include "chrome/renderer/form_manager.h"
6 #include "chrome/test/render_view_test.h" 6 #include "chrome/test/render_view_test.h"
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "third_party/WebKit/WebKit/chromium/public/WebDocument.h" 8 #include "third_party/WebKit/WebKit/chromium/public/WebDocument.h"
9 #include "third_party/WebKit/WebKit/chromium/public/WebElement.h" 9 #include "third_party/WebKit/WebKit/chromium/public/WebElement.h"
10 #include "third_party/WebKit/WebKit/chromium/public/WebInputElement.h" 10 #include "third_party/WebKit/WebKit/chromium/public/WebInputElement.h"
11 #include "third_party/WebKit/WebKit/chromium/public/WebString.h" 11 #include "third_party/WebKit/WebKit/chromium/public/WebString.h"
12 #include "webkit/glue/form_data.h" 12 #include "webkit/glue/form_data.h"
13 13
14 using WebKit::WebElement; 14 using WebKit::WebElement;
15 using WebKit::WebFrame; 15 using WebKit::WebFrame;
16 using WebKit::WebInputElement; 16 using WebKit::WebInputElement;
17 using WebKit::WebString; 17 using WebKit::WebString;
18 18
19 using webkit_glue::FormData; 19 using webkit_glue::FormData;
20 using webkit_glue::FormField; 20 using webkit_glue::FormField;
21 21
22 class FormManagerTest : public RenderViewTest { 22 namespace {
23 public: 23
24 FormManagerTest() {} 24 typedef RenderViewTest FormManagerTest;
25 };
26 25
27 TEST_F(FormManagerTest, ExtractForms) { 26 TEST_F(FormManagerTest, ExtractForms) {
28 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" 27 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
29 " <INPUT type=\"text\" id=\"firstname\" value=\"John\">" 28 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
30 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\">" 29 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
31 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\">" 30 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
32 "</FORM>"); 31 "</FORM>");
33 32
34 WebFrame* web_frame = GetMainFrame(); 33 WebFrame* web_frame = GetMainFrame();
35 ASSERT_TRUE(web_frame); 34 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
36 35
37 FormManager form_manager; 36 FormManager form_manager;
38 form_manager.ExtractForms(web_frame); 37 form_manager.ExtractForms(web_frame);
39 38
40 std::vector<FormData> forms; 39 std::vector<FormData> forms;
41 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE); 40 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE);
42 ASSERT_EQ(1U, forms.size()); 41 ASSERT_EQ(1U, forms.size());
43 42
44 const FormData& form = forms[0]; 43 const FormData& form = forms[0];
45 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 44 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
(...skipping 14 matching lines...) Expand all
60 WebInputElement::Text), fields[1]); 59 WebInputElement::Text), fields[1]);
61 EXPECT_EQ(FormField(string16(), 60 EXPECT_EQ(FormField(string16(),
62 ASCIIToUTF16("reply-send"), 61 ASCIIToUTF16("reply-send"),
63 ASCIIToUTF16("Send"), 62 ASCIIToUTF16("Send"),
64 ASCIIToUTF16("submit"), 63 ASCIIToUTF16("submit"),
65 WebInputElement::Submit), fields[2]); 64 WebInputElement::Submit), fields[2]);
66 } 65 }
67 66
68 TEST_F(FormManagerTest, ExtractMultipleForms) { 67 TEST_F(FormManagerTest, ExtractMultipleForms) {
69 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" 68 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
70 " <INPUT type=\"text\" id=\"firstname\" value=\"John\">" 69 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
71 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\">" 70 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
72 "</FORM>" 71 "</FORM>"
73 "<FORM name=\"TestForm2\" action=\"http://zoo.com\" method=\"post\">" 72 "<FORM name=\"TestForm2\" action=\"http://zoo.com\" method=\"post\">"
74 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\">" 73 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
75 " <INPUT type=\"submit\" name=\"second\" value=\"Submit\">" 74 " <INPUT type=\"submit\" name=\"second\" value=\"Submit\"/>"
76 "</FORM>"); 75 "</FORM>");
77 76
78 WebFrame* web_frame = GetMainFrame(); 77 WebFrame* web_frame = GetMainFrame();
79 ASSERT_TRUE(web_frame); 78 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
80 79
81 FormManager form_manager; 80 FormManager form_manager;
82 form_manager.ExtractForms(web_frame); 81 form_manager.ExtractForms(web_frame);
83 82
84 std::vector<FormData> forms; 83 std::vector<FormData> forms;
85 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE); 84 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE);
86 ASSERT_EQ(2U, forms.size()); 85 ASSERT_EQ(2U, forms.size());
87 86
88 // First form. 87 // First form.
89 const FormData& form = forms[0]; 88 const FormData& form = forms[0];
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 ASCIIToUTF16("second"), 120 ASCIIToUTF16("second"),
122 ASCIIToUTF16("Submit"), 121 ASCIIToUTF16("Submit"),
123 ASCIIToUTF16("submit"), 122 ASCIIToUTF16("submit"),
124 WebInputElement::Submit), fields2[1]); 123 WebInputElement::Submit), fields2[1]);
125 } 124 }
126 125
127 TEST_F(FormManagerTest, GetFormsAutocomplete) { 126 TEST_F(FormManagerTest, GetFormsAutocomplete) {
128 // Form is not auto-completable due to autocomplete=off. 127 // Form is not auto-completable due to autocomplete=off.
129 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\"" 128 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\""
130 " autocomplete=off>" 129 " autocomplete=off>"
131 " <INPUT type=\"text\" id=\"firstname\" value=\"John\">" 130 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
132 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\">" 131 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
133 "</FORM>"); 132 "</FORM>");
134 133
135 WebFrame* web_frame = GetMainFrame(); 134 WebFrame* web_frame = GetMainFrame();
136 ASSERT_TRUE(web_frame); 135 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
137 136
138 FormManager form_manager; 137 FormManager form_manager;
139 form_manager.ExtractForms(web_frame); 138 form_manager.ExtractForms(web_frame);
140 139
141 // Verify that we did load the forms. 140 // Verify that we did load the forms.
142 std::vector<FormData> forms; 141 std::vector<FormData> forms;
143 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE); 142 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE);
144 ASSERT_EQ(1U, forms.size()); 143 ASSERT_EQ(1U, forms.size());
145 144
146 // autocomplete=off and we're requiring autocomplete, so no forms returned. 145 // autocomplete=off and we're requiring autocomplete, so no forms returned.
147 forms.clear(); 146 forms.clear();
148 form_manager.GetForms(&forms, FormManager::REQUIRE_AUTOCOMPLETE); 147 form_manager.GetForms(&forms, FormManager::REQUIRE_AUTOCOMPLETE);
149 ASSERT_EQ(0U, forms.size()); 148 ASSERT_EQ(0U, forms.size());
150 149
151 // The firstname element is not auto-completable due to autocomplete=off. 150 // The firstname element is not auto-completable due to autocomplete=off.
152 LoadHTML("<FORM name=\"TestForm\" action=\"http://abc.com\" method=\"post\">" 151 LoadHTML("<FORM name=\"TestForm\" action=\"http://abc.com\" method=\"post\">"
153 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"" 152 " <INPUT type=\"text\" id=\"firstname\" value=\"John\""
154 " autocomplete=off>" 153 " autocomplete=off>"
155 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\">" 154 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
156 " <INPUT type=\"submit\" name=\"reply\" value=\"Send\">" 155 " <INPUT type=\"submit\" name=\"reply\" value=\"Send\"/>"
157 "</FORM>"); 156 "</FORM>");
158 157
159 web_frame = GetMainFrame(); 158 web_frame = GetMainFrame();
160 ASSERT_TRUE(web_frame); 159 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
161 160
162 form_manager.Reset(); 161 form_manager.Reset();
163 form_manager.ExtractForms(web_frame); 162 form_manager.ExtractForms(web_frame);
164 163
165 forms.clear(); 164 forms.clear();
166 form_manager.GetForms(&forms, FormManager::REQUIRE_AUTOCOMPLETE); 165 form_manager.GetForms(&forms, FormManager::REQUIRE_AUTOCOMPLETE);
167 ASSERT_EQ(1U, forms.size()); 166 ASSERT_EQ(1U, forms.size());
168 167
169 const FormData& form = forms[0]; 168 const FormData& form = forms[0];
170 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 169 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
(...skipping 10 matching lines...) Expand all
181 EXPECT_EQ(FormField(string16(), 180 EXPECT_EQ(FormField(string16(),
182 ASCIIToUTF16("reply"), 181 ASCIIToUTF16("reply"),
183 ASCIIToUTF16("Send"), 182 ASCIIToUTF16("Send"),
184 ASCIIToUTF16("submit"), 183 ASCIIToUTF16("submit"),
185 WebInputElement::Submit), fields[1]); 184 WebInputElement::Submit), fields[1]);
186 } 185 }
187 186
188 TEST_F(FormManagerTest, GetFormsElementsEnabled) { 187 TEST_F(FormManagerTest, GetFormsElementsEnabled) {
189 // The firstname element is not enabled due to disabled being set. 188 // The firstname element is not enabled due to disabled being set.
190 LoadHTML("<FORM name=\"TestForm\" action=\"http://xyz.com\" method=\"post\">" 189 LoadHTML("<FORM name=\"TestForm\" action=\"http://xyz.com\" method=\"post\">"
191 " <INPUT disabled type=\"text\" id=\"firstname\" value=\"John\">" 190 " <INPUT disabled type=\"text\" id=\"firstname\" value=\"John\"/>"
192 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\">" 191 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
193 " <INPUT type=\"submit\" name=\"submit\" value=\"Send\">" 192 " <INPUT type=\"submit\" name=\"submit\" value=\"Send\"/>"
194 "</FORM>"); 193 "</FORM>");
195 194
196 WebFrame* web_frame = GetMainFrame(); 195 WebFrame* web_frame = GetMainFrame();
197 ASSERT_TRUE(web_frame); 196 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
198 197
199 FormManager form_manager; 198 FormManager form_manager;
200 form_manager.ExtractForms(web_frame); 199 form_manager.ExtractForms(web_frame);
201 200
202 std::vector<FormData> forms; 201 std::vector<FormData> forms;
203 form_manager.GetForms(&forms, FormManager::REQUIRE_ELEMENTS_ENABLED); 202 form_manager.GetForms(&forms, FormManager::REQUIRE_ELEMENTS_ENABLED);
204 ASSERT_EQ(1U, forms.size()); 203 ASSERT_EQ(1U, forms.size());
205 204
206 const FormData& form = forms[0]; 205 const FormData& form = forms[0];
207 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 206 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
208 EXPECT_EQ(GURL(web_frame->url()), form.origin); 207 EXPECT_EQ(GURL(web_frame->url()), form.origin);
209 EXPECT_EQ(GURL("http://xyz.com"), form.action); 208 EXPECT_EQ(GURL("http://xyz.com"), form.action);
210 209
211 const std::vector<FormField>& fields = form.fields; 210 const std::vector<FormField>& fields = form.fields;
212 ASSERT_EQ(2U, fields.size()); 211 ASSERT_EQ(2U, fields.size());
213 EXPECT_EQ(FormField(string16(), 212 EXPECT_EQ(FormField(string16(),
214 ASCIIToUTF16("lastname"), 213 ASCIIToUTF16("lastname"),
215 ASCIIToUTF16("Smith"), 214 ASCIIToUTF16("Smith"),
216 ASCIIToUTF16("text"), 215 ASCIIToUTF16("text"),
217 WebInputElement::Text), fields[0]); 216 WebInputElement::Text), fields[0]);
218 EXPECT_EQ(FormField(string16(), 217 EXPECT_EQ(FormField(string16(),
219 ASCIIToUTF16("submit"), 218 ASCIIToUTF16("submit"),
220 ASCIIToUTF16("Send"), 219 ASCIIToUTF16("Send"),
221 ASCIIToUTF16("submit"), 220 ASCIIToUTF16("submit"),
222 WebInputElement::Submit), fields[1]); 221 WebInputElement::Submit), fields[1]);
223 } 222 }
224 223
225 TEST_F(FormManagerTest, FindForm) { 224 TEST_F(FormManagerTest, FindForm) {
226 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" 225 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
227 " <INPUT type=\"text\" id=\"firstname\" value=\"John\">" 226 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
228 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\">" 227 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
229 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\">" 228 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
230 "</FORM>"); 229 "</FORM>");
231 230
232 WebFrame* web_frame = GetMainFrame(); 231 WebFrame* web_frame = GetMainFrame();
233 ASSERT_TRUE(web_frame); 232 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
234 233
235 FormManager form_manager; 234 FormManager form_manager;
236 form_manager.ExtractForms(web_frame); 235 form_manager.ExtractForms(web_frame);
237 236
238 // Verify that we have the form. 237 // Verify that we have the form.
239 std::vector<FormData> forms; 238 std::vector<FormData> forms;
240 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE); 239 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE);
241 ASSERT_EQ(1U, forms.size()); 240 ASSERT_EQ(1U, forms.size());
242 241
243 // Get the input element we want to find. 242 // Get the input element we want to find.
(...skipping 22 matching lines...) Expand all
266 WebInputElement::Text), fields[1]); 265 WebInputElement::Text), fields[1]);
267 EXPECT_EQ(FormField(string16(), 266 EXPECT_EQ(FormField(string16(),
268 ASCIIToUTF16("reply-send"), 267 ASCIIToUTF16("reply-send"),
269 ASCIIToUTF16("Send"), 268 ASCIIToUTF16("Send"),
270 ASCIIToUTF16("submit"), 269 ASCIIToUTF16("submit"),
271 WebInputElement::Submit), fields[2]); 270 WebInputElement::Submit), fields[2]);
272 } 271 }
273 272
274 TEST_F(FormManagerTest, FillForm) { 273 TEST_F(FormManagerTest, FillForm) {
275 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" 274 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
276 " <INPUT type=\"text\" id=\"firstname\">" 275 " <INPUT type=\"text\" id=\"firstname\"/>"
277 " <INPUT type=\"text\" id=\"lastname\">" 276 " <INPUT type=\"text\" id=\"lastname\"/>"
278 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\">" 277 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
279 "</FORM>"); 278 "</FORM>");
280 279
281 WebFrame* web_frame = GetMainFrame(); 280 WebFrame* web_frame = GetMainFrame();
282 ASSERT_TRUE(web_frame); 281 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
283 282
284 FormManager form_manager; 283 FormManager form_manager;
285 form_manager.ExtractForms(web_frame); 284 form_manager.ExtractForms(web_frame);
286 285
287 // Verify that we have the form. 286 // Verify that we have the form.
288 std::vector<FormData> forms; 287 std::vector<FormData> forms;
289 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE); 288 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE);
290 ASSERT_EQ(1U, forms.size()); 289 ASSERT_EQ(1U, forms.size());
291 290
292 // Get the input element we want to find. 291 // Get the input element we want to find.
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 WebInputElement::Text), fields2[1]); 344 WebInputElement::Text), fields2[1]);
346 EXPECT_EQ(FormField(string16(), 345 EXPECT_EQ(FormField(string16(),
347 ASCIIToUTF16("reply-send"), 346 ASCIIToUTF16("reply-send"),
348 ASCIIToUTF16("Send"), 347 ASCIIToUTF16("Send"),
349 ASCIIToUTF16("submit"), 348 ASCIIToUTF16("submit"),
350 WebInputElement::Submit), fields2[2]); 349 WebInputElement::Submit), fields2[2]);
351 } 350 }
352 351
353 TEST_F(FormManagerTest, Reset) { 352 TEST_F(FormManagerTest, Reset) {
354 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" 353 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
355 " <INPUT type=\"text\" id=\"firstname\" value=\"John\">" 354 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
356 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\">" 355 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
357 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\">" 356 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
358 "</FORM>"); 357 "</FORM>");
359 358
360 WebFrame* web_frame = GetMainFrame(); 359 WebFrame* web_frame = GetMainFrame();
361 ASSERT_TRUE(web_frame); 360 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
362 361
363 FormManager form_manager; 362 FormManager form_manager;
364 form_manager.ExtractForms(web_frame); 363 form_manager.ExtractForms(web_frame);
365 364
366 std::vector<FormData> forms; 365 std::vector<FormData> forms;
367 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE); 366 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE);
368 ASSERT_EQ(1U, forms.size()); 367 ASSERT_EQ(1U, forms.size());
369 368
370 // There should be no forms after the call to Reset. 369 // There should be no forms after the call to Reset.
371 form_manager.Reset(); 370 form_manager.Reset();
372 371
373 forms.clear(); 372 forms.clear();
374 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE); 373 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE);
375 ASSERT_EQ(0U, forms.size()); 374 ASSERT_EQ(0U, forms.size());
376 } 375 }
377 376
378 TEST_F(FormManagerTest, Labels) { 377 TEST_F(FormManagerTest, Labels) {
379 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" 378 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
380 " <LABEL for=\"firstname\"> First name: </LABEL>" 379 " <LABEL for=\"firstname\"> First name: </LABEL>"
381 " <INPUT type=\"text\" id=\"firstname\" value=\"John\">" 380 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
382 " <LABEL for=\"lastname\"> Last name: </LABEL>" 381 " <LABEL for=\"lastname\"> Last name: </LABEL>"
383 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\">" 382 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
384 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\">" 383 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
385 "</FORM>"); 384 "</FORM>");
386 385
387 WebFrame* web_frame = GetMainFrame(); 386 WebFrame* web_frame = GetMainFrame();
388 ASSERT_TRUE(web_frame); 387 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
389 388
390 FormManager form_manager; 389 FormManager form_manager;
391 form_manager.ExtractForms(web_frame); 390 form_manager.ExtractForms(web_frame);
392 391
393 std::vector<FormData> forms; 392 std::vector<FormData> forms;
394 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE); 393 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE);
395 ASSERT_EQ(1U, forms.size()); 394 ASSERT_EQ(1U, forms.size());
396 395
397 const FormData& form = forms[0]; 396 const FormData& form = forms[0];
398 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); 397 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
(...skipping 11 matching lines...) Expand all
410 ASCIIToUTF16("lastname"), 409 ASCIIToUTF16("lastname"),
411 ASCIIToUTF16("Smith"), 410 ASCIIToUTF16("Smith"),
412 ASCIIToUTF16("text"), 411 ASCIIToUTF16("text"),
413 WebInputElement::Text), fields[1]); 412 WebInputElement::Text), fields[1]);
414 EXPECT_EQ(FormField(string16(), 413 EXPECT_EQ(FormField(string16(),
415 ASCIIToUTF16("reply-send"), 414 ASCIIToUTF16("reply-send"),
416 ASCIIToUTF16("Send"), 415 ASCIIToUTF16("Send"),
417 ASCIIToUTF16("submit"), 416 ASCIIToUTF16("submit"),
418 WebInputElement::Submit), fields[2]); 417 WebInputElement::Submit), fields[2]);
419 } 418 }
419
420 TEST_F(FormManagerTest, LabelsFromInferredText) {
421 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
422 " First name:"
423 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
424 " Last name:"
425 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
426 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
427 "</FORM>");
428
429 WebFrame* web_frame = GetMainFrame();
430 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
431
432 FormManager form_manager;
433 form_manager.ExtractForms(web_frame);
434
435 std::vector<FormData> forms;
436 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE);
437 ASSERT_EQ(1U, forms.size());
438
439 const FormData& form = forms[0];
440 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
441 EXPECT_EQ(GURL(web_frame->url()), form.origin);
442 EXPECT_EQ(GURL("http://cnn.com"), form.action);
443
444 const std::vector<FormField>& fields = form.fields;
445 ASSERT_EQ(3U, fields.size());
446 EXPECT_EQ(FormField(ASCIIToUTF16("First name:"),
447 ASCIIToUTF16("firstname"),
448 ASCIIToUTF16("John"),
449 ASCIIToUTF16("text"),
450 WebInputElement::Text), fields[0]);
451 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"),
452 ASCIIToUTF16("lastname"),
453 ASCIIToUTF16("Smith"),
454 ASCIIToUTF16("text"),
455 WebInputElement::Text), fields[1]);
456 EXPECT_EQ(FormField(string16(),
457 ASCIIToUTF16("reply-send"),
458 ASCIIToUTF16("Send"),
459 ASCIIToUTF16("submit"),
460 WebInputElement::Submit), fields[2]);
461 }
462
463 TEST_F(FormManagerTest, LabelsFromInferredParagraph) {
464 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
465 " <P>First name:</P><INPUT type=\"text\" "
466 " id=\"firstname\" value=\"John\"/>"
467 " <P>Last name:</P>"
468 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
469 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
470 "</FORM>");
471
472 WebFrame* web_frame = GetMainFrame();
473 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
474
475 FormManager form_manager;
476 form_manager.ExtractForms(web_frame);
477
478 std::vector<FormData> forms;
479 form_manager.GetForms(&forms, FormManager::REQUIRE_NONE);
480 ASSERT_EQ(1U, forms.size());
481
482 const FormData& form = forms[0];
483 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
484 EXPECT_EQ(GURL(web_frame->url()), form.origin);
485 EXPECT_EQ(GURL("http://cnn.com"), form.action);
486
487 const std::vector<FormField>& fields = form.fields;
488 ASSERT_EQ(3U, fields.size());
489 EXPECT_EQ(FormField(ASCIIToUTF16("First name:"),
490 ASCIIToUTF16("firstname"),
491 ASCIIToUTF16("John"),
492 ASCIIToUTF16("text"),
493 WebInputElement::Text), fields[0]);
494 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"),
495 ASCIIToUTF16("lastname"),
496 ASCIIToUTF16("Smith"),
497 ASCIIToUTF16("text"),
498 WebInputElement::Text), fields[1]);
499 EXPECT_EQ(FormField(string16(),
500 ASCIIToUTF16("reply-send"),
501 ASCIIToUTF16("Send"),
502 ASCIIToUTF16("submit"),
503 WebInputElement::Submit), fields[2]);
504 }
505
506 } // namespace
OLDNEW
« no previous file with comments | « chrome/renderer/form_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698