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

Side by Side Diff: components/autofill/core/browser/form_structure_unittest.cc

Issue 22009003: [Autofill] Distinguish between native field types and potentially HTML field types. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "components/autofill/core/browser/form_structure.h" 5 #include "components/autofill/core/browser/form_structure.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "components/autofill/content/browser/autocheckout_page_meta_data.h" 10 #include "components/autofill/content/browser/autocheckout_page_meta_data.h"
(...skipping 1649 matching lines...) Expand 10 before | Expand all | Expand 10 after
1660 "signature=\"509334676\"/><field signature=\"509334676\"/><field " 1660 "signature=\"509334676\"/><field signature=\"509334676\"/><field "
1661 "signature=\"509334676\"/><field signature=\"509334676\"/></form>" 1661 "signature=\"509334676\"/><field signature=\"509334676\"/></form>"
1662 "</autofillquery>"; 1662 "</autofillquery>";
1663 ASSERT_EQ(1U, encoded_signatures.size()); 1663 ASSERT_EQ(1U, encoded_signatures.size());
1664 EXPECT_EQ(kSignature3, encoded_signatures[0]); 1664 EXPECT_EQ(kSignature3, encoded_signatures[0]);
1665 EXPECT_EQ(kResponse3, encoded_xml); 1665 EXPECT_EQ(kResponse3, encoded_xml);
1666 } 1666 }
1667 1667
1668 TEST(FormStructureTest, EncodeUploadRequest) { 1668 TEST(FormStructureTest, EncodeUploadRequest) {
1669 scoped_ptr<FormStructure> form_structure; 1669 scoped_ptr<FormStructure> form_structure;
1670 std::vector<FieldTypeSet> possible_field_types; 1670 std::vector<ServerFieldTypeSet> possible_field_types;
1671 FormData form; 1671 FormData form;
1672 form.method = ASCIIToUTF16("post"); 1672 form.method = ASCIIToUTF16("post");
1673 form_structure.reset(new FormStructure(form, std::string())); 1673 form_structure.reset(new FormStructure(form, std::string()));
1674 form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); 1674 form_structure->DetermineHeuristicTypes(TestAutofillMetrics());
1675 1675
1676 FormFieldData field; 1676 FormFieldData field;
1677 field.form_control_type = "text"; 1677 field.form_control_type = "text";
1678 1678
1679 field.label = ASCIIToUTF16("First Name"); 1679 field.label = ASCIIToUTF16("First Name");
1680 field.name = ASCIIToUTF16("firstname"); 1680 field.name = ASCIIToUTF16("firstname");
1681 form.fields.push_back(field); 1681 form.fields.push_back(field);
1682 possible_field_types.push_back(FieldTypeSet()); 1682 possible_field_types.push_back(ServerFieldTypeSet());
1683 possible_field_types.back().insert(NAME_FIRST); 1683 possible_field_types.back().insert(NAME_FIRST);
1684 1684
1685 field.label = ASCIIToUTF16("Last Name"); 1685 field.label = ASCIIToUTF16("Last Name");
1686 field.name = ASCIIToUTF16("lastname"); 1686 field.name = ASCIIToUTF16("lastname");
1687 form.fields.push_back(field); 1687 form.fields.push_back(field);
1688 possible_field_types.push_back(FieldTypeSet()); 1688 possible_field_types.push_back(ServerFieldTypeSet());
1689 possible_field_types.back().insert(NAME_LAST); 1689 possible_field_types.back().insert(NAME_LAST);
1690 1690
1691 field.label = ASCIIToUTF16("Email"); 1691 field.label = ASCIIToUTF16("Email");
1692 field.name = ASCIIToUTF16("email"); 1692 field.name = ASCIIToUTF16("email");
1693 field.form_control_type = "email"; 1693 field.form_control_type = "email";
1694 form.fields.push_back(field); 1694 form.fields.push_back(field);
1695 possible_field_types.push_back(FieldTypeSet()); 1695 possible_field_types.push_back(ServerFieldTypeSet());
1696 possible_field_types.back().insert(EMAIL_ADDRESS); 1696 possible_field_types.back().insert(EMAIL_ADDRESS);
1697 1697
1698 field.label = ASCIIToUTF16("Phone"); 1698 field.label = ASCIIToUTF16("Phone");
1699 field.name = ASCIIToUTF16("phone"); 1699 field.name = ASCIIToUTF16("phone");
1700 field.form_control_type = "number"; 1700 field.form_control_type = "number";
1701 form.fields.push_back(field); 1701 form.fields.push_back(field);
1702 possible_field_types.push_back(FieldTypeSet()); 1702 possible_field_types.push_back(ServerFieldTypeSet());
1703 possible_field_types.back().insert(PHONE_HOME_WHOLE_NUMBER); 1703 possible_field_types.back().insert(PHONE_HOME_WHOLE_NUMBER);
1704 1704
1705 field.label = ASCIIToUTF16("Country"); 1705 field.label = ASCIIToUTF16("Country");
1706 field.name = ASCIIToUTF16("country"); 1706 field.name = ASCIIToUTF16("country");
1707 field.form_control_type = "select-one"; 1707 field.form_control_type = "select-one";
1708 form.fields.push_back(field); 1708 form.fields.push_back(field);
1709 possible_field_types.push_back(FieldTypeSet()); 1709 possible_field_types.push_back(ServerFieldTypeSet());
1710 possible_field_types.back().insert(ADDRESS_HOME_COUNTRY); 1710 possible_field_types.back().insert(ADDRESS_HOME_COUNTRY);
1711 1711
1712 // Add checkable field. 1712 // Add checkable field.
1713 FormFieldData checkable_field; 1713 FormFieldData checkable_field;
1714 checkable_field.is_checkable = true; 1714 checkable_field.is_checkable = true;
1715 checkable_field.label = ASCIIToUTF16("Checkable1"); 1715 checkable_field.label = ASCIIToUTF16("Checkable1");
1716 checkable_field.name = ASCIIToUTF16("Checkable1"); 1716 checkable_field.name = ASCIIToUTF16("Checkable1");
1717 form.fields.push_back(checkable_field); 1717 form.fields.push_back(checkable_field);
1718 possible_field_types.push_back(FieldTypeSet()); 1718 possible_field_types.push_back(ServerFieldTypeSet());
1719 possible_field_types.back().insert(ADDRESS_HOME_COUNTRY); 1719 possible_field_types.back().insert(ADDRESS_HOME_COUNTRY);
1720 1720
1721 form_structure.reset(new FormStructure(form, std::string())); 1721 form_structure.reset(new FormStructure(form, std::string()));
1722 1722
1723 ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); 1723 ASSERT_EQ(form_structure->field_count(), possible_field_types.size());
1724 for (size_t i = 0; i < form_structure->field_count(); ++i) 1724 for (size_t i = 0; i < form_structure->field_count(); ++i)
1725 form_structure->field(i)->set_possible_types(possible_field_types[i]); 1725 form_structure->field(i)->set_possible_types(possible_field_types[i]);
1726 1726
1727 FieldTypeSet available_field_types; 1727 ServerFieldTypeSet available_field_types;
1728 available_field_types.insert(NAME_FIRST); 1728 available_field_types.insert(NAME_FIRST);
1729 available_field_types.insert(NAME_LAST); 1729 available_field_types.insert(NAME_LAST);
1730 available_field_types.insert(ADDRESS_HOME_LINE1); 1730 available_field_types.insert(ADDRESS_HOME_LINE1);
1731 available_field_types.insert(ADDRESS_HOME_LINE2); 1731 available_field_types.insert(ADDRESS_HOME_LINE2);
1732 available_field_types.insert(ADDRESS_HOME_COUNTRY); 1732 available_field_types.insert(ADDRESS_HOME_COUNTRY);
1733 available_field_types.insert(ADDRESS_BILLING_LINE1); 1733 available_field_types.insert(ADDRESS_BILLING_LINE1);
1734 available_field_types.insert(ADDRESS_BILLING_LINE2); 1734 available_field_types.insert(ADDRESS_BILLING_LINE2);
1735 available_field_types.insert(EMAIL_ADDRESS); 1735 available_field_types.insert(EMAIL_ADDRESS);
1736 available_field_types.insert(PHONE_HOME_WHOLE_NUMBER); 1736 available_field_types.insert(PHONE_HOME_WHOLE_NUMBER);
1737 1737
(...skipping 24 matching lines...) Expand all
1762 "<field signature=\"2799270304\" autofilltype=\"36\"/>" 1762 "<field signature=\"2799270304\" autofilltype=\"36\"/>"
1763 "</autofillupload>", 1763 "</autofillupload>",
1764 encoded_xml); 1764 encoded_xml);
1765 1765
1766 // Add 2 address fields - this should be still a valid form. 1766 // Add 2 address fields - this should be still a valid form.
1767 for (size_t i = 0; i < 2; ++i) { 1767 for (size_t i = 0; i < 2; ++i) {
1768 field.label = ASCIIToUTF16("Address"); 1768 field.label = ASCIIToUTF16("Address");
1769 field.name = ASCIIToUTF16("address"); 1769 field.name = ASCIIToUTF16("address");
1770 field.form_control_type = "text"; 1770 field.form_control_type = "text";
1771 form.fields.push_back(field); 1771 form.fields.push_back(field);
1772 possible_field_types.push_back(FieldTypeSet()); 1772 possible_field_types.push_back(ServerFieldTypeSet());
1773 possible_field_types.back().insert(ADDRESS_HOME_LINE1); 1773 possible_field_types.back().insert(ADDRESS_HOME_LINE1);
1774 possible_field_types.back().insert(ADDRESS_HOME_LINE2); 1774 possible_field_types.back().insert(ADDRESS_HOME_LINE2);
1775 possible_field_types.back().insert(ADDRESS_BILLING_LINE1); 1775 possible_field_types.back().insert(ADDRESS_BILLING_LINE1);
1776 possible_field_types.back().insert(ADDRESS_BILLING_LINE2); 1776 possible_field_types.back().insert(ADDRESS_BILLING_LINE2);
1777 } 1777 }
1778 1778
1779 form_structure.reset(new FormStructure(form, std::string())); 1779 form_structure.reset(new FormStructure(form, std::string()));
1780 ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); 1780 ASSERT_EQ(form_structure->field_count(), possible_field_types.size());
1781 for (size_t i = 0; i < form_structure->field_count(); ++i) 1781 for (size_t i = 0; i < form_structure->field_count(); ++i)
1782 form_structure->field(i)->set_possible_types(possible_field_types[i]); 1782 form_structure->field(i)->set_possible_types(possible_field_types[i]);
(...skipping 19 matching lines...) Expand all
1802 "<field signature=\"509334676\" autofilltype=\"38\"/>" 1802 "<field signature=\"509334676\" autofilltype=\"38\"/>"
1803 "</autofillupload>", 1803 "</autofillupload>",
1804 encoded_xml); 1804 encoded_xml);
1805 1805
1806 // Add 50 address fields - now the form is invalid, as it has too many fields. 1806 // Add 50 address fields - now the form is invalid, as it has too many fields.
1807 for (size_t i = 0; i < 50; ++i) { 1807 for (size_t i = 0; i < 50; ++i) {
1808 field.label = ASCIIToUTF16("Address"); 1808 field.label = ASCIIToUTF16("Address");
1809 field.name = ASCIIToUTF16("address"); 1809 field.name = ASCIIToUTF16("address");
1810 field.form_control_type = "text"; 1810 field.form_control_type = "text";
1811 form.fields.push_back(field); 1811 form.fields.push_back(field);
1812 possible_field_types.push_back(FieldTypeSet()); 1812 possible_field_types.push_back(ServerFieldTypeSet());
1813 possible_field_types.back().insert(ADDRESS_HOME_LINE1); 1813 possible_field_types.back().insert(ADDRESS_HOME_LINE1);
1814 possible_field_types.back().insert(ADDRESS_HOME_LINE2); 1814 possible_field_types.back().insert(ADDRESS_HOME_LINE2);
1815 possible_field_types.back().insert(ADDRESS_BILLING_LINE1); 1815 possible_field_types.back().insert(ADDRESS_BILLING_LINE1);
1816 possible_field_types.back().insert(ADDRESS_BILLING_LINE2); 1816 possible_field_types.back().insert(ADDRESS_BILLING_LINE2);
1817 } 1817 }
1818 form_structure.reset(new FormStructure(form, std::string())); 1818 form_structure.reset(new FormStructure(form, std::string()));
1819 ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); 1819 ASSERT_EQ(form_structure->field_count(), possible_field_types.size());
1820 for (size_t i = 0; i < form_structure->field_count(); ++i) 1820 for (size_t i = 0; i < form_structure->field_count(); ++i)
1821 form_structure->field(i)->set_possible_types(possible_field_types[i]); 1821 form_structure->field(i)->set_possible_types(possible_field_types[i]);
1822 EXPECT_FALSE(form_structure->EncodeUploadRequest(available_field_types, false, 1822 EXPECT_FALSE(form_structure->EncodeUploadRequest(available_field_types, false,
1823 &encoded_xml)); 1823 &encoded_xml));
1824 } 1824 }
1825 1825
1826 TEST(FormStructureTest, EncodeFieldAssignments) { 1826 TEST(FormStructureTest, EncodeFieldAssignments) {
1827 scoped_ptr<FormStructure> form_structure; 1827 scoped_ptr<FormStructure> form_structure;
1828 std::vector<FieldTypeSet> possible_field_types; 1828 std::vector<ServerFieldTypeSet> possible_field_types;
1829 FormData form; 1829 FormData form;
1830 form.method = ASCIIToUTF16("post"); 1830 form.method = ASCIIToUTF16("post");
1831 form_structure.reset(new FormStructure(form, std::string())); 1831 form_structure.reset(new FormStructure(form, std::string()));
1832 form_structure->DetermineHeuristicTypes(TestAutofillMetrics()); 1832 form_structure->DetermineHeuristicTypes(TestAutofillMetrics());
1833 1833
1834 FormFieldData field; 1834 FormFieldData field;
1835 field.form_control_type = "text"; 1835 field.form_control_type = "text";
1836 1836
1837 field.label = ASCIIToUTF16("First Name"); 1837 field.label = ASCIIToUTF16("First Name");
1838 field.name = ASCIIToUTF16("firstname"); 1838 field.name = ASCIIToUTF16("firstname");
1839 form.fields.push_back(field); 1839 form.fields.push_back(field);
1840 possible_field_types.push_back(FieldTypeSet()); 1840 possible_field_types.push_back(ServerFieldTypeSet());
1841 possible_field_types.back().insert(NAME_FIRST); 1841 possible_field_types.back().insert(NAME_FIRST);
1842 1842
1843 field.label = ASCIIToUTF16("Last Name"); 1843 field.label = ASCIIToUTF16("Last Name");
1844 field.name = ASCIIToUTF16("lastname"); 1844 field.name = ASCIIToUTF16("lastname");
1845 form.fields.push_back(field); 1845 form.fields.push_back(field);
1846 possible_field_types.push_back(FieldTypeSet()); 1846 possible_field_types.push_back(ServerFieldTypeSet());
1847 possible_field_types.back().insert(NAME_LAST); 1847 possible_field_types.back().insert(NAME_LAST);
1848 1848
1849 field.label = ASCIIToUTF16("Email"); 1849 field.label = ASCIIToUTF16("Email");
1850 field.name = ASCIIToUTF16("email"); 1850 field.name = ASCIIToUTF16("email");
1851 field.form_control_type = "email"; 1851 field.form_control_type = "email";
1852 form.fields.push_back(field); 1852 form.fields.push_back(field);
1853 possible_field_types.push_back(FieldTypeSet()); 1853 possible_field_types.push_back(ServerFieldTypeSet());
1854 possible_field_types.back().insert(EMAIL_ADDRESS); 1854 possible_field_types.back().insert(EMAIL_ADDRESS);
1855 1855
1856 field.label = ASCIIToUTF16("Phone"); 1856 field.label = ASCIIToUTF16("Phone");
1857 field.name = ASCIIToUTF16("phone"); 1857 field.name = ASCIIToUTF16("phone");
1858 field.form_control_type = "number"; 1858 field.form_control_type = "number";
1859 form.fields.push_back(field); 1859 form.fields.push_back(field);
1860 possible_field_types.push_back(FieldTypeSet()); 1860 possible_field_types.push_back(ServerFieldTypeSet());
1861 possible_field_types.back().insert(PHONE_HOME_WHOLE_NUMBER); 1861 possible_field_types.back().insert(PHONE_HOME_WHOLE_NUMBER);
1862 1862
1863 field.label = ASCIIToUTF16("Country"); 1863 field.label = ASCIIToUTF16("Country");
1864 field.name = ASCIIToUTF16("country"); 1864 field.name = ASCIIToUTF16("country");
1865 field.form_control_type = "select-one"; 1865 field.form_control_type = "select-one";
1866 form.fields.push_back(field); 1866 form.fields.push_back(field);
1867 possible_field_types.push_back(FieldTypeSet()); 1867 possible_field_types.push_back(ServerFieldTypeSet());
1868 possible_field_types.back().insert(ADDRESS_HOME_COUNTRY); 1868 possible_field_types.back().insert(ADDRESS_HOME_COUNTRY);
1869 1869
1870 // Add checkable field. 1870 // Add checkable field.
1871 FormFieldData checkable_field; 1871 FormFieldData checkable_field;
1872 checkable_field.is_checkable = true; 1872 checkable_field.is_checkable = true;
1873 checkable_field.label = ASCIIToUTF16("Checkable1"); 1873 checkable_field.label = ASCIIToUTF16("Checkable1");
1874 checkable_field.name = ASCIIToUTF16("Checkable1"); 1874 checkable_field.name = ASCIIToUTF16("Checkable1");
1875 form.fields.push_back(checkable_field); 1875 form.fields.push_back(checkable_field);
1876 possible_field_types.push_back(FieldTypeSet()); 1876 possible_field_types.push_back(ServerFieldTypeSet());
1877 possible_field_types.back().insert(ADDRESS_HOME_COUNTRY); 1877 possible_field_types.back().insert(ADDRESS_HOME_COUNTRY);
1878 1878
1879 form_structure.reset(new FormStructure(form, std::string())); 1879 form_structure.reset(new FormStructure(form, std::string()));
1880 1880
1881 ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); 1881 ASSERT_EQ(form_structure->field_count(), possible_field_types.size());
1882 for (size_t i = 0; i < form_structure->field_count(); ++i) 1882 for (size_t i = 0; i < form_structure->field_count(); ++i)
1883 form_structure->field(i)->set_possible_types(possible_field_types[i]); 1883 form_structure->field(i)->set_possible_types(possible_field_types[i]);
1884 1884
1885 FieldTypeSet available_field_types; 1885 ServerFieldTypeSet available_field_types;
1886 available_field_types.insert(NAME_FIRST); 1886 available_field_types.insert(NAME_FIRST);
1887 available_field_types.insert(NAME_LAST); 1887 available_field_types.insert(NAME_LAST);
1888 available_field_types.insert(ADDRESS_HOME_LINE1); 1888 available_field_types.insert(ADDRESS_HOME_LINE1);
1889 available_field_types.insert(ADDRESS_HOME_LINE2); 1889 available_field_types.insert(ADDRESS_HOME_LINE2);
1890 available_field_types.insert(ADDRESS_HOME_COUNTRY); 1890 available_field_types.insert(ADDRESS_HOME_COUNTRY);
1891 available_field_types.insert(ADDRESS_BILLING_LINE1); 1891 available_field_types.insert(ADDRESS_BILLING_LINE1);
1892 available_field_types.insert(ADDRESS_BILLING_LINE2); 1892 available_field_types.insert(ADDRESS_BILLING_LINE2);
1893 available_field_types.insert(EMAIL_ADDRESS); 1893 available_field_types.insert(EMAIL_ADDRESS);
1894 available_field_types.insert(PHONE_HOME_WHOLE_NUMBER); 1894 available_field_types.insert(PHONE_HOME_WHOLE_NUMBER);
1895 1895
(...skipping 11 matching lines...) Expand all
1907 "<fields fieldid=\"3410250678\" fieldtype=\"36\" name=\"Checkable1\"/>" 1907 "<fields fieldid=\"3410250678\" fieldtype=\"36\" name=\"Checkable1\"/>"
1908 "</fieldassignments>", 1908 "</fieldassignments>",
1909 encoded_xml); 1909 encoded_xml);
1910 1910
1911 // Add 2 address fields - this should be still a valid form. 1911 // Add 2 address fields - this should be still a valid form.
1912 for (size_t i = 0; i < 2; ++i) { 1912 for (size_t i = 0; i < 2; ++i) {
1913 field.label = ASCIIToUTF16("Address"); 1913 field.label = ASCIIToUTF16("Address");
1914 field.name = ASCIIToUTF16("address"); 1914 field.name = ASCIIToUTF16("address");
1915 field.form_control_type = "text"; 1915 field.form_control_type = "text";
1916 form.fields.push_back(field); 1916 form.fields.push_back(field);
1917 possible_field_types.push_back(FieldTypeSet()); 1917 possible_field_types.push_back(ServerFieldTypeSet());
1918 possible_field_types.back().insert(ADDRESS_HOME_LINE1); 1918 possible_field_types.back().insert(ADDRESS_HOME_LINE1);
1919 possible_field_types.back().insert(ADDRESS_HOME_LINE2); 1919 possible_field_types.back().insert(ADDRESS_HOME_LINE2);
1920 possible_field_types.back().insert(ADDRESS_BILLING_LINE1); 1920 possible_field_types.back().insert(ADDRESS_BILLING_LINE1);
1921 possible_field_types.back().insert(ADDRESS_BILLING_LINE2); 1921 possible_field_types.back().insert(ADDRESS_BILLING_LINE2);
1922 } 1922 }
1923 1923
1924 form_structure.reset(new FormStructure(form, std::string())); 1924 form_structure.reset(new FormStructure(form, std::string()));
1925 ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); 1925 ASSERT_EQ(form_structure->field_count(), possible_field_types.size());
1926 for (size_t i = 0; i < form_structure->field_count(); ++i) 1926 for (size_t i = 0; i < form_structure->field_count(); ++i)
1927 form_structure->field(i)->set_possible_types(possible_field_types[i]); 1927 form_structure->field(i)->set_possible_types(possible_field_types[i]);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1965 field.label = ASCIIToUTF16("Last Name"); 1965 field.label = ASCIIToUTF16("Last Name");
1966 field.name = ASCIIToUTF16("last"); 1966 field.name = ASCIIToUTF16("last");
1967 form.fields.push_back(field); 1967 form.fields.push_back(field);
1968 1968
1969 field.label = ASCIIToUTF16("Email"); 1969 field.label = ASCIIToUTF16("Email");
1970 field.name = ASCIIToUTF16("email"); 1970 field.name = ASCIIToUTF16("email");
1971 form.fields.push_back(field); 1971 form.fields.push_back(field);
1972 1972
1973 FormStructure form_structure(form, std::string()); 1973 FormStructure form_structure(form, std::string());
1974 1974
1975 FieldTypeSet unknown_type; 1975 ServerFieldTypeSet unknown_type;
1976 unknown_type.insert(UNKNOWN_TYPE); 1976 unknown_type.insert(UNKNOWN_TYPE);
1977 for (size_t i = 0; i < form_structure.field_count(); ++i) 1977 for (size_t i = 0; i < form_structure.field_count(); ++i)
1978 form_structure.field(i)->set_possible_types(unknown_type); 1978 form_structure.field(i)->set_possible_types(unknown_type);
1979 1979
1980 // No available types. 1980 // No available types.
1981 // datapresent should be "" == trimmmed(0x0000000000000000) == 1981 // datapresent should be "" == trimmmed(0x0000000000000000) ==
1982 // 0b0000000000000000000000000000000000000000000000000000000000000000 1982 // 0b0000000000000000000000000000000000000000000000000000000000000000
1983 FieldTypeSet available_field_types; 1983 ServerFieldTypeSet available_field_types;
1984 1984
1985 std::string encoded_xml; 1985 std::string encoded_xml;
1986 EXPECT_TRUE(form_structure.EncodeUploadRequest(available_field_types, false, 1986 EXPECT_TRUE(form_structure.EncodeUploadRequest(available_field_types, false,
1987 &encoded_xml)); 1987 &encoded_xml));
1988 EXPECT_EQ("<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>" 1988 EXPECT_EQ("<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>"
1989 "<autofillupload clientversion=\"6.1.1715.1442/en (GGLL)\"" 1989 "<autofillupload clientversion=\"6.1.1715.1442/en (GGLL)\""
1990 " formsignature=\"6402244543831589061\" autofillused=\"false\"" 1990 " formsignature=\"6402244543831589061\" autofillused=\"false\""
1991 " datapresent=\"\">" 1991 " datapresent=\"\">"
1992 "<field signature=\"1089846351\" autofilltype=\"1\"/>" 1992 "<field signature=\"1089846351\" autofilltype=\"1\"/>"
1993 "<field signature=\"2404144663\" autofilltype=\"1\"/>" 1993 "<field signature=\"2404144663\" autofilltype=\"1\"/>"
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
2186 // 0b0001010001000000000000000000001101100000000000000000000000001000 2186 // 0b0001010001000000000000000000001101100000000000000000000000001000
2187 // The set bits are: 2187 // The set bits are:
2188 // 3 == NAME_FIRST 2188 // 3 == NAME_FIRST
2189 // 5 == NAME_LAST 2189 // 5 == NAME_LAST
2190 // 9 == EMAIL_ADDRESS 2190 // 9 == EMAIL_ADDRESS
2191 // 30 == ADDRESS_HOME_LINE1 2191 // 30 == ADDRESS_HOME_LINE1
2192 // 31 == ADDRESS_HOME_LINE2 2192 // 31 == ADDRESS_HOME_LINE2
2193 // 33 == ADDRESS_HOME_CITY 2193 // 33 == ADDRESS_HOME_CITY
2194 // 34 == ADDRESS_HOME_STATE 2194 // 34 == ADDRESS_HOME_STATE
2195 // 60 == COMPANY_NAME 2195 // 60 == COMPANY_NAME
2196 FieldTypeSet available_field_types; 2196 ServerFieldTypeSet available_field_types;
2197 available_field_types.insert(NAME_FIRST); 2197 available_field_types.insert(NAME_FIRST);
2198 available_field_types.insert(NAME_LAST); 2198 available_field_types.insert(NAME_LAST);
2199 available_field_types.insert(EMAIL_ADDRESS); 2199 available_field_types.insert(EMAIL_ADDRESS);
2200 available_field_types.insert(ADDRESS_HOME_LINE1); 2200 available_field_types.insert(ADDRESS_HOME_LINE1);
2201 available_field_types.insert(ADDRESS_HOME_LINE2); 2201 available_field_types.insert(ADDRESS_HOME_LINE2);
2202 available_field_types.insert(ADDRESS_HOME_CITY); 2202 available_field_types.insert(ADDRESS_HOME_CITY);
2203 available_field_types.insert(ADDRESS_HOME_STATE); 2203 available_field_types.insert(ADDRESS_HOME_STATE);
2204 available_field_types.insert(COMPANY_NAME); 2204 available_field_types.insert(COMPANY_NAME);
2205 2205
2206 // Check that multiple types for the field are processed correctly. 2206 // Check that multiple types for the field are processed correctly.
2207 scoped_ptr<FormStructure> form_structure; 2207 scoped_ptr<FormStructure> form_structure;
2208 std::vector<FieldTypeSet> possible_field_types; 2208 std::vector<ServerFieldTypeSet> possible_field_types;
2209 FormData form; 2209 FormData form;
2210 form.method = ASCIIToUTF16("post"); 2210 form.method = ASCIIToUTF16("post");
2211 2211
2212 FormFieldData field; 2212 FormFieldData field;
2213 field.form_control_type = "text"; 2213 field.form_control_type = "text";
2214 2214
2215 field.label = ASCIIToUTF16("email"); 2215 field.label = ASCIIToUTF16("email");
2216 field.name = ASCIIToUTF16("email"); 2216 field.name = ASCIIToUTF16("email");
2217 form.fields.push_back(field); 2217 form.fields.push_back(field);
2218 possible_field_types.push_back(FieldTypeSet()); 2218 possible_field_types.push_back(ServerFieldTypeSet());
2219 possible_field_types.back().insert(EMAIL_ADDRESS); 2219 possible_field_types.back().insert(EMAIL_ADDRESS);
2220 2220
2221 field.label = ASCIIToUTF16("First Name"); 2221 field.label = ASCIIToUTF16("First Name");
2222 field.name = ASCIIToUTF16("first"); 2222 field.name = ASCIIToUTF16("first");
2223 form.fields.push_back(field); 2223 form.fields.push_back(field);
2224 possible_field_types.push_back(FieldTypeSet()); 2224 possible_field_types.push_back(ServerFieldTypeSet());
2225 possible_field_types.back().insert(NAME_FIRST); 2225 possible_field_types.back().insert(NAME_FIRST);
2226 2226
2227 field.label = ASCIIToUTF16("Last Name"); 2227 field.label = ASCIIToUTF16("Last Name");
2228 field.name = ASCIIToUTF16("last"); 2228 field.name = ASCIIToUTF16("last");
2229 form.fields.push_back(field); 2229 form.fields.push_back(field);
2230 possible_field_types.push_back(FieldTypeSet()); 2230 possible_field_types.push_back(ServerFieldTypeSet());
2231 possible_field_types.back().insert(NAME_LAST); 2231 possible_field_types.back().insert(NAME_LAST);
2232 2232
2233 field.label = ASCIIToUTF16("Address"); 2233 field.label = ASCIIToUTF16("Address");
2234 field.name = ASCIIToUTF16("address"); 2234 field.name = ASCIIToUTF16("address");
2235 form.fields.push_back(field); 2235 form.fields.push_back(field);
2236 possible_field_types.push_back(FieldTypeSet()); 2236 possible_field_types.push_back(ServerFieldTypeSet());
2237 possible_field_types.back().insert(ADDRESS_HOME_LINE1); 2237 possible_field_types.back().insert(ADDRESS_HOME_LINE1);
2238 2238
2239 form_structure.reset(new FormStructure(form, std::string())); 2239 form_structure.reset(new FormStructure(form, std::string()));
2240 2240
2241 for (size_t i = 0; i < form_structure->field_count(); ++i) 2241 for (size_t i = 0; i < form_structure->field_count(); ++i)
2242 form_structure->field(i)->set_possible_types(possible_field_types[i]); 2242 form_structure->field(i)->set_possible_types(possible_field_types[i]);
2243 std::string encoded_xml; 2243 std::string encoded_xml;
2244 2244
2245 // Now we matched both fields singularly. 2245 // Now we matched both fields singularly.
2246 EXPECT_TRUE(form_structure->EncodeUploadRequest(available_field_types, false, 2246 EXPECT_TRUE(form_structure->EncodeUploadRequest(available_field_types, false,
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
2454 "<autofillqueryresponse><field autofilltype=\"3\" />" 2454 "<autofillqueryresponse><field autofilltype=\"3\" />"
2455 "<field autofilltype=\"9\" /></autofillqueryresponse>"; 2455 "<field autofilltype=\"9\" /></autofillqueryresponse>";
2456 FormStructure::ParseQueryResponse(kServerResponse, forms.get(), 2456 FormStructure::ParseQueryResponse(kServerResponse, forms.get(),
2457 &page_meta_data, TestAutofillMetrics()); 2457 &page_meta_data, TestAutofillMetrics());
2458 ASSERT_EQ(NAME_FIRST, forms[0]->field(0)->server_type()); 2458 ASSERT_EQ(NAME_FIRST, forms[0]->field(0)->server_type());
2459 ASSERT_EQ(NO_SERVER_DATA, forms[0]->field(1)->server_type()); 2459 ASSERT_EQ(NO_SERVER_DATA, forms[0]->field(1)->server_type());
2460 ASSERT_EQ(EMAIL_ADDRESS, forms[0]->field(2)->server_type()); 2460 ASSERT_EQ(EMAIL_ADDRESS, forms[0]->field(2)->server_type());
2461 } 2461 }
2462 2462
2463 } // namespace autofill 2463 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/form_structure.cc ('k') | components/autofill/core/browser/name_field.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698