Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/WebFormElement.h" | 10 #include "third_party/WebKit/WebKit/chromium/public/WebFormElement.h" |
| 11 #include "third_party/WebKit/WebKit/chromium/public/WebInputElement.h" | 11 #include "third_party/WebKit/WebKit/chromium/public/WebInputElement.h" |
| 12 #include "third_party/WebKit/WebKit/chromium/public/WebString.h" | 12 #include "third_party/WebKit/WebKit/chromium/public/WebString.h" |
| 13 #include "third_party/WebKit/WebKit/chromium/public/WebVector.h" | 13 #include "third_party/WebKit/WebKit/chromium/public/WebVector.h" |
| 14 #include "webkit/glue/form_data.h" | 14 #include "webkit/glue/form_data.h" |
| 15 | 15 |
| 16 using WebKit::WebDocument; | |
| 16 using WebKit::WebElement; | 17 using WebKit::WebElement; |
| 17 using WebKit::WebFormElement; | 18 using WebKit::WebFormElement; |
| 18 using WebKit::WebFrame; | 19 using WebKit::WebFrame; |
| 19 using WebKit::WebInputElement; | 20 using WebKit::WebInputElement; |
| 20 using WebKit::WebString; | 21 using WebKit::WebString; |
| 21 using WebKit::WebVector; | 22 using WebKit::WebVector; |
| 22 | 23 |
| 23 using webkit_glue::FormData; | 24 using webkit_glue::FormData; |
| 24 using webkit_glue::FormField; | 25 using webkit_glue::FormField; |
| 25 | 26 |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 330 ASCIIToUTF16("Send"), | 331 ASCIIToUTF16("Send"), |
| 331 ASCIIToUTF16("submit"), | 332 ASCIIToUTF16("submit"), |
| 332 0), | 333 0), |
| 333 fields[2]); | 334 fields[2]); |
| 334 } | 335 } |
| 335 | 336 |
| 336 TEST_F(FormManagerTest, FillForm) { | 337 TEST_F(FormManagerTest, FillForm) { |
| 337 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 338 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
| 338 " <INPUT type=\"text\" id=\"firstname\"/>" | 339 " <INPUT type=\"text\" id=\"firstname\"/>" |
| 339 " <INPUT type=\"text\" id=\"lastname\"/>" | 340 " <INPUT type=\"text\" id=\"lastname\"/>" |
| 341 " <INPUT type=\"hidden\" id=\"imhidden\"/>" | |
| 342 " <INPUT type=\"text\" id=\"notempty\" value=\"Hi\"/>" | |
| 343 " <INPUT type=\"text\" autocomplete=\"off\" id=\"noautocomplete\"/>" | |
| 340 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 344 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 341 "</FORM>"); | 345 "</FORM>"); |
| 342 | 346 |
| 343 WebFrame* web_frame = GetMainFrame(); | 347 WebFrame* web_frame = GetMainFrame(); |
| 344 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | 348 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
| 345 | 349 |
| 346 FormManager form_manager; | 350 FormManager form_manager; |
| 347 form_manager.ExtractForms(web_frame); | 351 form_manager.ExtractForms(web_frame); |
| 348 | 352 |
| 349 // Verify that we have the form. | 353 // Verify that we have the form. |
| 350 std::vector<FormData> forms; | 354 std::vector<FormData> forms; |
| 351 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | 355 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); |
| 352 ASSERT_EQ(1U, forms.size()); | 356 ASSERT_EQ(1U, forms.size()); |
| 353 | 357 |
| 354 // Get the input element we want to find. | 358 // Get the input element we want to find. |
| 355 WebElement element = web_frame->document().getElementById("firstname"); | 359 WebElement element = web_frame->document().getElementById("firstname"); |
| 356 WebInputElement input_element = element.to<WebInputElement>(); | 360 WebInputElement input_element = element.to<WebInputElement>(); |
| 357 | 361 |
| 358 // Find the form that contains the input element. | 362 // Find the form that contains the input element. |
| 359 FormData form; | 363 FormData form; |
| 360 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( | 364 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( |
| 361 input_element, FormManager::REQUIRE_NONE, &form)); | 365 input_element, FormManager::REQUIRE_NONE, &form)); |
| 362 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | 366 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
| 363 EXPECT_EQ(GURL(web_frame->url()), form.origin); | 367 EXPECT_EQ(GURL(web_frame->url()), form.origin); |
| 364 EXPECT_EQ(GURL("http://buh.com"), form.action); | 368 EXPECT_EQ(GURL("http://buh.com"), form.action); |
| 365 | 369 |
| 366 const std::vector<FormField>& fields = form.fields; | 370 const std::vector<FormField>& fields = form.fields; |
| 367 ASSERT_EQ(3U, fields.size()); | 371 ASSERT_EQ(6U, fields.size()); |
| 368 EXPECT_EQ(FormField(string16(), | 372 EXPECT_EQ(FormField(string16(), |
| 369 ASCIIToUTF16("firstname"), | 373 ASCIIToUTF16("firstname"), |
| 370 string16(), | 374 string16(), |
| 371 ASCIIToUTF16("text"), | 375 ASCIIToUTF16("text"), |
| 372 20), | 376 20), |
| 373 fields[0]); | 377 fields[0]); |
| 374 EXPECT_EQ(FormField(string16(), | 378 EXPECT_EQ(FormField(string16(), |
| 375 ASCIIToUTF16("lastname"), | 379 ASCIIToUTF16("lastname"), |
| 376 string16(), | 380 string16(), |
| 377 ASCIIToUTF16("text"), | 381 ASCIIToUTF16("text"), |
| 378 20), | 382 20), |
| 379 fields[1]); | 383 fields[1]); |
| 380 EXPECT_EQ(FormField(string16(), | 384 EXPECT_EQ(FormField(string16(), |
| 385 ASCIIToUTF16("imhidden"), | |
| 386 string16(), | |
| 387 ASCIIToUTF16("hidden"), | |
| 388 0), | |
| 389 fields[2]); | |
| 390 EXPECT_EQ(FormField(string16(), | |
|
dhollowa
2010/05/28 02:07:07
These guys need the StrictlyEqualsHack() too I thi
James Hawkins
2010/05/28 02:17:27
Not particularly, since they have no values at thi
| |
| 391 ASCIIToUTF16("notempty"), | |
| 392 ASCIIToUTF16("Hi"), | |
| 393 ASCIIToUTF16("text"), | |
| 394 20), | |
| 395 fields[3]); | |
| 396 EXPECT_EQ(FormField(string16(), | |
| 397 ASCIIToUTF16("noautocomplete"), | |
| 398 string16(), | |
| 399 ASCIIToUTF16("text"), | |
| 400 20), | |
| 401 fields[4]); | |
| 402 EXPECT_EQ(FormField(string16(), | |
| 381 ASCIIToUTF16("reply-send"), | 403 ASCIIToUTF16("reply-send"), |
| 382 ASCIIToUTF16("Send"), | 404 ASCIIToUTF16("Send"), |
| 383 ASCIIToUTF16("submit"), | 405 ASCIIToUTF16("submit"), |
| 384 0), | 406 0), |
| 385 fields[2]); | 407 fields[5]); |
| 386 | 408 |
| 387 // Fill the form. | 409 // Fill the form. |
| 388 form.fields[0].set_value(ASCIIToUTF16("Wyatt")); | 410 form.fields[0].set_value(ASCIIToUTF16("Wyatt")); |
| 389 form.fields[1].set_value(ASCIIToUTF16("Earp")); | 411 form.fields[1].set_value(ASCIIToUTF16("Earp")); |
| 412 form.fields[2].set_value(ASCIIToUTF16("Alpha")); | |
| 413 form.fields[3].set_value(ASCIIToUTF16("Beta")); | |
| 414 form.fields[4].set_value(ASCIIToUTF16("Gamma")); | |
| 390 EXPECT_TRUE(form_manager.FillForm(form)); | 415 EXPECT_TRUE(form_manager.FillForm(form)); |
| 391 | 416 |
| 392 // Find the newly-filled form that contains the input element. | 417 // Verify the previewed elements. |
| 393 FormData form2; | 418 WebDocument document = web_frame->document(); |
| 394 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( | 419 WebInputElement firstname = |
| 395 input_element, FormManager::REQUIRE_NONE, &form2)); | 420 document.getElementById("firstname").to<WebInputElement>(); |
| 396 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); | 421 // TODO(jhawkins): Check firstname.isAutofilled() once support has been added |
| 397 EXPECT_EQ(GURL(web_frame->url()), form2.origin); | 422 // in WebKit. |
| 398 EXPECT_EQ(GURL("http://buh.com"), form2.action); | 423 EXPECT_EQ(ASCIIToUTF16("Wyatt"), firstname.value()); |
| 399 | 424 |
| 400 const std::vector<FormField>& fields2 = form2.fields; | 425 WebInputElement lastname = |
| 401 ASSERT_EQ(3U, fields2.size()); | 426 document.getElementById("lastname").to<WebInputElement>(); |
| 402 EXPECT_EQ(FormField(string16(), | 427 EXPECT_EQ(ASCIIToUTF16("Earp"), lastname.value()); |
| 403 ASCIIToUTF16("firstname"), | 428 |
| 404 ASCIIToUTF16("Wyatt"), | 429 // Hidden fields are not previewed. |
| 405 ASCIIToUTF16("text"), | 430 WebInputElement imhidden = |
| 406 20), | 431 document.getElementById("imhidden").to<WebInputElement>(); |
| 407 fields2[0]); | 432 EXPECT_TRUE(imhidden.value().isEmpty()); |
| 408 EXPECT_EQ(FormField(string16(), | 433 |
| 409 ASCIIToUTF16("lastname"), | 434 // Non-empty fields are not previewed. |
| 410 ASCIIToUTF16("Earp"), | 435 WebInputElement notempty = |
| 411 ASCIIToUTF16("text"), | 436 document.getElementById("notempty").to<WebInputElement>(); |
| 412 20), | 437 EXPECT_EQ(ASCIIToUTF16("Hi"), notempty.value()); |
| 413 fields2[1]); | 438 |
| 414 EXPECT_EQ(FormField(string16(), | 439 // autocomplete=off fields are not previewed. |
| 415 ASCIIToUTF16("reply-send"), | 440 WebInputElement noautocomplete = |
| 416 ASCIIToUTF16("Send"), | 441 document.getElementById("noautocomplete").to<WebInputElement>(); |
| 417 ASCIIToUTF16("submit"), | 442 EXPECT_TRUE(noautocomplete.value().isEmpty()); |
| 418 0), | |
| 419 fields2[2]); | |
| 420 } | 443 } |
| 421 | 444 |
| 422 TEST_F(FormManagerTest, Reset) { | 445 TEST_F(FormManagerTest, Reset) { |
| 423 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 446 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 424 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 447 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
| 425 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 448 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
| 426 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 449 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 427 "</FORM>"); | 450 "</FORM>"); |
| 428 | 451 |
| 429 WebFrame* web_frame = GetMainFrame(); | 452 WebFrame* web_frame = GetMainFrame(); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 463 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | 486 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); |
| 464 ASSERT_EQ(1U, forms.size()); | 487 ASSERT_EQ(1U, forms.size()); |
| 465 | 488 |
| 466 const FormData& form = forms[0]; | 489 const FormData& form = forms[0]; |
| 467 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | 490 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
| 468 EXPECT_EQ(GURL(web_frame->url()), form.origin); | 491 EXPECT_EQ(GURL(web_frame->url()), form.origin); |
| 469 EXPECT_EQ(GURL("http://cnn.com"), form.action); | 492 EXPECT_EQ(GURL("http://cnn.com"), form.action); |
| 470 | 493 |
| 471 const std::vector<FormField>& fields = form.fields; | 494 const std::vector<FormField>& fields = form.fields; |
| 472 ASSERT_EQ(3U, fields.size()); | 495 ASSERT_EQ(3U, fields.size()); |
| 473 EXPECT_EQ(FormField(ASCIIToUTF16("First name:"), | 496 EXPECT_TRUE(fields[0].StrictlyEqualsHack( |
| 474 ASCIIToUTF16("firstname"), | 497 FormField(ASCIIToUTF16("First name:"), |
| 475 ASCIIToUTF16("John"), | 498 ASCIIToUTF16("firstname"), |
| 476 ASCIIToUTF16("text"), | 499 ASCIIToUTF16("John"), |
| 477 20), | 500 ASCIIToUTF16("text"), |
| 478 fields[0]); | 501 20))); |
| 479 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), | 502 EXPECT_TRUE(fields[1].StrictlyEqualsHack( |
| 480 ASCIIToUTF16("lastname"), | 503 FormField(ASCIIToUTF16("Last name:"), |
| 481 ASCIIToUTF16("Smith"), | 504 ASCIIToUTF16("lastname"), |
| 482 ASCIIToUTF16("text"), | 505 ASCIIToUTF16("Smith"), |
| 483 20), | 506 ASCIIToUTF16("text"), |
| 484 fields[1]); | 507 20))); |
| 485 EXPECT_EQ(FormField(string16(), | 508 EXPECT_TRUE(fields[2].StrictlyEqualsHack( |
| 486 ASCIIToUTF16("reply-send"), | 509 FormField(string16(), |
| 487 ASCIIToUTF16("Send"), | 510 ASCIIToUTF16("reply-send"), |
| 488 ASCIIToUTF16("submit"), | 511 string16(), |
| 489 0), | 512 ASCIIToUTF16("submit"), |
| 490 fields[2]); | 513 0))); |
| 491 } | 514 } |
| 492 | 515 |
| 493 TEST_F(FormManagerTest, LabelsWithSpans) { | 516 TEST_F(FormManagerTest, LabelsWithSpans) { |
| 494 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 517 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 495 " <LABEL for=\"firstname\"><span>First name: </span></LABEL>" | 518 " <LABEL for=\"firstname\"><span>First name: </span></LABEL>" |
| 496 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 519 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
| 497 " <LABEL for=\"lastname\"><span>Last name: </span></LABEL>" | 520 " <LABEL for=\"lastname\"><span>Last name: </span></LABEL>" |
| 498 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 521 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
| 499 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 522 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 500 "</FORM>"); | 523 "</FORM>"); |
| 501 | 524 |
| 502 WebFrame* web_frame = GetMainFrame(); | 525 WebFrame* web_frame = GetMainFrame(); |
| 503 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | 526 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
| 504 | 527 |
| 505 FormManager form_manager; | 528 FormManager form_manager; |
| 506 form_manager.ExtractForms(web_frame); | 529 form_manager.ExtractForms(web_frame); |
| 507 | 530 |
| 508 std::vector<FormData> forms; | 531 std::vector<FormData> forms; |
| 509 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | 532 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); |
| 510 ASSERT_EQ(1U, forms.size()); | 533 ASSERT_EQ(1U, forms.size()); |
| 511 | 534 |
| 512 const FormData& form = forms[0]; | 535 const FormData& form = forms[0]; |
| 513 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | 536 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
| 514 EXPECT_EQ(GURL(web_frame->url()), form.origin); | 537 EXPECT_EQ(GURL(web_frame->url()), form.origin); |
| 515 EXPECT_EQ(GURL("http://cnn.com"), form.action); | 538 EXPECT_EQ(GURL("http://cnn.com"), form.action); |
| 516 | 539 |
| 517 const std::vector<FormField>& fields = form.fields; | 540 const std::vector<FormField>& fields = form.fields; |
| 518 ASSERT_EQ(3U, fields.size()); | 541 ASSERT_EQ(3U, fields.size()); |
| 519 EXPECT_EQ(FormField(ASCIIToUTF16("First name:"), | 542 EXPECT_TRUE(fields[0].StrictlyEqualsHack( |
| 520 ASCIIToUTF16("firstname"), | 543 FormField(ASCIIToUTF16("First name:"), |
| 521 ASCIIToUTF16("John"), | 544 ASCIIToUTF16("firstname"), |
| 522 ASCIIToUTF16("text"), | 545 ASCIIToUTF16("John"), |
| 523 20), | 546 ASCIIToUTF16("text"), |
| 524 fields[0]); | 547 20))); |
| 525 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), | 548 EXPECT_TRUE(fields[1].StrictlyEqualsHack( |
| 526 ASCIIToUTF16("lastname"), | 549 FormField(ASCIIToUTF16("Last name:"), |
| 527 ASCIIToUTF16("Smith"), | 550 ASCIIToUTF16("lastname"), |
| 528 ASCIIToUTF16("text"), | 551 ASCIIToUTF16("Smith"), |
| 529 20), | 552 ASCIIToUTF16("text"), |
| 530 fields[1]); | 553 20))); |
| 531 EXPECT_EQ(FormField(string16(), | 554 EXPECT_TRUE(fields[2].StrictlyEqualsHack( |
| 532 ASCIIToUTF16("reply-send"), | 555 FormField(string16(), |
| 533 ASCIIToUTF16("Send"), | 556 ASCIIToUTF16("reply-send"), |
| 534 ASCIIToUTF16("submit"), | 557 string16(), |
| 535 0), | 558 ASCIIToUTF16("submit"), |
| 536 fields[2]); | 559 0))); |
| 537 } | 560 } |
| 538 | 561 |
| 539 // This test is different from FormManagerTest.Labels in that the label elements | 562 // This test is different from FormManagerTest.Labels in that the label elements |
| 540 // for= attribute is set to the name of the form control element it is a label | 563 // for= attribute is set to the name of the form control element it is a label |
| 541 // for instead of the id of the form control element. This is invalid because | 564 // for instead of the id of the form control element. This is invalid because |
| 542 // the for= attribute must be set to the id of the form control element. | 565 // the for= attribute must be set to the id of the form control element. |
| 543 TEST_F(FormManagerTest, InvalidLabels) { | 566 TEST_F(FormManagerTest, InvalidLabels) { |
| 544 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 567 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 545 " <LABEL for=\"firstname\"> First name: </LABEL>" | 568 " <LABEL for=\"firstname\"> First name: </LABEL>" |
| 546 " <INPUT type=\"text\" name=\"firstname\" value=\"John\"/>" | 569 " <INPUT type=\"text\" name=\"firstname\" value=\"John\"/>" |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 559 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | 582 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); |
| 560 ASSERT_EQ(1U, forms.size()); | 583 ASSERT_EQ(1U, forms.size()); |
| 561 | 584 |
| 562 const FormData& form = forms[0]; | 585 const FormData& form = forms[0]; |
| 563 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | 586 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
| 564 EXPECT_EQ(GURL(web_frame->url()), form.origin); | 587 EXPECT_EQ(GURL(web_frame->url()), form.origin); |
| 565 EXPECT_EQ(GURL("http://cnn.com"), form.action); | 588 EXPECT_EQ(GURL("http://cnn.com"), form.action); |
| 566 | 589 |
| 567 const std::vector<FormField>& fields = form.fields; | 590 const std::vector<FormField>& fields = form.fields; |
| 568 ASSERT_EQ(3U, fields.size()); | 591 ASSERT_EQ(3U, fields.size()); |
| 569 EXPECT_EQ(FormField(string16(), | 592 EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(), |
| 570 ASCIIToUTF16("firstname"), | 593 ASCIIToUTF16("firstname"), |
| 571 ASCIIToUTF16("John"), | 594 ASCIIToUTF16("John"), |
| 572 ASCIIToUTF16("text"), | 595 ASCIIToUTF16("text"), |
| 573 20), | 596 20))); |
| 574 fields[0]); | 597 EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(), |
| 575 EXPECT_EQ(FormField(string16(), | 598 ASCIIToUTF16("lastname"), |
| 576 ASCIIToUTF16("lastname"), | 599 ASCIIToUTF16("Smith"), |
| 577 ASCIIToUTF16("Smith"), | 600 ASCIIToUTF16("text"), |
| 578 ASCIIToUTF16("text"), | 601 20))); |
| 579 20), | 602 EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(), |
| 580 fields[1]); | 603 ASCIIToUTF16("reply-send"), |
| 581 EXPECT_EQ(FormField(string16(), | 604 string16(), |
| 582 ASCIIToUTF16("reply-send"), | 605 ASCIIToUTF16("submit"), |
| 583 ASCIIToUTF16("Send"), | 606 0))); |
| 584 ASCIIToUTF16("submit"), | |
| 585 0), | |
| 586 fields[2]); | |
| 587 } | 607 } |
| 588 | 608 |
| 589 // This test has three form control elements, only one of which has a label | 609 // This test has three form control elements, only one of which has a label |
| 590 // element associated with it. The first element is disabled because of the | 610 // element associated with it. The first element is disabled because of the |
| 591 // autocomplete=off attribute. | 611 // autocomplete=off attribute. |
| 592 TEST_F(FormManagerTest, OneLabelElementFirstControlElementDisabled) { | 612 TEST_F(FormManagerTest, OneLabelElementFirstControlElementDisabled) { |
| 593 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 613 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 594 " First name:" | 614 " First name:" |
| 595 " <INPUT type=\"text\" id=\"firstname\" autocomplete=\"off\"/>" | 615 " <INPUT type=\"text\" id=\"firstname\" autocomplete=\"off\"/>" |
| 596 " <LABEL for=\"middlename\">Middle name: </LABEL>" | 616 " <LABEL for=\"middlename\">Middle name: </LABEL>" |
| (...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1112 EXPECT_TRUE(form_manager.FillForm(form)); | 1132 EXPECT_TRUE(form_manager.FillForm(form)); |
| 1113 | 1133 |
| 1114 // Find the newly-filled form that contains the input element. | 1134 // Find the newly-filled form that contains the input element. |
| 1115 FormData form2; | 1135 FormData form2; |
| 1116 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( | 1136 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( |
| 1117 input_element, FormManager::REQUIRE_NONE, &form2)); | 1137 input_element, FormManager::REQUIRE_NONE, &form2)); |
| 1118 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); | 1138 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
| 1119 EXPECT_EQ(GURL(web_frame->url()), form2.origin); | 1139 EXPECT_EQ(GURL(web_frame->url()), form2.origin); |
| 1120 EXPECT_EQ(GURL("http://buh.com"), form2.action); | 1140 EXPECT_EQ(GURL("http://buh.com"), form2.action); |
| 1121 | 1141 |
| 1122 // TODO(jhawkins): We don't actually compare the value of the field in | |
| 1123 // FormField::operator==()! | |
| 1124 const std::vector<FormField>& fields2 = form2.fields; | 1142 const std::vector<FormField>& fields2 = form2.fields; |
| 1125 EXPECT_EQ(FormField(string16(), | 1143 EXPECT_TRUE(fields2[0].StrictlyEqualsHack( |
| 1126 ASCIIToUTF16("firstname"), | 1144 FormField(string16(), |
| 1127 ASCIIToUTF16("Broth"), | 1145 ASCIIToUTF16("firstname"), |
| 1128 ASCIIToUTF16("text"), | 1146 ASCIIToUTF16("Broth"), |
| 1129 20), | 1147 ASCIIToUTF16("text"), |
| 1130 fields2[0]); | 1148 20))); |
| 1131 EXPECT_EQ(ASCIIToUTF16("Broth"), fields2[0].value()); | 1149 EXPECT_TRUE(fields2[1].StrictlyEqualsHack( |
| 1132 EXPECT_EQ(FormField(string16(), | 1150 FormField(string16(), |
| 1133 ASCIIToUTF16("lastname"), | 1151 ASCIIToUTF16("lastname"), |
| 1134 ASCIIToUTF16("Jonat"), | 1152 ASCIIToUTF16("Jonat"), |
| 1135 ASCIIToUTF16("text"), | 1153 ASCIIToUTF16("text"), |
| 1136 20), | 1154 20))); |
| 1137 fields2[1]); | 1155 EXPECT_TRUE(fields2[2].StrictlyEqualsHack( |
| 1138 EXPECT_EQ(ASCIIToUTF16("Jonat"), fields2[1].value()); | 1156 FormField(string16(), |
| 1139 EXPECT_EQ(FormField(string16(), | 1157 ASCIIToUTF16("reply-send"), |
| 1140 ASCIIToUTF16("reply-send"), | 1158 string16(), |
| 1141 ASCIIToUTF16("Send"), | 1159 ASCIIToUTF16("submit"), |
| 1142 ASCIIToUTF16("submit"), | 1160 0))); |
| 1143 0), | |
| 1144 fields2[2]); | |
| 1145 } | 1161 } |
| 1146 | 1162 |
| 1147 // This test uses negative values of the maxlength attribute for input elements. | 1163 // This test uses negative values of the maxlength attribute for input elements. |
| 1148 // In this case, the maxlength of the input elements is set to the default | 1164 // In this case, the maxlength of the input elements is set to the default |
| 1149 // maxlength (defined in WebKit.) | 1165 // maxlength (defined in WebKit.) |
| 1150 TEST_F(FormManagerTest, FillFormNegativeMaxLength) { | 1166 TEST_F(FormManagerTest, FillFormNegativeMaxLength) { |
| 1151 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 1167 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
| 1152 " <INPUT type=\"text\" id=\"firstname\" maxlength=\"-1\"/>" | 1168 " <INPUT type=\"text\" id=\"firstname\" maxlength=\"-1\"/>" |
| 1153 " <INPUT type=\"text\" id=\"lastname\" maxlength=\"-10\"/>" | 1169 " <INPUT type=\"text\" id=\"lastname\" maxlength=\"-10\"/>" |
| 1154 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1170 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1204 EXPECT_TRUE(form_manager.FillForm(form)); | 1220 EXPECT_TRUE(form_manager.FillForm(form)); |
| 1205 | 1221 |
| 1206 // Find the newly-filled form that contains the input element. | 1222 // Find the newly-filled form that contains the input element. |
| 1207 FormData form2; | 1223 FormData form2; |
| 1208 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( | 1224 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( |
| 1209 input_element, FormManager::REQUIRE_NONE, &form2)); | 1225 input_element, FormManager::REQUIRE_NONE, &form2)); |
| 1210 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); | 1226 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
| 1211 EXPECT_EQ(GURL(web_frame->url()), form2.origin); | 1227 EXPECT_EQ(GURL(web_frame->url()), form2.origin); |
| 1212 EXPECT_EQ(GURL("http://buh.com"), form2.action); | 1228 EXPECT_EQ(GURL("http://buh.com"), form2.action); |
| 1213 | 1229 |
| 1214 // TODO(jhawkins): We don't actually compare the value of the field in | |
| 1215 // FormField::operator==()! | |
| 1216 const std::vector<FormField>& fields2 = form2.fields; | 1230 const std::vector<FormField>& fields2 = form2.fields; |
| 1217 ASSERT_EQ(3U, fields2.size()); | 1231 ASSERT_EQ(3U, fields2.size()); |
| 1218 EXPECT_EQ(FormField(string16(), | 1232 EXPECT_TRUE(fields2[0].StrictlyEqualsHack( |
| 1219 ASCIIToUTF16("firstname"), | 1233 FormField(string16(), |
| 1220 ASCIIToUTF16("Brother"), | 1234 ASCIIToUTF16("firstname"), |
| 1221 ASCIIToUTF16("text"), | 1235 ASCIIToUTF16("Brother"), |
| 1222 20), | 1236 ASCIIToUTF16("text"), |
| 1223 fields2[0]); | 1237 20))); |
| 1224 EXPECT_EQ(ASCIIToUTF16("Brother"), fields2[0].value()); | 1238 EXPECT_TRUE(fields2[1].StrictlyEqualsHack( |
| 1225 EXPECT_EQ(FormField(string16(), | 1239 FormField(string16(), |
| 1226 ASCIIToUTF16("lastname"), | 1240 ASCIIToUTF16("lastname"), |
| 1227 ASCIIToUTF16("Jonathan"), | 1241 ASCIIToUTF16("Jonathan"), |
| 1228 ASCIIToUTF16("text"), | 1242 ASCIIToUTF16("text"), |
| 1229 20), | 1243 20))); |
| 1230 fields2[1]); | 1244 EXPECT_TRUE(fields2[2].StrictlyEqualsHack( |
| 1231 EXPECT_EQ(ASCIIToUTF16("Jonathan"), fields2[1].value()); | 1245 FormField(string16(), |
| 1232 EXPECT_EQ(FormField(string16(), | 1246 ASCIIToUTF16("reply-send"), |
| 1233 ASCIIToUTF16("reply-send"), | 1247 string16(), |
| 1234 ASCIIToUTF16("Send"), | 1248 ASCIIToUTF16("submit"), |
| 1235 ASCIIToUTF16("submit"), | 1249 0))); |
| 1236 0), | |
| 1237 fields2[2]); | |
| 1238 } | 1250 } |
| 1239 | 1251 |
| 1240 // This test sends a FormData object to FillForm with more fields than are in | 1252 // This test sends a FormData object to FillForm with more fields than are in |
| 1241 // the cached WebFormElement. In this case, we only fill out the fields that | 1253 // the cached WebFormElement. In this case, we only fill out the fields that |
| 1242 // match between the FormData object and the WebFormElement. | 1254 // match between the FormData object and the WebFormElement. |
| 1243 TEST_F(FormManagerTest, FillFormMoreFormDataFields) { | 1255 TEST_F(FormManagerTest, FillFormMoreFormDataFields) { |
| 1244 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 1256 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
| 1245 " <INPUT type=\"text\" id=\"firstname\"/>" | 1257 " <INPUT type=\"text\" id=\"firstname\"/>" |
| 1246 " <INPUT type=\"text\" id=\"middlename\"/>" | 1258 " <INPUT type=\"text\" id=\"middlename\"/>" |
| 1247 " <INPUT type=\"text\" id=\"lastname\"/>" | 1259 " <INPUT type=\"text\" id=\"lastname\"/>" |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1312 WebInputElement input_element = element.to<WebInputElement>(); | 1324 WebInputElement input_element = element.to<WebInputElement>(); |
| 1313 | 1325 |
| 1314 // Find the newly-filled form that contains the input element. | 1326 // Find the newly-filled form that contains the input element. |
| 1315 FormData form2; | 1327 FormData form2; |
| 1316 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( | 1328 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( |
| 1317 input_element, FormManager::REQUIRE_NONE, &form2)); | 1329 input_element, FormManager::REQUIRE_NONE, &form2)); |
| 1318 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); | 1330 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
| 1319 EXPECT_EQ(GURL(web_frame->url()), form2.origin); | 1331 EXPECT_EQ(GURL(web_frame->url()), form2.origin); |
| 1320 EXPECT_EQ(GURL("http://buh.com"), form2.action); | 1332 EXPECT_EQ(GURL("http://buh.com"), form2.action); |
| 1321 | 1333 |
| 1322 // TODO(jhawkins): We don't actually compare the value of the field in | |
| 1323 // FormField::operator==()! | |
| 1324 const std::vector<FormField>& fields = form2.fields; | 1334 const std::vector<FormField>& fields = form2.fields; |
| 1325 ASSERT_EQ(4U, fields.size()); | 1335 ASSERT_EQ(4U, fields.size()); |
| 1326 EXPECT_EQ(FormField(string16(), | 1336 EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(), |
| 1327 ASCIIToUTF16("firstname"), | 1337 ASCIIToUTF16("firstname"), |
| 1328 ASCIIToUTF16("Brother"), | 1338 ASCIIToUTF16("Brother"), |
| 1329 ASCIIToUTF16("text"), | 1339 ASCIIToUTF16("text"), |
| 1330 20), | 1340 20))); |
| 1331 fields[0]); | 1341 EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(), |
| 1332 EXPECT_EQ(ASCIIToUTF16("Brother"), fields[0].value()); | 1342 ASCIIToUTF16("middlename"), |
| 1333 EXPECT_EQ(FormField(string16(), | 1343 ASCIIToUTF16("Joseph"), |
| 1334 ASCIIToUTF16("middlename"), | 1344 ASCIIToUTF16("text"), |
| 1335 ASCIIToUTF16("Joseph"), | 1345 20))); |
| 1336 ASCIIToUTF16("text"), | 1346 EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(), |
| 1337 20), | 1347 ASCIIToUTF16("lastname"), |
| 1338 fields[1]); | 1348 ASCIIToUTF16("Jonathan"), |
| 1339 EXPECT_EQ(ASCIIToUTF16("Joseph"), fields[1].value()); | 1349 ASCIIToUTF16("text"), |
| 1340 EXPECT_EQ(FormField(string16(), | 1350 20))); |
| 1341 ASCIIToUTF16("lastname"), | 1351 EXPECT_TRUE(fields[3].StrictlyEqualsHack(FormField(string16(), |
| 1342 ASCIIToUTF16("Jonathan"), | 1352 ASCIIToUTF16("reply-send"), |
| 1343 ASCIIToUTF16("text"), | 1353 string16(), |
| 1344 20), | 1354 ASCIIToUTF16("submit"), |
| 1345 fields[2]); | 1355 0))); |
| 1346 EXPECT_EQ(ASCIIToUTF16("Jonathan"), fields[2].value()); | |
| 1347 EXPECT_EQ(FormField(string16(), | |
| 1348 ASCIIToUTF16("reply-send"), | |
| 1349 ASCIIToUTF16("Send"), | |
| 1350 ASCIIToUTF16("submit"), | |
| 1351 0), | |
| 1352 fields[3]); | |
| 1353 } | 1356 } |
| 1354 | 1357 |
| 1355 // This test sends a FormData object to FillForm with fewer fields than are in | 1358 // This test sends a FormData object to FillForm with fewer fields than are in |
| 1356 // the cached WebFormElement. In this case, we only fill out the fields that | 1359 // the cached WebFormElement. In this case, we only fill out the fields that |
| 1357 // match between the FormData object and the WebFormElement. | 1360 // match between the FormData object and the WebFormElement. |
| 1358 TEST_F(FormManagerTest, FillFormFewerFormDataFields) { | 1361 TEST_F(FormManagerTest, FillFormFewerFormDataFields) { |
| 1359 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 1362 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
| 1360 " <INPUT type=\"text\" id=\"prefix\"/>" | 1363 " <INPUT type=\"text\" id=\"prefix\"/>" |
| 1361 " <INPUT type=\"text\" id=\"firstname\"/>" | 1364 " <INPUT type=\"text\" id=\"firstname\"/>" |
| 1362 " <INPUT type=\"text\" id=\"hidden\"/>" | 1365 " <INPUT type=\"text\" id=\"hidden\"/>" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1399 WebInputElement input_element = element.to<WebInputElement>(); | 1402 WebInputElement input_element = element.to<WebInputElement>(); |
| 1400 | 1403 |
| 1401 // Find the newly-filled form that contains the input element. | 1404 // Find the newly-filled form that contains the input element. |
| 1402 FormData form2; | 1405 FormData form2; |
| 1403 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( | 1406 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( |
| 1404 input_element, FormManager::REQUIRE_NONE, &form2)); | 1407 input_element, FormManager::REQUIRE_NONE, &form2)); |
| 1405 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); | 1408 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
| 1406 EXPECT_EQ(GURL(web_frame->url()), form2.origin); | 1409 EXPECT_EQ(GURL(web_frame->url()), form2.origin); |
| 1407 EXPECT_EQ(GURL("http://buh.com"), form2.action); | 1410 EXPECT_EQ(GURL("http://buh.com"), form2.action); |
| 1408 | 1411 |
| 1409 // TODO(jhawkins): We don't actually compare the value of the field in | |
| 1410 // FormField::operator==()! | |
| 1411 const std::vector<FormField>& fields = form2.fields; | 1412 const std::vector<FormField>& fields = form2.fields; |
| 1412 ASSERT_EQ(8U, fields.size()); | 1413 ASSERT_EQ(8U, fields.size()); |
| 1413 EXPECT_EQ(FormField(string16(), | 1414 EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(), |
| 1414 ASCIIToUTF16("prefix"), | 1415 ASCIIToUTF16("prefix"), |
| 1415 string16(), | 1416 string16(), |
| 1416 ASCIIToUTF16("text"), | 1417 ASCIIToUTF16("text"), |
| 1417 20), | 1418 20))); |
| 1418 fields[0]); | 1419 EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(), |
| 1419 EXPECT_EQ(string16(), fields[0].value()); | 1420 ASCIIToUTF16("firstname"), |
| 1420 EXPECT_EQ(FormField(string16(), | 1421 ASCIIToUTF16("Brother"), |
| 1421 ASCIIToUTF16("firstname"), | 1422 ASCIIToUTF16("text"), |
| 1422 ASCIIToUTF16("Brother"), | 1423 20))); |
| 1423 ASCIIToUTF16("text"), | 1424 EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(), |
| 1424 20), | 1425 ASCIIToUTF16("hidden"), |
| 1425 fields[1]); | 1426 string16(), |
| 1426 EXPECT_EQ(ASCIIToUTF16("Brother"), fields[1].value()); | 1427 ASCIIToUTF16("text"), |
| 1427 EXPECT_EQ(FormField(string16(), | 1428 20))); |
| 1428 ASCIIToUTF16("hidden"), | 1429 EXPECT_TRUE(fields[3].StrictlyEqualsHack(FormField(string16(), |
| 1429 string16(), | 1430 ASCIIToUTF16("middlename"), |
| 1430 ASCIIToUTF16("text"), | 1431 ASCIIToUTF16("Joseph"), |
| 1431 20), | 1432 ASCIIToUTF16("text"), |
| 1432 fields[2]); | 1433 20))); |
| 1433 EXPECT_EQ(string16(), fields[2].value()); | 1434 EXPECT_TRUE(fields[4].StrictlyEqualsHack(FormField(string16(), |
| 1434 EXPECT_EQ(FormField(string16(), | 1435 ASCIIToUTF16("second"), |
| 1435 ASCIIToUTF16("middlename"), | 1436 string16(), |
| 1436 ASCIIToUTF16("Joseph"), | 1437 ASCIIToUTF16("text"), |
| 1437 ASCIIToUTF16("text"), | 1438 20))); |
| 1438 20), | 1439 EXPECT_TRUE(fields[5].StrictlyEqualsHack(FormField(string16(), |
| 1439 fields[3]); | 1440 ASCIIToUTF16("lastname"), |
| 1440 EXPECT_EQ(ASCIIToUTF16("Joseph"), fields[3].value()); | 1441 ASCIIToUTF16("Jonathan"), |
| 1441 EXPECT_EQ(FormField(string16(), | 1442 ASCIIToUTF16("text"), |
| 1442 ASCIIToUTF16("second"), | 1443 20))); |
| 1443 string16(), | 1444 EXPECT_TRUE(fields[6].StrictlyEqualsHack(FormField(string16(), |
| 1444 ASCIIToUTF16("text"), | 1445 ASCIIToUTF16("postfix"), |
| 1445 20), | 1446 string16(), |
| 1446 fields[4]); | 1447 ASCIIToUTF16("text"), |
| 1447 EXPECT_EQ(string16(), fields[4].value()); | 1448 20))); |
| 1448 EXPECT_EQ(FormField(string16(), | 1449 EXPECT_TRUE(fields[7].StrictlyEqualsHack(FormField(string16(), |
| 1449 ASCIIToUTF16("lastname"), | 1450 ASCIIToUTF16("reply-send"), |
| 1450 ASCIIToUTF16("Jonathan"), | 1451 string16(), |
| 1451 ASCIIToUTF16("text"), | 1452 ASCIIToUTF16("submit"), |
| 1452 20), | 1453 0))); |
| 1453 fields[5]); | |
| 1454 EXPECT_EQ(ASCIIToUTF16("Jonathan"), fields[5].value()); | |
| 1455 EXPECT_EQ(FormField(string16(), | |
| 1456 ASCIIToUTF16("postfix"), | |
| 1457 string16(), | |
| 1458 ASCIIToUTF16("text"), | |
| 1459 20), | |
| 1460 fields[6]); | |
| 1461 EXPECT_EQ(string16(), fields[6].value()); | |
| 1462 EXPECT_EQ(FormField(string16(), | |
| 1463 ASCIIToUTF16("reply-send"), | |
| 1464 ASCIIToUTF16("Send"), | |
| 1465 ASCIIToUTF16("submit"), | |
| 1466 0), | |
| 1467 fields[7]); | |
| 1468 } | 1454 } |
| 1469 | 1455 |
| 1470 // This test sends a FormData object to FillForm with a field changed from | 1456 // This test sends a FormData object to FillForm with a field changed from |
| 1471 // those in the cached WebFormElement. In this case, we only fill out the | 1457 // those in the cached WebFormElement. In this case, we only fill out the |
| 1472 // fields that match between the FormData object and the WebFormElement. | 1458 // fields that match between the FormData object and the WebFormElement. |
| 1473 TEST_F(FormManagerTest, FillFormChangedFormDataFields) { | 1459 TEST_F(FormManagerTest, FillFormChangedFormDataFields) { |
| 1474 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 1460 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
| 1475 " <INPUT type=\"text\" id=\"firstname\"/>" | 1461 " <INPUT type=\"text\" id=\"firstname\"/>" |
| 1476 " <INPUT type=\"text\" id=\"middlename\"/>" | 1462 " <INPUT type=\"text\" id=\"middlename\"/>" |
| 1477 " <INPUT type=\"text\" id=\"lastname\"/>" | 1463 " <INPUT type=\"text\" id=\"lastname\"/>" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1511 WebInputElement input_element = element.to<WebInputElement>(); | 1497 WebInputElement input_element = element.to<WebInputElement>(); |
| 1512 | 1498 |
| 1513 // Find the newly-filled form that contains the input element. | 1499 // Find the newly-filled form that contains the input element. |
| 1514 FormData form2; | 1500 FormData form2; |
| 1515 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( | 1501 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( |
| 1516 input_element, FormManager::REQUIRE_NONE, &form2)); | 1502 input_element, FormManager::REQUIRE_NONE, &form2)); |
| 1517 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); | 1503 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
| 1518 EXPECT_EQ(GURL(web_frame->url()), form2.origin); | 1504 EXPECT_EQ(GURL(web_frame->url()), form2.origin); |
| 1519 EXPECT_EQ(GURL("http://buh.com"), form2.action); | 1505 EXPECT_EQ(GURL("http://buh.com"), form2.action); |
| 1520 | 1506 |
| 1521 // TODO(jhawkins): We don't actually compare the value of the field in | |
| 1522 // FormField::operator==()! | |
| 1523 const std::vector<FormField>& fields = form2.fields; | 1507 const std::vector<FormField>& fields = form2.fields; |
| 1524 ASSERT_EQ(4U, fields.size()); | 1508 ASSERT_EQ(4U, fields.size()); |
| 1525 EXPECT_EQ(FormField(string16(), | 1509 EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(), |
| 1526 ASCIIToUTF16("firstname"), | 1510 ASCIIToUTF16("firstname"), |
| 1527 ASCIIToUTF16("Brother"), | 1511 ASCIIToUTF16("Brother"), |
| 1528 ASCIIToUTF16("text"), | 1512 ASCIIToUTF16("text"), |
| 1529 20), | 1513 20))); |
| 1530 fields[0]); | 1514 EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(), |
| 1531 EXPECT_EQ(ASCIIToUTF16("Brother"), fields[0].value()); | 1515 ASCIIToUTF16("middlename"), |
| 1532 EXPECT_EQ(FormField(string16(), | 1516 string16(), |
| 1533 ASCIIToUTF16("middlename"), | 1517 ASCIIToUTF16("text"), |
| 1534 ASCIIToUTF16("Joseph"), | 1518 20))); |
| 1535 ASCIIToUTF16("text"), | 1519 EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(), |
| 1536 20), | 1520 ASCIIToUTF16("lastname"), |
| 1537 fields[1]); | 1521 ASCIIToUTF16("Jonathan"), |
| 1538 EXPECT_EQ(string16(), fields[1].value()); | 1522 ASCIIToUTF16("text"), |
| 1539 EXPECT_EQ(FormField(string16(), | 1523 20))); |
| 1540 ASCIIToUTF16("lastname"), | 1524 EXPECT_TRUE(fields[3].StrictlyEqualsHack(FormField(string16(), |
| 1541 ASCIIToUTF16("Jonathan"), | 1525 ASCIIToUTF16("reply-send"), |
| 1542 ASCIIToUTF16("text"), | 1526 string16(), |
| 1543 20), | 1527 ASCIIToUTF16("submit"), |
| 1544 fields[2]); | 1528 0))); |
| 1545 EXPECT_EQ(ASCIIToUTF16("Jonathan"), fields[2].value()); | |
| 1546 EXPECT_EQ(FormField(string16(), | |
| 1547 ASCIIToUTF16("reply-send"), | |
| 1548 ASCIIToUTF16("Send"), | |
| 1549 ASCIIToUTF16("submit"), | |
| 1550 0), | |
| 1551 fields[3]); | |
| 1552 } | 1529 } |
| 1553 | 1530 |
| 1554 // This test sends a FormData object to FillForm with fewer fields than are in | 1531 // This test sends a FormData object to FillForm with fewer fields than are in |
| 1555 // the cached WebFormElement. In this case, we only fill out the fields that | 1532 // the cached WebFormElement. In this case, we only fill out the fields that |
| 1556 // match between the FormData object and the WebFormElement. | 1533 // match between the FormData object and the WebFormElement. |
| 1557 TEST_F(FormManagerTest, FillFormExtraFieldInCache) { | 1534 TEST_F(FormManagerTest, FillFormExtraFieldInCache) { |
| 1558 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 1535 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
| 1559 " <INPUT type=\"text\" id=\"firstname\"/>" | 1536 " <INPUT type=\"text\" id=\"firstname\"/>" |
| 1560 " <INPUT type=\"text\" id=\"middlename\"/>" | 1537 " <INPUT type=\"text\" id=\"middlename\"/>" |
| 1561 " <INPUT type=\"text\" id=\"lastname\"/>" | 1538 " <INPUT type=\"text\" id=\"lastname\"/>" |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 1592 WebInputElement input_element = element.to<WebInputElement>(); | 1569 WebInputElement input_element = element.to<WebInputElement>(); |
| 1593 | 1570 |
| 1594 // Find the newly-filled form that contains the input element. | 1571 // Find the newly-filled form that contains the input element. |
| 1595 FormData form2; | 1572 FormData form2; |
| 1596 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( | 1573 EXPECT_TRUE(form_manager.FindFormWithFormControlElement( |
| 1597 input_element, FormManager::REQUIRE_NONE, &form2)); | 1574 input_element, FormManager::REQUIRE_NONE, &form2)); |
| 1598 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); | 1575 EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name); |
| 1599 EXPECT_EQ(GURL(web_frame->url()), form2.origin); | 1576 EXPECT_EQ(GURL(web_frame->url()), form2.origin); |
| 1600 EXPECT_EQ(GURL("http://buh.com"), form2.action); | 1577 EXPECT_EQ(GURL("http://buh.com"), form2.action); |
| 1601 | 1578 |
| 1602 // TODO(jhawkins): We don't actually compare the value of the field in | |
| 1603 // FormField::operator==()! | |
| 1604 const std::vector<FormField>& fields = form2.fields; | 1579 const std::vector<FormField>& fields = form2.fields; |
| 1605 ASSERT_EQ(5U, fields.size()); | 1580 ASSERT_EQ(5U, fields.size()); |
| 1606 EXPECT_EQ(FormField(string16(), | 1581 EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(), |
| 1607 ASCIIToUTF16("firstname"), | 1582 ASCIIToUTF16("firstname"), |
| 1608 ASCIIToUTF16("Brother"), | 1583 ASCIIToUTF16("Brother"), |
| 1609 ASCIIToUTF16("text"), | 1584 ASCIIToUTF16("text"), |
| 1610 20), | 1585 20))); |
| 1611 fields[0]); | 1586 EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(), |
| 1612 EXPECT_EQ(ASCIIToUTF16("Brother"), fields[0].value()); | 1587 ASCIIToUTF16("middlename"), |
| 1613 EXPECT_EQ(FormField(string16(), | 1588 ASCIIToUTF16("Joseph"), |
| 1614 ASCIIToUTF16("middlename"), | 1589 ASCIIToUTF16("text"), |
| 1615 ASCIIToUTF16("Joseph"), | 1590 20))); |
| 1616 ASCIIToUTF16("text"), | 1591 EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(), |
| 1617 20), | 1592 ASCIIToUTF16("lastname"), |
| 1618 fields[1]); | 1593 ASCIIToUTF16("Jonathan"), |
| 1619 EXPECT_EQ(ASCIIToUTF16("Joseph"), fields[1].value()); | 1594 ASCIIToUTF16("text"), |
| 1620 EXPECT_EQ(FormField(string16(), | 1595 20))); |
| 1621 ASCIIToUTF16("lastname"), | 1596 EXPECT_TRUE(fields[3].StrictlyEqualsHack(FormField(string16(), |
| 1622 ASCIIToUTF16("Jonathan"), | 1597 ASCIIToUTF16("postfix"), |
| 1623 ASCIIToUTF16("text"), | 1598 string16(), |
| 1624 20), | 1599 ASCIIToUTF16("text"), |
| 1625 fields[2]); | 1600 20))); |
| 1626 EXPECT_EQ(ASCIIToUTF16("Jonathan"), fields[2].value()); | 1601 EXPECT_TRUE(fields[4].StrictlyEqualsHack(FormField(string16(), |
| 1627 EXPECT_EQ(FormField(string16(), | 1602 ASCIIToUTF16("reply-send"), |
| 1628 ASCIIToUTF16("postfix"), | 1603 string16(), |
| 1629 string16(), | 1604 ASCIIToUTF16("submit"), |
| 1630 ASCIIToUTF16("text"), | 1605 0))); |
| 1631 20), | |
| 1632 fields[3]); | |
| 1633 EXPECT_EQ(string16(), fields[3].value()); | |
| 1634 EXPECT_EQ(FormField(string16(), | |
| 1635 ASCIIToUTF16("reply-send"), | |
| 1636 ASCIIToUTF16("Send"), | |
| 1637 ASCIIToUTF16("submit"), | |
| 1638 0), | |
| 1639 fields[4]); | |
| 1640 } | 1606 } |
| 1641 | 1607 |
| 1642 TEST_F(FormManagerTest, FillFormEmptyName) { | 1608 TEST_F(FormManagerTest, FillFormEmptyName) { |
| 1643 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" | 1609 LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">" |
| 1644 " <INPUT type=\"text\" id=\"firstname\"/>" | 1610 " <INPUT type=\"text\" id=\"firstname\"/>" |
| 1645 " <INPUT type=\"text\" id=\"lastname\"/>" | 1611 " <INPUT type=\"text\" id=\"lastname\"/>" |
| 1646 " <INPUT type=\"submit\" value=\"Send\"/>" | 1612 " <INPUT type=\"submit\" value=\"Send\"/>" |
| 1647 "</FORM>"); | 1613 "</FORM>"); |
| 1648 | 1614 |
| 1649 WebFrame* web_frame = GetMainFrame(); | 1615 WebFrame* web_frame = GetMainFrame(); |
| (...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1956 fields[5]); | 1922 fields[5]); |
| 1957 EXPECT_EQ(FormField(string16(), | 1923 EXPECT_EQ(FormField(string16(), |
| 1958 ASCIIToUTF16("reply-send"), | 1924 ASCIIToUTF16("reply-send"), |
| 1959 ASCIIToUTF16("Send"), | 1925 ASCIIToUTF16("Send"), |
| 1960 ASCIIToUTF16("submit"), | 1926 ASCIIToUTF16("submit"), |
| 1961 0), | 1927 0), |
| 1962 fields[6]); | 1928 fields[6]); |
| 1963 } | 1929 } |
| 1964 | 1930 |
| 1965 } // namespace | 1931 } // namespace |
| OLD | NEW |