| 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 "base/string_util.h" | 5 #include "base/string_util.h" |
| 6 #include "base/utf_string_conversions.h" | 6 #include "base/utf_string_conversions.h" |
| 7 #include "chrome/renderer/form_manager.h" | 7 #include "chrome/renderer/form_manager.h" |
| 8 #include "chrome/test/render_view_test.h" | 8 #include "chrome/test/render_view_test.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include "third_party/WebKit/WebKit/chromium/public/WebDocument.h" | 10 #include "third_party/WebKit/WebKit/chromium/public/WebDocument.h" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 using WebKit::WebInputElement; | 25 using WebKit::WebInputElement; |
| 26 using WebKit::WebNode; | 26 using WebKit::WebNode; |
| 27 using WebKit::WebString; | 27 using WebKit::WebString; |
| 28 using WebKit::WebVector; | 28 using WebKit::WebVector; |
| 29 | 29 |
| 30 using webkit_glue::FormData; | 30 using webkit_glue::FormData; |
| 31 using webkit_glue::FormField; | 31 using webkit_glue::FormField; |
| 32 | 32 |
| 33 namespace { | 33 namespace { |
| 34 | 34 |
| 35 typedef RenderViewTest FormManagerTest; | 35 class FormManagerTest : public RenderViewTest { |
| 36 public: |
| 37 // Load a single form from an HTML snippet. |
| 38 void LoadForm(const char* const html, FormData *form); |
| 39 |
| 40 // Test that we have extracted the default form data (disregarding the form |
| 41 // fields). |
| 42 void ExpectDefaultForm(const FormData& form); |
| 43 |
| 44 // Test that the form loaded from |html| has locale |locale|. |
| 45 void ExpectLocale(const char* const locale, const char* const html); |
| 46 }; |
| 47 |
| 48 void FormManagerTest::LoadForm(const char* const html, FormData *form) { |
| 49 LoadHTML(html); |
| 50 |
| 51 WebFrame* web_frame = GetMainFrame(); |
| 52 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
| 53 |
| 54 FormManager form_manager; |
| 55 form_manager.ExtractForms(web_frame); |
| 56 |
| 57 std::vector<FormData> forms; |
| 58 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); |
| 59 ASSERT_EQ(1U, forms.size()); |
| 60 |
| 61 *form = forms[0]; |
| 62 EXPECT_EQ(GURL(web_frame->url()), form->origin); |
| 63 } |
| 64 |
| 65 void FormManagerTest::ExpectDefaultForm(const FormData& form) { |
| 66 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
| 67 EXPECT_EQ(ASCIIToUTF16("post"), form.method); |
| 68 EXPECT_EQ(GURL("http://cnn.com"), form.action); |
| 69 EXPECT_EQ(std::string(), form.locale); |
| 70 } |
| 71 |
| 72 void FormManagerTest::ExpectLocale(const char* const locale, |
| 73 const char* const html) { |
| 74 FormData form; |
| 75 LoadForm(html, &form); |
| 76 EXPECT_EQ(locale, form.locale); |
| 77 } |
| 36 | 78 |
| 37 TEST_F(FormManagerTest, WebFormElementToFormData) { | 79 TEST_F(FormManagerTest, WebFormElementToFormData) { |
| 38 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 80 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 39 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 81 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
| 40 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 82 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
| 41 " <INPUT type=\"hidden\" id=\"notvisible\" value=\"apple\"/>" | 83 " <INPUT type=\"hidden\" id=\"notvisible\" value=\"apple\"/>" |
| 42 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 84 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 43 "</FORM>"); | 85 "</FORM>"); |
| 44 | 86 |
| 45 WebFrame* frame = GetMainFrame(); | 87 WebFrame* frame = GetMainFrame(); |
| 46 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); | 88 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); |
| 47 | 89 |
| 48 WebVector<WebFormElement> forms; | 90 WebVector<WebFormElement> forms; |
| 49 frame->forms(forms); | 91 frame->forms(forms); |
| 50 ASSERT_EQ(1U, forms.size()); | 92 ASSERT_EQ(1U, forms.size()); |
| 51 | 93 |
| 52 FormData form; | 94 FormData form; |
| 53 EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0], | 95 EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0], |
| 54 FormManager::REQUIRE_NONE, | 96 FormManager::REQUIRE_NONE, |
| 55 true, | 97 true, |
| 56 &form)); | 98 &form)); |
| 57 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 58 EXPECT_EQ(GURL(frame->url()), form.origin); | 99 EXPECT_EQ(GURL(frame->url()), form.origin); |
| 59 EXPECT_EQ(GURL("http://cnn.com"), form.action); | 100 ExpectDefaultForm(form); |
| 60 | 101 |
| 61 const std::vector<FormField>& fields = form.fields; | 102 const std::vector<FormField>& fields = form.fields; |
| 62 ASSERT_EQ(4U, fields.size()); | 103 ASSERT_EQ(4U, fields.size()); |
| 63 EXPECT_TRUE(fields[0].StrictlyEqualsHack( | 104 EXPECT_TRUE(fields[0].StrictlyEqualsHack( |
| 64 FormField(string16(), | 105 FormField(string16(), |
| 65 ASCIIToUTF16("firstname"), | 106 ASCIIToUTF16("firstname"), |
| 66 ASCIIToUTF16("John"), | 107 ASCIIToUTF16("John"), |
| 67 ASCIIToUTF16("text"), | 108 ASCIIToUTF16("text"), |
| 68 20))); | 109 20))); |
| 69 EXPECT_TRUE(fields[1].StrictlyEqualsHack( | 110 EXPECT_TRUE(fields[1].StrictlyEqualsHack( |
| 70 FormField(string16(), | 111 FormField(string16(), |
| 71 ASCIIToUTF16("lastname"), | 112 ASCIIToUTF16("lastname"), |
| 72 ASCIIToUTF16("Smith"), | 113 ASCIIToUTF16("Smith"), |
| 73 ASCIIToUTF16("text"), | 114 ASCIIToUTF16("text"), |
| 74 20))); | 115 20))); |
| 75 EXPECT_TRUE(fields[2].StrictlyEqualsHack( | 116 EXPECT_TRUE(fields[2].StrictlyEqualsHack( |
| 76 FormField(string16(), | 117 FormField(string16(), |
| 77 ASCIIToUTF16("notvisible"), | 118 ASCIIToUTF16("notvisible"), |
| 78 ASCIIToUTF16("apple"), | 119 ASCIIToUTF16("apple"), |
| 79 ASCIIToUTF16("hidden"), | 120 ASCIIToUTF16("hidden"), |
| 80 0))); | 121 0))); |
| 81 EXPECT_TRUE(fields[3].StrictlyEqualsHack( | 122 EXPECT_TRUE(fields[3].StrictlyEqualsHack( |
| 82 FormField(string16(), | 123 FormField(string16(), |
| 83 ASCIIToUTF16("reply-send"), | 124 ASCIIToUTF16("reply-send"), |
| 84 string16(), | 125 string16(), |
| 85 ASCIIToUTF16("submit"), | 126 ASCIIToUTF16("submit"), |
| 86 0))); | 127 0))); |
| 87 } | 128 } |
| 88 | 129 |
| 130 // Ensure that form locales are correctly determined from the DOM. |
| 131 // We are essentially duplicating a WebKit layout test here, but better safe |
| 132 // than sorry. |
| 133 TEST_F(FormManagerTest, FormLocale) { |
| 134 // Test the default behavior, when no locale is specified. |
| 135 ExpectLocale("", |
| 136 "<FORM>" |
| 137 " <INPUT type=\"text\" value=\"dummy\"/>" |
| 138 "</FORM>"); |
| 139 |
| 140 // Test that we correctly detect the locale when it is directly specified. |
| 141 ExpectLocale("fr-CA", |
| 142 "<FORM lang=\"fr-CA\">" |
| 143 " <INPUT type=\"text\" value=\"dummy\"/>" |
| 144 "</FORM>"); |
| 145 |
| 146 // Test that the locale is properly inherited. |
| 147 ExpectLocale("en-GB", |
| 148 "<DIV lang=\"en-GB\">" |
| 149 " <FORM>" |
| 150 " <INPUT type=\"text\" value=\"dummy\"/>" |
| 151 " </FORM>" |
| 152 "</DIV>"); |
| 153 |
| 154 // Test that inheritance stops properly. |
| 155 ExpectLocale("en-US", |
| 156 "<DIV lang=\"en-GB\">" |
| 157 " <FORM lang=\"en-US\">" |
| 158 " <INPUT type=\"text\" value=\"dummy\"/>" |
| 159 " </FORM>" |
| 160 "</DIV>"); |
| 161 |
| 162 // Test that we use the Content-Language meta tag as a fallback. |
| 163 ExpectLocale("en-GB", |
| 164 "<HTML>" |
| 165 " <HEAD>" |
| 166 " <META http-equiv=\"Content-Language\" content=\"en-GB\" />" |
| 167 " </HEAD>" |
| 168 " <FORM>" |
| 169 " <INPUT type=\"text\" value=\"dummy\"/>" |
| 170 " </FORM>" |
| 171 "</HTML>"); |
| 172 |
| 173 // WebKit does absolutely no validation of the lang attribute; we shouldn't |
| 174 // validate here either. |
| 175 ExpectLocale(" this is-not a meaningful_locale! ", |
| 176 "<FORM lang=\" this is-not a meaningful_locale! \">" |
| 177 " <INPUT type=\"text\" value=\"dummy\"/>" |
| 178 "</FORM>"); |
| 179 } |
| 180 |
| 89 TEST_F(FormManagerTest, ExtractForms) { | 181 TEST_F(FormManagerTest, ExtractForms) { |
| 90 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 182 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 91 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 183 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
| 92 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 184 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
| 93 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 185 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 94 "</FORM>"); | 186 "</FORM>"); |
| 95 | 187 |
| 96 WebFrame* web_frame = GetMainFrame(); | 188 WebFrame* web_frame = GetMainFrame(); |
| 97 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | 189 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
| 98 | 190 |
| 99 FormManager form_manager; | 191 FormManager form_manager; |
| 100 form_manager.ExtractForms(web_frame); | 192 form_manager.ExtractForms(web_frame); |
| 101 | 193 |
| 102 std::vector<FormData> forms; | 194 std::vector<FormData> forms; |
| 103 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | 195 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); |
| 104 ASSERT_EQ(1U, forms.size()); | 196 ASSERT_EQ(1U, forms.size()); |
| 105 | 197 |
| 106 const FormData& form = forms[0]; | 198 const FormData& form = forms[0]; |
| 107 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 108 EXPECT_EQ(GURL(web_frame->url()), form.origin); | 199 EXPECT_EQ(GURL(web_frame->url()), form.origin); |
| 109 EXPECT_EQ(GURL("http://cnn.com"), form.action); | 200 ExpectDefaultForm(form); |
| 110 | 201 |
| 111 const std::vector<FormField>& fields = form.fields; | 202 const std::vector<FormField>& fields = form.fields; |
| 112 ASSERT_EQ(3U, fields.size()); | 203 ASSERT_EQ(3U, fields.size()); |
| 113 EXPECT_EQ(FormField(string16(), | 204 EXPECT_EQ(FormField(string16(), |
| 114 ASCIIToUTF16("firstname"), | 205 ASCIIToUTF16("firstname"), |
| 115 ASCIIToUTF16("John"), | 206 ASCIIToUTF16("John"), |
| 116 ASCIIToUTF16("text"), | 207 ASCIIToUTF16("text"), |
| 117 20), | 208 20), |
| 118 fields[0]); | 209 fields[0]); |
| 119 EXPECT_EQ(FormField(string16(), | 210 EXPECT_EQ(FormField(string16(), |
| (...skipping 25 matching lines...) Expand all Loading... |
| 145 | 236 |
| 146 FormManager form_manager; | 237 FormManager form_manager; |
| 147 form_manager.ExtractForms(web_frame); | 238 form_manager.ExtractForms(web_frame); |
| 148 | 239 |
| 149 std::vector<FormData> forms; | 240 std::vector<FormData> forms; |
| 150 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | 241 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); |
| 151 ASSERT_EQ(2U, forms.size()); | 242 ASSERT_EQ(2U, forms.size()); |
| 152 | 243 |
| 153 // First form. | 244 // First form. |
| 154 const FormData& form = forms[0]; | 245 const FormData& form = forms[0]; |
| 155 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 156 EXPECT_EQ(GURL(web_frame->url()), form.origin); | 246 EXPECT_EQ(GURL(web_frame->url()), form.origin); |
| 157 EXPECT_EQ(GURL("http://cnn.com"), form.action); | 247 ExpectDefaultForm(form); |
| 158 | 248 |
| 159 const std::vector<FormField>& fields = form.fields; | 249 const std::vector<FormField>& fields = form.fields; |
| 160 ASSERT_EQ(2U, fields.size()); | 250 ASSERT_EQ(2U, fields.size()); |
| 161 EXPECT_EQ(FormField(string16(), | 251 EXPECT_EQ(FormField(string16(), |
| 162 ASCIIToUTF16("firstname"), | 252 ASCIIToUTF16("firstname"), |
| 163 ASCIIToUTF16("John"), | 253 ASCIIToUTF16("John"), |
| 164 ASCIIToUTF16("text"), | 254 ASCIIToUTF16("text"), |
| 165 20), | 255 20), |
| 166 fields[0]); | 256 fields[0]); |
| 167 EXPECT_EQ(FormField(string16(), | 257 EXPECT_EQ(FormField(string16(), |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 form_manager.ExtractForms(web_frame); | 322 form_manager.ExtractForms(web_frame); |
| 233 | 323 |
| 234 forms.clear(); | 324 forms.clear(); |
| 235 form_manager.GetForms(FormManager::REQUIRE_AUTOCOMPLETE, &forms); | 325 form_manager.GetForms(FormManager::REQUIRE_AUTOCOMPLETE, &forms); |
| 236 ASSERT_EQ(1U, forms.size()); | 326 ASSERT_EQ(1U, forms.size()); |
| 237 | 327 |
| 238 const FormData& form = forms[0]; | 328 const FormData& form = forms[0]; |
| 239 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | 329 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); |
| 240 EXPECT_EQ(GURL(web_frame->url()), form.origin); | 330 EXPECT_EQ(GURL(web_frame->url()), form.origin); |
| 241 EXPECT_EQ(GURL("http://abc.com"), form.action); | 331 EXPECT_EQ(GURL("http://abc.com"), form.action); |
| 332 EXPECT_EQ(std::string(), form.locale); |
| 242 | 333 |
| 243 const std::vector<FormField>& fields = form.fields; | 334 const std::vector<FormField>& fields = form.fields; |
| 244 ASSERT_EQ(2U, fields.size()); | 335 ASSERT_EQ(2U, fields.size()); |
| 245 EXPECT_EQ(FormField(string16(), | 336 EXPECT_EQ(FormField(string16(), |
| 246 ASCIIToUTF16("lastname"), | 337 ASCIIToUTF16("lastname"), |
| 247 ASCIIToUTF16("Smith"), | 338 ASCIIToUTF16("Smith"), |
| 248 ASCIIToUTF16("text"), | 339 ASCIIToUTF16("text"), |
| 249 20), | 340 20), |
| 250 fields[0]); | 341 fields[0]); |
| 251 EXPECT_EQ(FormField(string16(), | 342 EXPECT_EQ(FormField(string16(), |
| (...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 616 | 707 |
| 617 // There should be no forms after the call to Reset. | 708 // There should be no forms after the call to Reset. |
| 618 form_manager.Reset(); | 709 form_manager.Reset(); |
| 619 | 710 |
| 620 forms.clear(); | 711 forms.clear(); |
| 621 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | 712 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); |
| 622 ASSERT_EQ(0U, forms.size()); | 713 ASSERT_EQ(0U, forms.size()); |
| 623 } | 714 } |
| 624 | 715 |
| 625 TEST_F(FormManagerTest, Labels) { | 716 TEST_F(FormManagerTest, Labels) { |
| 626 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 717 FormData form; |
| 718 LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 627 " <LABEL for=\"firstname\"> First name: </LABEL>" | 719 " <LABEL for=\"firstname\"> First name: </LABEL>" |
| 628 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 720 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
| 629 " <LABEL for=\"lastname\"> Last name: </LABEL>" | 721 " <LABEL for=\"lastname\"> Last name: </LABEL>" |
| 630 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 722 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
| 631 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 723 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 632 "</FORM>"); | 724 "</FORM>", |
| 633 | 725 &form); |
| 634 WebFrame* web_frame = GetMainFrame(); | 726 ExpectDefaultForm(form); |
| 635 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | |
| 636 | |
| 637 FormManager form_manager; | |
| 638 form_manager.ExtractForms(web_frame); | |
| 639 | |
| 640 std::vector<FormData> forms; | |
| 641 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | |
| 642 ASSERT_EQ(1U, forms.size()); | |
| 643 | |
| 644 const FormData& form = forms[0]; | |
| 645 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 646 EXPECT_EQ(GURL(web_frame->url()), form.origin); | |
| 647 EXPECT_EQ(GURL("http://cnn.com"), form.action); | |
| 648 | 727 |
| 649 const std::vector<FormField>& fields = form.fields; | 728 const std::vector<FormField>& fields = form.fields; |
| 650 ASSERT_EQ(3U, fields.size()); | 729 ASSERT_EQ(3U, fields.size()); |
| 651 EXPECT_TRUE(fields[0].StrictlyEqualsHack( | 730 EXPECT_TRUE(fields[0].StrictlyEqualsHack( |
| 652 FormField(ASCIIToUTF16("First name:"), | 731 FormField(ASCIIToUTF16("First name:"), |
| 653 ASCIIToUTF16("firstname"), | 732 ASCIIToUTF16("firstname"), |
| 654 ASCIIToUTF16("John"), | 733 ASCIIToUTF16("John"), |
| 655 ASCIIToUTF16("text"), | 734 ASCIIToUTF16("text"), |
| 656 20))); | 735 20))); |
| 657 EXPECT_TRUE(fields[1].StrictlyEqualsHack( | 736 EXPECT_TRUE(fields[1].StrictlyEqualsHack( |
| 658 FormField(ASCIIToUTF16("Last name:"), | 737 FormField(ASCIIToUTF16("Last name:"), |
| 659 ASCIIToUTF16("lastname"), | 738 ASCIIToUTF16("lastname"), |
| 660 ASCIIToUTF16("Smith"), | 739 ASCIIToUTF16("Smith"), |
| 661 ASCIIToUTF16("text"), | 740 ASCIIToUTF16("text"), |
| 662 20))); | 741 20))); |
| 663 EXPECT_TRUE(fields[2].StrictlyEqualsHack( | 742 EXPECT_TRUE(fields[2].StrictlyEqualsHack( |
| 664 FormField(string16(), | 743 FormField(string16(), |
| 665 ASCIIToUTF16("reply-send"), | 744 ASCIIToUTF16("reply-send"), |
| 666 string16(), | 745 string16(), |
| 667 ASCIIToUTF16("submit"), | 746 ASCIIToUTF16("submit"), |
| 668 0))); | 747 0))); |
| 669 } | 748 } |
| 670 | 749 |
| 671 TEST_F(FormManagerTest, LabelsWithSpans) { | 750 TEST_F(FormManagerTest, LabelsWithSpans) { |
| 672 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 751 FormData form; |
| 752 LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 673 " <LABEL for=\"firstname\"><span>First name: </span></LABEL>" | 753 " <LABEL for=\"firstname\"><span>First name: </span></LABEL>" |
| 674 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 754 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
| 675 " <LABEL for=\"lastname\"><span>Last name: </span></LABEL>" | 755 " <LABEL for=\"lastname\"><span>Last name: </span></LABEL>" |
| 676 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 756 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
| 677 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 757 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 678 "</FORM>"); | 758 "</FORM>", |
| 679 | 759 &form); |
| 680 WebFrame* web_frame = GetMainFrame(); | 760 ExpectDefaultForm(form); |
| 681 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | |
| 682 | |
| 683 FormManager form_manager; | |
| 684 form_manager.ExtractForms(web_frame); | |
| 685 | |
| 686 std::vector<FormData> forms; | |
| 687 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | |
| 688 ASSERT_EQ(1U, forms.size()); | |
| 689 | |
| 690 const FormData& form = forms[0]; | |
| 691 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 692 EXPECT_EQ(GURL(web_frame->url()), form.origin); | |
| 693 EXPECT_EQ(GURL("http://cnn.com"), form.action); | |
| 694 | 761 |
| 695 const std::vector<FormField>& fields = form.fields; | 762 const std::vector<FormField>& fields = form.fields; |
| 696 ASSERT_EQ(3U, fields.size()); | 763 ASSERT_EQ(3U, fields.size()); |
| 697 EXPECT_TRUE(fields[0].StrictlyEqualsHack( | 764 EXPECT_TRUE(fields[0].StrictlyEqualsHack( |
| 698 FormField(ASCIIToUTF16("First name:"), | 765 FormField(ASCIIToUTF16("First name:"), |
| 699 ASCIIToUTF16("firstname"), | 766 ASCIIToUTF16("firstname"), |
| 700 ASCIIToUTF16("John"), | 767 ASCIIToUTF16("John"), |
| 701 ASCIIToUTF16("text"), | 768 ASCIIToUTF16("text"), |
| 702 20))); | 769 20))); |
| 703 EXPECT_TRUE(fields[1].StrictlyEqualsHack( | 770 EXPECT_TRUE(fields[1].StrictlyEqualsHack( |
| 704 FormField(ASCIIToUTF16("Last name:"), | 771 FormField(ASCIIToUTF16("Last name:"), |
| 705 ASCIIToUTF16("lastname"), | 772 ASCIIToUTF16("lastname"), |
| 706 ASCIIToUTF16("Smith"), | 773 ASCIIToUTF16("Smith"), |
| 707 ASCIIToUTF16("text"), | 774 ASCIIToUTF16("text"), |
| 708 20))); | 775 20))); |
| 709 EXPECT_TRUE(fields[2].StrictlyEqualsHack( | 776 EXPECT_TRUE(fields[2].StrictlyEqualsHack( |
| 710 FormField(string16(), | 777 FormField(string16(), |
| 711 ASCIIToUTF16("reply-send"), | 778 ASCIIToUTF16("reply-send"), |
| 712 string16(), | 779 string16(), |
| 713 ASCIIToUTF16("submit"), | 780 ASCIIToUTF16("submit"), |
| 714 0))); | 781 0))); |
| 715 } | 782 } |
| 716 | 783 |
| 717 // This test is different from FormManagerTest.Labels in that the label elements | 784 // This test is different from FormManagerTest.Labels in that the label elements |
| 718 // for= attribute is set to the name of the form control element it is a label | 785 // for= attribute is set to the name of the form control element it is a label |
| 719 // for instead of the id of the form control element. This is invalid because | 786 // for instead of the id of the form control element. This is invalid because |
| 720 // the for= attribute must be set to the id of the form control element. | 787 // the for= attribute must be set to the id of the form control element. |
| 721 TEST_F(FormManagerTest, InvalidLabels) { | 788 TEST_F(FormManagerTest, InvalidLabels) { |
| 722 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 789 FormData form; |
| 790 LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 723 " <LABEL for=\"firstname\"> First name: </LABEL>" | 791 " <LABEL for=\"firstname\"> First name: </LABEL>" |
| 724 " <INPUT type=\"text\" name=\"firstname\" value=\"John\"/>" | 792 " <INPUT type=\"text\" name=\"firstname\" value=\"John\"/>" |
| 725 " <LABEL for=\"lastname\"> Last name: </LABEL>" | 793 " <LABEL for=\"lastname\"> Last name: </LABEL>" |
| 726 " <INPUT type=\"text\" name=\"lastname\" value=\"Smith\"/>" | 794 " <INPUT type=\"text\" name=\"lastname\" value=\"Smith\"/>" |
| 727 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 795 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 728 "</FORM>"); | 796 "</FORM>", |
| 729 | 797 &form); |
| 730 WebFrame* web_frame = GetMainFrame(); | 798 ExpectDefaultForm(form); |
| 731 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | |
| 732 | |
| 733 FormManager form_manager; | |
| 734 form_manager.ExtractForms(web_frame); | |
| 735 | |
| 736 std::vector<FormData> forms; | |
| 737 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | |
| 738 ASSERT_EQ(1U, forms.size()); | |
| 739 | |
| 740 const FormData& form = forms[0]; | |
| 741 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 742 EXPECT_EQ(GURL(web_frame->url()), form.origin); | |
| 743 EXPECT_EQ(GURL("http://cnn.com"), form.action); | |
| 744 | 799 |
| 745 const std::vector<FormField>& fields = form.fields; | 800 const std::vector<FormField>& fields = form.fields; |
| 746 ASSERT_EQ(3U, fields.size()); | 801 ASSERT_EQ(3U, fields.size()); |
| 747 EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(), | 802 EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(), |
| 748 ASCIIToUTF16("firstname"), | 803 ASCIIToUTF16("firstname"), |
| 749 ASCIIToUTF16("John"), | 804 ASCIIToUTF16("John"), |
| 750 ASCIIToUTF16("text"), | 805 ASCIIToUTF16("text"), |
| 751 20))); | 806 20))); |
| 752 EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(), | 807 EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(), |
| 753 ASCIIToUTF16("lastname"), | 808 ASCIIToUTF16("lastname"), |
| (...skipping 25 matching lines...) Expand all Loading... |
| 779 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | 834 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); |
| 780 | 835 |
| 781 FormManager form_manager; | 836 FormManager form_manager; |
| 782 form_manager.ExtractForms(web_frame); | 837 form_manager.ExtractForms(web_frame); |
| 783 | 838 |
| 784 std::vector<FormData> forms; | 839 std::vector<FormData> forms; |
| 785 form_manager.GetForms(FormManager::REQUIRE_AUTOCOMPLETE, &forms); | 840 form_manager.GetForms(FormManager::REQUIRE_AUTOCOMPLETE, &forms); |
| 786 ASSERT_EQ(1U, forms.size()); | 841 ASSERT_EQ(1U, forms.size()); |
| 787 | 842 |
| 788 const FormData& form = forms[0]; | 843 const FormData& form = forms[0]; |
| 789 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 790 EXPECT_EQ(GURL(web_frame->url()), form.origin); | 844 EXPECT_EQ(GURL(web_frame->url()), form.origin); |
| 791 EXPECT_EQ(GURL("http://cnn.com"), form.action); | 845 ExpectDefaultForm(form); |
| 792 | 846 |
| 793 const std::vector<FormField>& fields = form.fields; | 847 const std::vector<FormField>& fields = form.fields; |
| 794 ASSERT_EQ(3U, fields.size()); | 848 ASSERT_EQ(3U, fields.size()); |
| 795 EXPECT_EQ(FormField(ASCIIToUTF16("Middle name:"), | 849 EXPECT_EQ(FormField(ASCIIToUTF16("Middle name:"), |
| 796 ASCIIToUTF16("middlename"), | 850 ASCIIToUTF16("middlename"), |
| 797 string16(), | 851 string16(), |
| 798 ASCIIToUTF16("text"), | 852 ASCIIToUTF16("text"), |
| 799 20), | 853 20), |
| 800 fields[0]); | 854 fields[0]); |
| 801 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), | 855 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), |
| 802 ASCIIToUTF16("lastname"), | 856 ASCIIToUTF16("lastname"), |
| 803 string16(), | 857 string16(), |
| 804 ASCIIToUTF16("text"), | 858 ASCIIToUTF16("text"), |
| 805 20), | 859 20), |
| 806 fields[1]); | 860 fields[1]); |
| 807 EXPECT_EQ(FormField(string16(), | 861 EXPECT_EQ(FormField(string16(), |
| 808 ASCIIToUTF16("reply-send"), | 862 ASCIIToUTF16("reply-send"), |
| 809 ASCIIToUTF16("Send"), | 863 ASCIIToUTF16("Send"), |
| 810 ASCIIToUTF16("submit"), | 864 ASCIIToUTF16("submit"), |
| 811 0), | 865 0), |
| 812 fields[2]); | 866 fields[2]); |
| 813 } | 867 } |
| 814 | 868 |
| 815 TEST_F(FormManagerTest, LabelsInferredFromText) { | 869 TEST_F(FormManagerTest, LabelsInferredFromText) { |
| 816 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 870 FormData form; |
| 871 LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 817 " First name:" | 872 " First name:" |
| 818 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" | 873 " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>" |
| 819 " Last name:" | 874 " Last name:" |
| 820 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 875 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
| 821 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 876 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 822 "</FORM>"); | 877 "</FORM>", |
| 823 | 878 &form); |
| 824 WebFrame* web_frame = GetMainFrame(); | 879 ExpectDefaultForm(form); |
| 825 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | |
| 826 | |
| 827 FormManager form_manager; | |
| 828 form_manager.ExtractForms(web_frame); | |
| 829 | |
| 830 std::vector<FormData> forms; | |
| 831 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | |
| 832 ASSERT_EQ(1U, forms.size()); | |
| 833 | |
| 834 const FormData& form = forms[0]; | |
| 835 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 836 EXPECT_EQ(GURL(web_frame->url()), form.origin); | |
| 837 EXPECT_EQ(GURL("http://cnn.com"), form.action); | |
| 838 | 880 |
| 839 const std::vector<FormField>& fields = form.fields; | 881 const std::vector<FormField>& fields = form.fields; |
| 840 ASSERT_EQ(3U, fields.size()); | 882 ASSERT_EQ(3U, fields.size()); |
| 841 EXPECT_EQ(FormField(ASCIIToUTF16("First name:"), | 883 EXPECT_EQ(FormField(ASCIIToUTF16("First name:"), |
| 842 ASCIIToUTF16("firstname"), | 884 ASCIIToUTF16("firstname"), |
| 843 ASCIIToUTF16("John"), | 885 ASCIIToUTF16("John"), |
| 844 ASCIIToUTF16("text"), | 886 ASCIIToUTF16("text"), |
| 845 20), | 887 20), |
| 846 fields[0]); | 888 fields[0]); |
| 847 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), | 889 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), |
| 848 ASCIIToUTF16("lastname"), | 890 ASCIIToUTF16("lastname"), |
| 849 ASCIIToUTF16("Smith"), | 891 ASCIIToUTF16("Smith"), |
| 850 ASCIIToUTF16("text"), | 892 ASCIIToUTF16("text"), |
| 851 20), | 893 20), |
| 852 fields[1]); | 894 fields[1]); |
| 853 EXPECT_EQ(FormField(string16(), | 895 EXPECT_EQ(FormField(string16(), |
| 854 ASCIIToUTF16("reply-send"), | 896 ASCIIToUTF16("reply-send"), |
| 855 ASCIIToUTF16("Send"), | 897 ASCIIToUTF16("Send"), |
| 856 ASCIIToUTF16("submit"), | 898 ASCIIToUTF16("submit"), |
| 857 0), | 899 0), |
| 858 fields[2]); | 900 fields[2]); |
| 859 } | 901 } |
| 860 | 902 |
| 861 TEST_F(FormManagerTest, LabelsInferredFromTextHidden) { | 903 TEST_F(FormManagerTest, LabelsInferredFromTextHidden) { |
| 862 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 904 FormData form; |
| 905 LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 863 " First name:" | 906 " First name:" |
| 864 " <INPUT type=\"hidden\" id=\"firstname\" value=\"John\"/>" | 907 " <INPUT type=\"hidden\" id=\"firstname\" value=\"John\"/>" |
| 865 " Last name:" | 908 " Last name:" |
| 866 " <INPUT type=\"hidden\" id=\"lastname\" value=\"Smith\"/>" | 909 " <INPUT type=\"hidden\" id=\"lastname\" value=\"Smith\"/>" |
| 867 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 910 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 868 "</FORM>"); | 911 "</FORM>", |
| 869 | 912 &form); |
| 870 WebFrame* web_frame = GetMainFrame(); | 913 ExpectDefaultForm(form); |
| 871 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | |
| 872 | |
| 873 FormManager form_manager; | |
| 874 form_manager.ExtractForms(web_frame); | |
| 875 | |
| 876 std::vector<FormData> forms; | |
| 877 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | |
| 878 ASSERT_EQ(1U, forms.size()); | |
| 879 | |
| 880 const FormData& form = forms[0]; | |
| 881 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 882 EXPECT_EQ(GURL(web_frame->url()), form.origin); | |
| 883 EXPECT_EQ(GURL("http://cnn.com"), form.action); | |
| 884 | 914 |
| 885 const std::vector<FormField>& fields = form.fields; | 915 const std::vector<FormField>& fields = form.fields; |
| 886 ASSERT_EQ(3U, fields.size()); | 916 ASSERT_EQ(3U, fields.size()); |
| 887 EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(), | 917 EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(), |
| 888 ASCIIToUTF16("firstname"), | 918 ASCIIToUTF16("firstname"), |
| 889 ASCIIToUTF16("John"), | 919 ASCIIToUTF16("John"), |
| 890 ASCIIToUTF16("hidden"), | 920 ASCIIToUTF16("hidden"), |
| 891 0))); | 921 0))); |
| 892 EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(), | 922 EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(), |
| 893 ASCIIToUTF16("lastname"), | 923 ASCIIToUTF16("lastname"), |
| 894 ASCIIToUTF16("Smith"), | 924 ASCIIToUTF16("Smith"), |
| 895 ASCIIToUTF16("hidden"), | 925 ASCIIToUTF16("hidden"), |
| 896 0))); | 926 0))); |
| 897 EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(), | 927 EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(), |
| 898 ASCIIToUTF16("reply-send"), | 928 ASCIIToUTF16("reply-send"), |
| 899 string16(), | 929 string16(), |
| 900 ASCIIToUTF16("submit"), | 930 ASCIIToUTF16("submit"), |
| 901 0))); | 931 0))); |
| 902 } | 932 } |
| 903 | 933 |
| 904 TEST_F(FormManagerTest, LabelsInferredFromParagraph) { | 934 TEST_F(FormManagerTest, LabelsInferredFromParagraph) { |
| 905 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 935 FormData form; |
| 936 LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 906 " <P>First name:</P><INPUT type=\"text\" " | 937 " <P>First name:</P><INPUT type=\"text\" " |
| 907 " id=\"firstname\" value=\"John\"/>" | 938 " id=\"firstname\" value=\"John\"/>" |
| 908 " <P>Last name:</P>" | 939 " <P>Last name:</P>" |
| 909 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 940 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
| 910 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 941 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 911 "</FORM>"); | 942 "</FORM>", |
| 912 | 943 &form); |
| 913 WebFrame* web_frame = GetMainFrame(); | 944 ExpectDefaultForm(form); |
| 914 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | |
| 915 | |
| 916 FormManager form_manager; | |
| 917 form_manager.ExtractForms(web_frame); | |
| 918 | |
| 919 std::vector<FormData> forms; | |
| 920 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | |
| 921 ASSERT_EQ(1U, forms.size()); | |
| 922 | |
| 923 const FormData& form = forms[0]; | |
| 924 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 925 EXPECT_EQ(GURL(web_frame->url()), form.origin); | |
| 926 EXPECT_EQ(GURL("http://cnn.com"), form.action); | |
| 927 | 945 |
| 928 const std::vector<FormField>& fields = form.fields; | 946 const std::vector<FormField>& fields = form.fields; |
| 929 ASSERT_EQ(3U, fields.size()); | 947 ASSERT_EQ(3U, fields.size()); |
| 930 EXPECT_EQ(FormField(ASCIIToUTF16("First name:"), | 948 EXPECT_EQ(FormField(ASCIIToUTF16("First name:"), |
| 931 ASCIIToUTF16("firstname"), | 949 ASCIIToUTF16("firstname"), |
| 932 ASCIIToUTF16("John"), | 950 ASCIIToUTF16("John"), |
| 933 ASCIIToUTF16("text"), | 951 ASCIIToUTF16("text"), |
| 934 20), | 952 20), |
| 935 fields[0]); | 953 fields[0]); |
| 936 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), | 954 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), |
| 937 ASCIIToUTF16("lastname"), | 955 ASCIIToUTF16("lastname"), |
| 938 ASCIIToUTF16("Smith"), | 956 ASCIIToUTF16("Smith"), |
| 939 ASCIIToUTF16("text"), | 957 ASCIIToUTF16("text"), |
| 940 20), | 958 20), |
| 941 fields[1]); | 959 fields[1]); |
| 942 EXPECT_EQ(FormField(string16(), | 960 EXPECT_EQ(FormField(string16(), |
| 943 ASCIIToUTF16("reply-send"), | 961 ASCIIToUTF16("reply-send"), |
| 944 ASCIIToUTF16("Send"), | 962 ASCIIToUTF16("Send"), |
| 945 ASCIIToUTF16("submit"), | 963 ASCIIToUTF16("submit"), |
| 946 0), | 964 0), |
| 947 fields[2]); | 965 fields[2]); |
| 948 } | 966 } |
| 949 | 967 |
| 950 TEST_F(FormManagerTest, LabelsInferredFromTableCell) { | 968 TEST_F(FormManagerTest, LabelsInferredFromTableCell) { |
| 951 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 969 FormData form; |
| 970 LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 952 "<TABLE>" | 971 "<TABLE>" |
| 953 " <TR>" | 972 " <TR>" |
| 954 " <TD>First name:</TD>" | 973 " <TD>First name:</TD>" |
| 955 " <TD><INPUT type=\"text\" id=\"firstname\" value=\"John\"/></TD>" | 974 " <TD><INPUT type=\"text\" id=\"firstname\" value=\"John\"/></TD>" |
| 956 " </TR>" | 975 " </TR>" |
| 957 " <TR>" | 976 " <TR>" |
| 958 " <TD>Last name:</TD>" | 977 " <TD>Last name:</TD>" |
| 959 " <TD><INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/></TD>" | 978 " <TD><INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/></TD>" |
| 960 " </TR>" | 979 " </TR>" |
| 961 " <TR>" | 980 " <TR>" |
| 962 " <TD></TD>" | 981 " <TD></TD>" |
| 963 " <TD>" | 982 " <TD>" |
| 964 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 983 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 965 " </TD>" | 984 " </TD>" |
| 966 " </TR>" | 985 " </TR>" |
| 967 "</TABLE>" | 986 "</TABLE>" |
| 968 "</FORM>"); | 987 "</FORM>", |
| 969 | 988 &form); |
| 970 WebFrame* web_frame = GetMainFrame(); | 989 ExpectDefaultForm(form); |
| 971 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | |
| 972 | |
| 973 FormManager form_manager; | |
| 974 form_manager.ExtractForms(web_frame); | |
| 975 | |
| 976 std::vector<FormData> forms; | |
| 977 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | |
| 978 ASSERT_EQ(1U, forms.size()); | |
| 979 | |
| 980 const FormData& form = forms[0]; | |
| 981 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 982 EXPECT_EQ(GURL(web_frame->url()), form.origin); | |
| 983 EXPECT_EQ(GURL("http://cnn.com"), form.action); | |
| 984 | 990 |
| 985 const std::vector<FormField>& fields = form.fields; | 991 const std::vector<FormField>& fields = form.fields; |
| 986 ASSERT_EQ(3U, fields.size()); | 992 ASSERT_EQ(3U, fields.size()); |
| 987 EXPECT_EQ(FormField(ASCIIToUTF16("First name:"), | 993 EXPECT_EQ(FormField(ASCIIToUTF16("First name:"), |
| 988 ASCIIToUTF16("firstname"), | 994 ASCIIToUTF16("firstname"), |
| 989 ASCIIToUTF16("John"), | 995 ASCIIToUTF16("John"), |
| 990 ASCIIToUTF16("text"), | 996 ASCIIToUTF16("text"), |
| 991 20), | 997 20), |
| 992 fields[0]); | 998 fields[0]); |
| 993 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), | 999 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), |
| 994 ASCIIToUTF16("lastname"), | 1000 ASCIIToUTF16("lastname"), |
| 995 ASCIIToUTF16("Smith"), | 1001 ASCIIToUTF16("Smith"), |
| 996 ASCIIToUTF16("text"), | 1002 ASCIIToUTF16("text"), |
| 997 20), | 1003 20), |
| 998 fields[1]); | 1004 fields[1]); |
| 999 EXPECT_EQ(FormField(string16(), | 1005 EXPECT_EQ(FormField(string16(), |
| 1000 ASCIIToUTF16("reply-send"), | 1006 ASCIIToUTF16("reply-send"), |
| 1001 ASCIIToUTF16("Send"), | 1007 ASCIIToUTF16("Send"), |
| 1002 ASCIIToUTF16("submit"), | 1008 ASCIIToUTF16("submit"), |
| 1003 0), | 1009 0), |
| 1004 fields[2]); | 1010 fields[2]); |
| 1005 } | 1011 } |
| 1006 | 1012 |
| 1007 TEST_F(FormManagerTest, LabelsInferredFromTableCellNested) { | 1013 TEST_F(FormManagerTest, LabelsInferredFromTableCellNested) { |
| 1008 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1014 FormData form; |
| 1015 LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 1009 "<TABLE>" | 1016 "<TABLE>" |
| 1010 " <TR>" | 1017 " <TR>" |
| 1011 " <TD>" | 1018 " <TD>" |
| 1012 " <FONT>" | 1019 " <FONT>" |
| 1013 " First name:" | 1020 " First name:" |
| 1014 " </FONT>" | 1021 " </FONT>" |
| 1015 " <FONT>" | 1022 " <FONT>" |
| 1016 " Bogus" | 1023 " Bogus" |
| 1017 " </FONT>" | 1024 " </FONT>" |
| 1018 " </TD>" | 1025 " </TD>" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1034 " </FONT>" | 1041 " </FONT>" |
| 1035 " </TD>" | 1042 " </TD>" |
| 1036 " </TR>" | 1043 " </TR>" |
| 1037 " <TR>" | 1044 " <TR>" |
| 1038 " <TD></TD>" | 1045 " <TD></TD>" |
| 1039 " <TD>" | 1046 " <TD>" |
| 1040 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1047 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 1041 " </TD>" | 1048 " </TD>" |
| 1042 " </TR>" | 1049 " </TR>" |
| 1043 "</TABLE>" | 1050 "</TABLE>" |
| 1044 "</FORM>"); | 1051 "</FORM>", |
| 1045 | 1052 &form); |
| 1046 WebFrame* web_frame = GetMainFrame(); | 1053 ExpectDefaultForm(form); |
| 1047 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | |
| 1048 | |
| 1049 FormManager form_manager; | |
| 1050 form_manager.ExtractForms(web_frame); | |
| 1051 | |
| 1052 std::vector<FormData> forms; | |
| 1053 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | |
| 1054 ASSERT_EQ(1U, forms.size()); | |
| 1055 | |
| 1056 const FormData& form = forms[0]; | |
| 1057 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 1058 EXPECT_EQ(GURL(web_frame->url()), form.origin); | |
| 1059 EXPECT_EQ(GURL("http://cnn.com"), form.action); | |
| 1060 | 1054 |
| 1061 const std::vector<FormField>& fields = form.fields; | 1055 const std::vector<FormField>& fields = form.fields; |
| 1062 ASSERT_EQ(3U, fields.size()); | 1056 ASSERT_EQ(3U, fields.size()); |
| 1063 EXPECT_EQ(FormField(ASCIIToUTF16("First name:Bogus"), | 1057 EXPECT_EQ(FormField(ASCIIToUTF16("First name:Bogus"), |
| 1064 ASCIIToUTF16("firstname"), | 1058 ASCIIToUTF16("firstname"), |
| 1065 ASCIIToUTF16("John"), | 1059 ASCIIToUTF16("John"), |
| 1066 ASCIIToUTF16("text"), | 1060 ASCIIToUTF16("text"), |
| 1067 20), | 1061 20), |
| 1068 fields[0]); | 1062 fields[0]); |
| 1069 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), | 1063 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), |
| 1070 ASCIIToUTF16("lastname"), | 1064 ASCIIToUTF16("lastname"), |
| 1071 ASCIIToUTF16("Smith"), | 1065 ASCIIToUTF16("Smith"), |
| 1072 ASCIIToUTF16("text"), | 1066 ASCIIToUTF16("text"), |
| 1073 20), | 1067 20), |
| 1074 fields[1]); | 1068 fields[1]); |
| 1075 EXPECT_EQ(FormField(string16(), | 1069 EXPECT_EQ(FormField(string16(), |
| 1076 ASCIIToUTF16("reply-send"), | 1070 ASCIIToUTF16("reply-send"), |
| 1077 ASCIIToUTF16("Send"), | 1071 ASCIIToUTF16("Send"), |
| 1078 ASCIIToUTF16("submit"), | 1072 ASCIIToUTF16("submit"), |
| 1079 0), | 1073 0), |
| 1080 fields[2]); | 1074 fields[2]); |
| 1081 } | 1075 } |
| 1082 | 1076 |
| 1083 TEST_F(FormManagerTest, LabelsInferredFromDefinitionList) { | 1077 TEST_F(FormManagerTest, LabelsInferredFromDefinitionList) { |
| 1084 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1078 FormData form; |
| 1079 LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 1085 "<DL>" | 1080 "<DL>" |
| 1086 " <DT>" | 1081 " <DT>" |
| 1087 " <SPAN>" | 1082 " <SPAN>" |
| 1088 " *" | 1083 " *" |
| 1089 " </SPAN>" | 1084 " </SPAN>" |
| 1090 " <SPAN>" | 1085 " <SPAN>" |
| 1091 " First name:" | 1086 " First name:" |
| 1092 " </SPAN>" | 1087 " </SPAN>" |
| 1093 " <SPAN>" | 1088 " <SPAN>" |
| 1094 " Bogus" | 1089 " Bogus" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1107 " <DD>" | 1102 " <DD>" |
| 1108 " <FONT>" | 1103 " <FONT>" |
| 1109 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" | 1104 " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>" |
| 1110 " </FONT>" | 1105 " </FONT>" |
| 1111 " </DD>" | 1106 " </DD>" |
| 1112 " <DT></DT>" | 1107 " <DT></DT>" |
| 1113 " <DD>" | 1108 " <DD>" |
| 1114 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1109 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 1115 " </DD>" | 1110 " </DD>" |
| 1116 "</DL>" | 1111 "</DL>" |
| 1117 "</FORM>"); | 1112 "</FORM>", |
| 1118 | 1113 &form); |
| 1119 WebFrame* web_frame = GetMainFrame(); | 1114 ExpectDefaultForm(form); |
| 1120 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | |
| 1121 | |
| 1122 FormManager form_manager; | |
| 1123 form_manager.ExtractForms(web_frame); | |
| 1124 | |
| 1125 std::vector<FormData> forms; | |
| 1126 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | |
| 1127 ASSERT_EQ(1U, forms.size()); | |
| 1128 | |
| 1129 const FormData& form = forms[0]; | |
| 1130 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 1131 EXPECT_EQ(GURL(web_frame->url()), form.origin); | |
| 1132 EXPECT_EQ(GURL("http://cnn.com"), form.action); | |
| 1133 | 1115 |
| 1134 const std::vector<FormField>& fields = form.fields; | 1116 const std::vector<FormField>& fields = form.fields; |
| 1135 ASSERT_EQ(3U, fields.size()); | 1117 ASSERT_EQ(3U, fields.size()); |
| 1136 EXPECT_EQ(FormField(ASCIIToUTF16("*First name:Bogus"), | 1118 EXPECT_EQ(FormField(ASCIIToUTF16("*First name:Bogus"), |
| 1137 ASCIIToUTF16("firstname"), | 1119 ASCIIToUTF16("firstname"), |
| 1138 ASCIIToUTF16("John"), | 1120 ASCIIToUTF16("John"), |
| 1139 ASCIIToUTF16("text"), | 1121 ASCIIToUTF16("text"), |
| 1140 20), | 1122 20), |
| 1141 fields[0]); | 1123 fields[0]); |
| 1142 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), | 1124 EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"), |
| 1143 ASCIIToUTF16("lastname"), | 1125 ASCIIToUTF16("lastname"), |
| 1144 ASCIIToUTF16("Smith"), | 1126 ASCIIToUTF16("Smith"), |
| 1145 ASCIIToUTF16("text"), | 1127 ASCIIToUTF16("text"), |
| 1146 20), | 1128 20), |
| 1147 fields[1]); | 1129 fields[1]); |
| 1148 EXPECT_EQ(FormField(string16(), | 1130 EXPECT_EQ(FormField(string16(), |
| 1149 ASCIIToUTF16("reply-send"), | 1131 ASCIIToUTF16("reply-send"), |
| 1150 ASCIIToUTF16("Send"), | 1132 ASCIIToUTF16("Send"), |
| 1151 ASCIIToUTF16("submit"), | 1133 ASCIIToUTF16("submit"), |
| 1152 0), | 1134 0), |
| 1153 fields[2]); | 1135 fields[2]); |
| 1154 } | 1136 } |
| 1155 | 1137 |
| 1156 TEST_F(FormManagerTest, LabelsInferredWithSameName) { | 1138 TEST_F(FormManagerTest, LabelsInferredWithSameName) { |
| 1157 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1139 FormData form; |
| 1140 LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 1158 " Address Line 1:" | 1141 " Address Line 1:" |
| 1159 " <INPUT type=\"text\" name=\"Address\"/>" | 1142 " <INPUT type=\"text\" name=\"Address\"/>" |
| 1160 " Address Line 2:" | 1143 " Address Line 2:" |
| 1161 " <INPUT type=\"text\" name=\"Address\"/>" | 1144 " <INPUT type=\"text\" name=\"Address\"/>" |
| 1162 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 1145 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 1163 "</FORM>"); | 1146 "</FORM>", |
| 1164 | 1147 &form); |
| 1165 WebFrame* web_frame = GetMainFrame(); | 1148 ExpectDefaultForm(form); |
| 1166 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | |
| 1167 | |
| 1168 FormManager form_manager; | |
| 1169 form_manager.ExtractForms(web_frame); | |
| 1170 | |
| 1171 std::vector<FormData> forms; | |
| 1172 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | |
| 1173 ASSERT_EQ(1U, forms.size()); | |
| 1174 | |
| 1175 const FormData& form = forms[0]; | |
| 1176 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 1177 EXPECT_EQ(GURL(web_frame->url()), form.origin); | |
| 1178 EXPECT_EQ(GURL("http://cnn.com"), form.action); | |
| 1179 | 1149 |
| 1180 const std::vector<FormField>& fields = form.fields; | 1150 const std::vector<FormField>& fields = form.fields; |
| 1181 ASSERT_EQ(3U, fields.size()); | 1151 ASSERT_EQ(3U, fields.size()); |
| 1182 EXPECT_EQ(FormField(ASCIIToUTF16("Address Line 1:"), | 1152 EXPECT_EQ(FormField(ASCIIToUTF16("Address Line 1:"), |
| 1183 ASCIIToUTF16("Address"), | 1153 ASCIIToUTF16("Address"), |
| 1184 string16(), | 1154 string16(), |
| 1185 ASCIIToUTF16("text"), | 1155 ASCIIToUTF16("text"), |
| 1186 20), | 1156 20), |
| 1187 fields[0]); | 1157 fields[0]); |
| 1188 EXPECT_EQ(FormField(ASCIIToUTF16("Address Line 2:"), | 1158 EXPECT_EQ(FormField(ASCIIToUTF16("Address Line 2:"), |
| 1189 ASCIIToUTF16("Address"), | 1159 ASCIIToUTF16("Address"), |
| 1190 string16(), | 1160 string16(), |
| 1191 ASCIIToUTF16("text"), | 1161 ASCIIToUTF16("text"), |
| 1192 20), | 1162 20), |
| 1193 fields[1]); | 1163 fields[1]); |
| 1194 EXPECT_EQ(FormField(string16(), | 1164 EXPECT_EQ(FormField(string16(), |
| 1195 ASCIIToUTF16("reply-send"), | 1165 ASCIIToUTF16("reply-send"), |
| 1196 ASCIIToUTF16("Send"), | 1166 ASCIIToUTF16("Send"), |
| 1197 ASCIIToUTF16("submit"), | 1167 ASCIIToUTF16("submit"), |
| 1198 0), | 1168 0), |
| 1199 fields[2]); | 1169 fields[2]); |
| 1200 } | 1170 } |
| 1201 | 1171 |
| 1202 TEST_F(FormManagerTest, LabelsInferredWithImageTags) { | 1172 TEST_F(FormManagerTest, LabelsInferredWithImageTags) { |
| 1203 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 1173 FormData form; |
| 1174 LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 1204 " Phone:" | 1175 " Phone:" |
| 1205 " <input type=\"text\" name=\"dayphone1\">" | 1176 " <input type=\"text\" name=\"dayphone1\">" |
| 1206 " <img/>" | 1177 " <img/>" |
| 1207 " -" | 1178 " -" |
| 1208 " <img/>" | 1179 " <img/>" |
| 1209 " <input type=\"text\" name=\"dayphone2\">" | 1180 " <input type=\"text\" name=\"dayphone2\">" |
| 1210 " <img/>" | 1181 " <img/>" |
| 1211 " -" | 1182 " -" |
| 1212 " <img/>" | 1183 " <img/>" |
| 1213 " <input type=\"text\" name=\"dayphone3\">" | 1184 " <input type=\"text\" name=\"dayphone3\">" |
| 1214 " ext.:" | 1185 " ext.:" |
| 1215 " <input type=\"text\" name=\"dayphone4\">" | 1186 " <input type=\"text\" name=\"dayphone4\">" |
| 1216 " <input type=\"text\" name=\"dummy\">" | 1187 " <input type=\"text\" name=\"dummy\">" |
| 1217 " <input type=\"submit\" name=\"reply-send\" value=\"Send\">" | 1188 " <input type=\"submit\" name=\"reply-send\" value=\"Send\">" |
| 1218 "</FORM>"); | 1189 "</FORM>", |
| 1219 | 1190 &form); |
| 1220 WebFrame* frame = GetMainFrame(); | 1191 ExpectDefaultForm(form); |
| 1221 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); | |
| 1222 | |
| 1223 WebVector<WebFormElement> forms; | |
| 1224 frame->forms(forms); | |
| 1225 ASSERT_EQ(1U, forms.size()); | |
| 1226 | |
| 1227 FormData form; | |
| 1228 EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0], | |
| 1229 FormManager::REQUIRE_NONE, | |
| 1230 true, | |
| 1231 &form)); | |
| 1232 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 1233 EXPECT_EQ(GURL(frame->url()), form.origin); | |
| 1234 EXPECT_EQ(GURL("http://cnn.com"), form.action); | |
| 1235 | 1192 |
| 1236 const std::vector<FormField>& fields = form.fields; | 1193 const std::vector<FormField>& fields = form.fields; |
| 1237 ASSERT_EQ(6U, fields.size()); | 1194 ASSERT_EQ(6U, fields.size()); |
| 1238 EXPECT_EQ(FormField(ASCIIToUTF16("Phone:"), | 1195 EXPECT_EQ(FormField(ASCIIToUTF16("Phone:"), |
| 1239 ASCIIToUTF16("dayphone1"), | 1196 ASCIIToUTF16("dayphone1"), |
| 1240 string16(), | 1197 string16(), |
| 1241 ASCIIToUTF16("text"), | 1198 ASCIIToUTF16("text"), |
| 1242 20), | 1199 20), |
| 1243 fields[0]); | 1200 fields[0]); |
| 1244 EXPECT_EQ(FormField(ASCIIToUTF16("-"), | 1201 EXPECT_EQ(FormField(ASCIIToUTF16("-"), |
| (...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2000 | 1957 |
| 2001 WebVector<WebFormElement> forms; | 1958 WebVector<WebFormElement> forms; |
| 2002 frame->forms(forms); | 1959 frame->forms(forms); |
| 2003 ASSERT_EQ(1U, forms.size()); | 1960 ASSERT_EQ(1U, forms.size()); |
| 2004 | 1961 |
| 2005 FormData form; | 1962 FormData form; |
| 2006 EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0], | 1963 EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0], |
| 2007 FormManager::REQUIRE_NONE, | 1964 FormManager::REQUIRE_NONE, |
| 2008 true, | 1965 true, |
| 2009 &form)); | 1966 &form)); |
| 2010 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 2011 EXPECT_EQ(GURL(frame->url()), form.origin); | 1967 EXPECT_EQ(GURL(frame->url()), form.origin); |
| 2012 EXPECT_EQ(GURL("http://cnn.com"), form.action); | 1968 ExpectDefaultForm(form); |
| 2013 | 1969 |
| 2014 const std::vector<FormField>& fields = form.fields; | 1970 const std::vector<FormField>& fields = form.fields; |
| 2015 ASSERT_EQ(5U, fields.size()); | 1971 ASSERT_EQ(5U, fields.size()); |
| 2016 EXPECT_EQ(FormField(ASCIIToUTF16("Phone:"), | 1972 EXPECT_EQ(FormField(ASCIIToUTF16("Phone:"), |
| 2017 ASCIIToUTF16("dayphone1"), | 1973 ASCIIToUTF16("dayphone1"), |
| 2018 string16(), | 1974 string16(), |
| 2019 ASCIIToUTF16("text"), | 1975 ASCIIToUTF16("text"), |
| 2020 20), | 1976 20), |
| 2021 fields[0]); | 1977 fields[0]); |
| 2022 EXPECT_EQ(FormField(ASCIIToUTF16("-"), | 1978 EXPECT_EQ(FormField(ASCIIToUTF16("-"), |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2067 | 2023 |
| 2068 WebVector<WebFormElement> forms; | 2024 WebVector<WebFormElement> forms; |
| 2069 frame->forms(forms); | 2025 frame->forms(forms); |
| 2070 ASSERT_EQ(1U, forms.size()); | 2026 ASSERT_EQ(1U, forms.size()); |
| 2071 | 2027 |
| 2072 FormData form; | 2028 FormData form; |
| 2073 EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0], | 2029 EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0], |
| 2074 FormManager::REQUIRE_NONE, | 2030 FormManager::REQUIRE_NONE, |
| 2075 true, | 2031 true, |
| 2076 &form)); | 2032 &form)); |
| 2077 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 2078 EXPECT_EQ(GURL(frame->url()), form.origin); | 2033 EXPECT_EQ(GURL(frame->url()), form.origin); |
| 2079 EXPECT_EQ(GURL("http://cnn.com"), form.action); | 2034 ExpectDefaultForm(form); |
| 2080 | 2035 |
| 2081 const std::vector<FormField>& fields = form.fields; | 2036 const std::vector<FormField>& fields = form.fields; |
| 2082 ASSERT_EQ(7U, fields.size()); | 2037 ASSERT_EQ(7U, fields.size()); |
| 2083 EXPECT_EQ(FormField(ASCIIToUTF16("Phone:"), | 2038 EXPECT_EQ(FormField(ASCIIToUTF16("Phone:"), |
| 2084 ASCIIToUTF16("dayphone1"), | 2039 ASCIIToUTF16("dayphone1"), |
| 2085 string16(), | 2040 string16(), |
| 2086 ASCIIToUTF16("text"), | 2041 ASCIIToUTF16("text"), |
| 2087 3), | 2042 3), |
| 2088 fields[0]); | 2043 fields[0]); |
| 2089 EXPECT_EQ(FormField(ASCIIToUTF16("-"), | 2044 EXPECT_EQ(FormField(ASCIIToUTF16("-"), |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2380 // Auto-filled attribute not set yet. | 2335 // Auto-filled attribute not set yet. |
| 2381 EXPECT_FALSE(form_manager.FormWithNodeIsAutoFilled(firstname)); | 2336 EXPECT_FALSE(form_manager.FormWithNodeIsAutoFilled(firstname)); |
| 2382 | 2337 |
| 2383 // Set the auto-filled attribute. | 2338 // Set the auto-filled attribute. |
| 2384 firstname.setAutofilled(true); | 2339 firstname.setAutofilled(true); |
| 2385 | 2340 |
| 2386 EXPECT_TRUE(form_manager.FormWithNodeIsAutoFilled(firstname)); | 2341 EXPECT_TRUE(form_manager.FormWithNodeIsAutoFilled(firstname)); |
| 2387 } | 2342 } |
| 2388 | 2343 |
| 2389 TEST_F(FormManagerTest, LabelsHiddenFields) { | 2344 TEST_F(FormManagerTest, LabelsHiddenFields) { |
| 2390 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | 2345 FormData form; |
| 2346 LoadForm("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" |
| 2391 " <LABEL for=\"firstname\"> First name: </LABEL>" | 2347 " <LABEL for=\"firstname\"> First name: </LABEL>" |
| 2392 " <INPUT type=\"hidden\" id=\"firstname\" value=\"John\"/>" | 2348 " <INPUT type=\"hidden\" id=\"firstname\" value=\"John\"/>" |
| 2393 " <LABEL for=\"lastname\"> Last name: </LABEL>" | 2349 " <LABEL for=\"lastname\"> Last name: </LABEL>" |
| 2394 " <INPUT type=\"hidden\" id=\"lastname\" value=\"Smith\"/>" | 2350 " <INPUT type=\"hidden\" id=\"lastname\" value=\"Smith\"/>" |
| 2395 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" | 2351 " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>" |
| 2396 "</FORM>"); | 2352 "</FORM>", |
| 2397 | 2353 &form); |
| 2398 WebFrame* web_frame = GetMainFrame(); | 2354 ExpectDefaultForm(form); |
| 2399 ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame); | |
| 2400 | |
| 2401 FormManager form_manager; | |
| 2402 form_manager.ExtractForms(web_frame); | |
| 2403 | |
| 2404 std::vector<FormData> forms; | |
| 2405 form_manager.GetForms(FormManager::REQUIRE_NONE, &forms); | |
| 2406 ASSERT_EQ(1U, forms.size()); | |
| 2407 | |
| 2408 const FormData& form = forms[0]; | |
| 2409 EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name); | |
| 2410 EXPECT_EQ(GURL(web_frame->url()), form.origin); | |
| 2411 EXPECT_EQ(GURL("http://cnn.com"), form.action); | |
| 2412 | 2355 |
| 2413 const std::vector<FormField>& fields = form.fields; | 2356 const std::vector<FormField>& fields = form.fields; |
| 2414 ASSERT_EQ(3U, fields.size()); | 2357 ASSERT_EQ(3U, fields.size()); |
| 2415 EXPECT_TRUE(fields[0].StrictlyEqualsHack( | 2358 EXPECT_TRUE(fields[0].StrictlyEqualsHack( |
| 2416 FormField(string16(), | 2359 FormField(string16(), |
| 2417 ASCIIToUTF16("firstname"), | 2360 ASCIIToUTF16("firstname"), |
| 2418 ASCIIToUTF16("John"), | 2361 ASCIIToUTF16("John"), |
| 2419 ASCIIToUTF16("hidden"), | 2362 ASCIIToUTF16("hidden"), |
| 2420 0))); | 2363 0))); |
| 2421 EXPECT_TRUE(fields[1].StrictlyEqualsHack( | 2364 EXPECT_TRUE(fields[1].StrictlyEqualsHack( |
| (...skipping 24 matching lines...) Expand all Loading... |
| 2446 | 2389 |
| 2447 WebElement e = web_frame->document().getElementById("firstname"); | 2390 WebElement e = web_frame->document().getElementById("firstname"); |
| 2448 WebFormControlElement firstname = e.to<WebFormControlElement>(); | 2391 WebFormControlElement firstname = e.to<WebFormControlElement>(); |
| 2449 | 2392 |
| 2450 // Hidden form control element should not have a label set. | 2393 // Hidden form control element should not have a label set. |
| 2451 FormManager form_manager; | 2394 FormManager form_manager; |
| 2452 EXPECT_EQ(string16(), form_manager.LabelForElement(firstname)); | 2395 EXPECT_EQ(string16(), form_manager.LabelForElement(firstname)); |
| 2453 } | 2396 } |
| 2454 | 2397 |
| 2455 } // namespace | 2398 } // namespace |
| OLD | NEW |