OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "base/string_util.h" | 6 #include "base/string_util.h" |
7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
8 #include "chrome/browser/autofill/form_structure.h" | 8 #include "chrome/browser/autofill/form_structure.h" |
9 #include "googleurl/src/gurl.h" | 9 #include "googleurl/src/gurl.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 1445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1456 field.label = ASCIIToUTF16("Fax"); | 1456 field.label = ASCIIToUTF16("Fax"); |
1457 field.name = ASCIIToUTF16("fax"); | 1457 field.name = ASCIIToUTF16("fax"); |
1458 field.form_control_type = ASCIIToUTF16("tel"); | 1458 field.form_control_type = ASCIIToUTF16("tel"); |
1459 form.fields.push_back(field); | 1459 form.fields.push_back(field); |
1460 possible_field_types.push_back(FieldTypeSet()); | 1460 possible_field_types.push_back(FieldTypeSet()); |
1461 possible_field_types.back().insert(PHONE_FAX_WHOLE_NUMBER); | 1461 possible_field_types.back().insert(PHONE_FAX_WHOLE_NUMBER); |
1462 form_structure.reset(new FormStructure(form)); | 1462 form_structure.reset(new FormStructure(form)); |
1463 | 1463 |
1464 ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); | 1464 ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); |
1465 for (size_t i = 0; i < form_structure->field_count(); ++i) | 1465 for (size_t i = 0; i < form_structure->field_count(); ++i) |
1466 form_structure->set_possible_types(i, possible_field_types[i]); | 1466 form_structure->field(i)->set_possible_types(possible_field_types[i]); |
1467 | 1467 |
1468 FieldTypeSet available_field_types; | 1468 FieldTypeSet available_field_types; |
1469 available_field_types.insert(NAME_FIRST); | 1469 available_field_types.insert(NAME_FIRST); |
1470 available_field_types.insert(NAME_LAST); | 1470 available_field_types.insert(NAME_LAST); |
1471 available_field_types.insert(ADDRESS_HOME_LINE1); | 1471 available_field_types.insert(ADDRESS_HOME_LINE1); |
1472 available_field_types.insert(ADDRESS_HOME_LINE2); | 1472 available_field_types.insert(ADDRESS_HOME_LINE2); |
1473 available_field_types.insert(ADDRESS_HOME_COUNTRY); | 1473 available_field_types.insert(ADDRESS_HOME_COUNTRY); |
1474 available_field_types.insert(ADDRESS_BILLING_LINE1); | 1474 available_field_types.insert(ADDRESS_BILLING_LINE1); |
1475 available_field_types.insert(ADDRESS_BILLING_LINE2); | 1475 available_field_types.insert(ADDRESS_BILLING_LINE2); |
1476 available_field_types.insert(EMAIL_ADDRESS); | 1476 available_field_types.insert(EMAIL_ADDRESS); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1516 possible_field_types.push_back(FieldTypeSet()); | 1516 possible_field_types.push_back(FieldTypeSet()); |
1517 possible_field_types.back().insert(ADDRESS_HOME_LINE1); | 1517 possible_field_types.back().insert(ADDRESS_HOME_LINE1); |
1518 possible_field_types.back().insert(ADDRESS_HOME_LINE2); | 1518 possible_field_types.back().insert(ADDRESS_HOME_LINE2); |
1519 possible_field_types.back().insert(ADDRESS_BILLING_LINE1); | 1519 possible_field_types.back().insert(ADDRESS_BILLING_LINE1); |
1520 possible_field_types.back().insert(ADDRESS_BILLING_LINE2); | 1520 possible_field_types.back().insert(ADDRESS_BILLING_LINE2); |
1521 } | 1521 } |
1522 | 1522 |
1523 form_structure.reset(new FormStructure(form)); | 1523 form_structure.reset(new FormStructure(form)); |
1524 ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); | 1524 ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); |
1525 for (size_t i = 0; i < form_structure->field_count(); ++i) | 1525 for (size_t i = 0; i < form_structure->field_count(); ++i) |
1526 form_structure->set_possible_types(i, possible_field_types[i]); | 1526 form_structure->field(i)->set_possible_types(possible_field_types[i]); |
1527 | 1527 |
1528 EXPECT_TRUE(form_structure->EncodeUploadRequest(available_field_types, false, | 1528 EXPECT_TRUE(form_structure->EncodeUploadRequest(available_field_types, false, |
1529 &encoded_xml)); | 1529 &encoded_xml)); |
1530 EXPECT_EQ("<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>" | 1530 EXPECT_EQ("<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>" |
1531 "<autofillupload clientversion=\"6.1.1715.1442/en (GGLL)\" " | 1531 "<autofillupload clientversion=\"6.1.1715.1442/en (GGLL)\" " |
1532 "formsignature=\"12226592129574322128\" autofillused=\"false\" " | 1532 "formsignature=\"12226592129574322128\" autofillused=\"false\" " |
1533 "datapresent=\"144200830e\">" | 1533 "datapresent=\"144200830e\">" |
1534 "<field signature=\"3763331450\" autofilltype=\"3\"/>" | 1534 "<field signature=\"3763331450\" autofilltype=\"3\"/>" |
1535 "<field signature=\"3494530716\" autofilltype=\"5\"/>" | 1535 "<field signature=\"3494530716\" autofilltype=\"5\"/>" |
1536 "<field signature=\"1029417091\" autofilltype=\"9\"/>" | 1536 "<field signature=\"1029417091\" autofilltype=\"9\"/>" |
(...skipping 19 matching lines...) Expand all Loading... |
1556 form.fields.push_back(field); | 1556 form.fields.push_back(field); |
1557 possible_field_types.push_back(FieldTypeSet()); | 1557 possible_field_types.push_back(FieldTypeSet()); |
1558 possible_field_types.back().insert(ADDRESS_HOME_LINE1); | 1558 possible_field_types.back().insert(ADDRESS_HOME_LINE1); |
1559 possible_field_types.back().insert(ADDRESS_HOME_LINE2); | 1559 possible_field_types.back().insert(ADDRESS_HOME_LINE2); |
1560 possible_field_types.back().insert(ADDRESS_BILLING_LINE1); | 1560 possible_field_types.back().insert(ADDRESS_BILLING_LINE1); |
1561 possible_field_types.back().insert(ADDRESS_BILLING_LINE2); | 1561 possible_field_types.back().insert(ADDRESS_BILLING_LINE2); |
1562 } | 1562 } |
1563 form_structure.reset(new FormStructure(form)); | 1563 form_structure.reset(new FormStructure(form)); |
1564 ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); | 1564 ASSERT_EQ(form_structure->field_count(), possible_field_types.size()); |
1565 for (size_t i = 0; i < form_structure->field_count(); ++i) | 1565 for (size_t i = 0; i < form_structure->field_count(); ++i) |
1566 form_structure->set_possible_types(i, possible_field_types[i]); | 1566 form_structure->field(i)->set_possible_types(possible_field_types[i]); |
1567 EXPECT_FALSE(form_structure->EncodeUploadRequest(available_field_types, false, | 1567 EXPECT_FALSE(form_structure->EncodeUploadRequest(available_field_types, false, |
1568 &encoded_xml)); | 1568 &encoded_xml)); |
1569 } | 1569 } |
1570 | 1570 |
1571 // Check that we compute the "datapresent" string correctly for the given | 1571 // Check that we compute the "datapresent" string correctly for the given |
1572 // |available_types|. | 1572 // |available_types|. |
1573 TEST(FormStructureTest, CheckDataPresence) { | 1573 TEST(FormStructureTest, CheckDataPresence) { |
1574 FormData form; | 1574 FormData form; |
1575 form.method = ASCIIToUTF16("post"); | 1575 form.method = ASCIIToUTF16("post"); |
1576 | 1576 |
(...skipping 10 matching lines...) Expand all Loading... |
1587 | 1587 |
1588 field.label = ASCIIToUTF16("Email"); | 1588 field.label = ASCIIToUTF16("Email"); |
1589 field.name = ASCIIToUTF16("email"); | 1589 field.name = ASCIIToUTF16("email"); |
1590 form.fields.push_back(field); | 1590 form.fields.push_back(field); |
1591 | 1591 |
1592 FormStructure form_structure(form); | 1592 FormStructure form_structure(form); |
1593 | 1593 |
1594 FieldTypeSet unknown_type; | 1594 FieldTypeSet unknown_type; |
1595 unknown_type.insert(UNKNOWN_TYPE); | 1595 unknown_type.insert(UNKNOWN_TYPE); |
1596 for (size_t i = 0; i < form_structure.field_count(); ++i) | 1596 for (size_t i = 0; i < form_structure.field_count(); ++i) |
1597 form_structure.set_possible_types(i, unknown_type); | 1597 form_structure.field(i)->set_possible_types(unknown_type); |
1598 | 1598 |
1599 // No available types. | 1599 // No available types. |
1600 // datapresent should be "" == trimmmed(0x0000000000000000) == | 1600 // datapresent should be "" == trimmmed(0x0000000000000000) == |
1601 // 0b0000000000000000000000000000000000000000000000000000000000000000 | 1601 // 0b0000000000000000000000000000000000000000000000000000000000000000 |
1602 FieldTypeSet available_field_types; | 1602 FieldTypeSet available_field_types; |
1603 | 1603 |
1604 std::string encoded_xml; | 1604 std::string encoded_xml; |
1605 EXPECT_TRUE(form_structure.EncodeUploadRequest(available_field_types, false, | 1605 EXPECT_TRUE(form_structure.EncodeUploadRequest(available_field_types, false, |
1606 &encoded_xml)); | 1606 &encoded_xml)); |
1607 EXPECT_EQ("<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>" | 1607 EXPECT_EQ("<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>" |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1871 | 1871 |
1872 field.label = ASCIIToUTF16("Address"); | 1872 field.label = ASCIIToUTF16("Address"); |
1873 field.name = ASCIIToUTF16("address"); | 1873 field.name = ASCIIToUTF16("address"); |
1874 form.fields.push_back(field); | 1874 form.fields.push_back(field); |
1875 possible_field_types.push_back(FieldTypeSet()); | 1875 possible_field_types.push_back(FieldTypeSet()); |
1876 possible_field_types.back().insert(ADDRESS_HOME_LINE1); | 1876 possible_field_types.back().insert(ADDRESS_HOME_LINE1); |
1877 | 1877 |
1878 form_structure.reset(new FormStructure(form)); | 1878 form_structure.reset(new FormStructure(form)); |
1879 | 1879 |
1880 for (size_t i = 0; i < form_structure->field_count(); ++i) | 1880 for (size_t i = 0; i < form_structure->field_count(); ++i) |
1881 form_structure->set_possible_types(i, possible_field_types[i]); | 1881 form_structure->field(i)->set_possible_types(possible_field_types[i]); |
1882 std::string encoded_xml; | 1882 std::string encoded_xml; |
1883 | 1883 |
1884 // Now we matched both fields singularly. | 1884 // Now we matched both fields singularly. |
1885 EXPECT_TRUE(form_structure->EncodeUploadRequest(available_field_types, false, | 1885 EXPECT_TRUE(form_structure->EncodeUploadRequest(available_field_types, false, |
1886 &encoded_xml)); | 1886 &encoded_xml)); |
1887 EXPECT_EQ("<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>" | 1887 EXPECT_EQ("<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>" |
1888 "<autofillupload clientversion=\"6.1.1715.1442/en (GGLL)\"" | 1888 "<autofillupload clientversion=\"6.1.1715.1442/en (GGLL)\"" |
1889 " formsignature=\"18062476096658145866\" autofillused=\"false\"" | 1889 " formsignature=\"18062476096658145866\" autofillused=\"false\"" |
1890 " datapresent=\"1440000360000008\">" | 1890 " datapresent=\"1440000360000008\">" |
1891 "<field signature=\"420638584\" autofilltype=\"9\"/>" | 1891 "<field signature=\"420638584\" autofilltype=\"9\"/>" |
1892 "<field signature=\"1089846351\" autofilltype=\"3\"/>" | 1892 "<field signature=\"1089846351\" autofilltype=\"3\"/>" |
1893 "<field signature=\"2404144663\" autofilltype=\"5\"/>" | 1893 "<field signature=\"2404144663\" autofilltype=\"5\"/>" |
1894 "<field signature=\"509334676\" autofilltype=\"30\"/>" | 1894 "<field signature=\"509334676\" autofilltype=\"30\"/>" |
1895 "</autofillupload>", | 1895 "</autofillupload>", |
1896 encoded_xml); | 1896 encoded_xml); |
1897 // Match third field as both first and last. | 1897 // Match third field as both first and last. |
1898 possible_field_types[2].insert(NAME_FIRST); | 1898 possible_field_types[2].insert(NAME_FIRST); |
1899 form_structure->set_possible_types(2, possible_field_types[2]); | 1899 form_structure->field(2)->set_possible_types(possible_field_types[2]); |
1900 EXPECT_TRUE(form_structure->EncodeUploadRequest(available_field_types, false, | 1900 EXPECT_TRUE(form_structure->EncodeUploadRequest(available_field_types, false, |
1901 &encoded_xml)); | 1901 &encoded_xml)); |
1902 EXPECT_EQ("<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>" | 1902 EXPECT_EQ("<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>" |
1903 "<autofillupload clientversion=\"6.1.1715.1442/en (GGLL)\"" | 1903 "<autofillupload clientversion=\"6.1.1715.1442/en (GGLL)\"" |
1904 " formsignature=\"18062476096658145866\" autofillused=\"false\"" | 1904 " formsignature=\"18062476096658145866\" autofillused=\"false\"" |
1905 " datapresent=\"1440000360000008\">" | 1905 " datapresent=\"1440000360000008\">" |
1906 "<field signature=\"420638584\" autofilltype=\"9\"/>" | 1906 "<field signature=\"420638584\" autofilltype=\"9\"/>" |
1907 "<field signature=\"1089846351\" autofilltype=\"3\"/>" | 1907 "<field signature=\"1089846351\" autofilltype=\"3\"/>" |
1908 "<field signature=\"2404144663\" autofilltype=\"3\"/>" | 1908 "<field signature=\"2404144663\" autofilltype=\"3\"/>" |
1909 "<field signature=\"2404144663\" autofilltype=\"5\"/>" | 1909 "<field signature=\"2404144663\" autofilltype=\"5\"/>" |
1910 "<field signature=\"509334676\" autofilltype=\"30\"/>" | 1910 "<field signature=\"509334676\" autofilltype=\"30\"/>" |
1911 "</autofillupload>", | 1911 "</autofillupload>", |
1912 encoded_xml); | 1912 encoded_xml); |
1913 possible_field_types[3].insert(ADDRESS_HOME_LINE2); | 1913 possible_field_types[3].insert(ADDRESS_HOME_LINE2); |
1914 form_structure->set_possible_types( | 1914 form_structure->field(field_count() - 1)->set_possible_types( |
1915 form_structure->field_count() - 1, | |
1916 possible_field_types[form_structure->field_count() - 1]); | 1915 possible_field_types[form_structure->field_count() - 1]); |
1917 EXPECT_TRUE(form_structure->EncodeUploadRequest(available_field_types, false, | 1916 EXPECT_TRUE(form_structure->EncodeUploadRequest(available_field_types, false, |
1918 &encoded_xml)); | 1917 &encoded_xml)); |
1919 EXPECT_EQ("<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>" | 1918 EXPECT_EQ("<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>" |
1920 "<autofillupload clientversion=\"6.1.1715.1442/en (GGLL)\"" | 1919 "<autofillupload clientversion=\"6.1.1715.1442/en (GGLL)\"" |
1921 " formsignature=\"18062476096658145866\" autofillused=\"false\"" | 1920 " formsignature=\"18062476096658145866\" autofillused=\"false\"" |
1922 " datapresent=\"1440000360000008\">" | 1921 " datapresent=\"1440000360000008\">" |
1923 "<field signature=\"420638584\" autofilltype=\"9\"/>" | 1922 "<field signature=\"420638584\" autofilltype=\"9\"/>" |
1924 "<field signature=\"1089846351\" autofilltype=\"3\"/>" | 1923 "<field signature=\"1089846351\" autofilltype=\"3\"/>" |
1925 "<field signature=\"2404144663\" autofilltype=\"3\"/>" | 1924 "<field signature=\"2404144663\" autofilltype=\"3\"/>" |
1926 "<field signature=\"2404144663\" autofilltype=\"5\"/>" | 1925 "<field signature=\"2404144663\" autofilltype=\"5\"/>" |
1927 "<field signature=\"509334676\" autofilltype=\"30\"/>" | 1926 "<field signature=\"509334676\" autofilltype=\"30\"/>" |
1928 "<field signature=\"509334676\" autofilltype=\"31\"/>" | 1927 "<field signature=\"509334676\" autofilltype=\"31\"/>" |
1929 "</autofillupload>", | 1928 "</autofillupload>", |
1930 encoded_xml); | 1929 encoded_xml); |
1931 possible_field_types[3].clear(); | 1930 possible_field_types[3].clear(); |
1932 possible_field_types[3].insert(ADDRESS_HOME_LINE1); | 1931 possible_field_types[3].insert(ADDRESS_HOME_LINE1); |
1933 possible_field_types[3].insert(COMPANY_NAME); | 1932 possible_field_types[3].insert(COMPANY_NAME); |
1934 form_structure->set_possible_types( | 1933 form_structure->field(field_count() - 1)->set_possible_types( |
1935 form_structure->field_count() - 1, | |
1936 possible_field_types[form_structure->field_count() - 1]); | 1934 possible_field_types[form_structure->field_count() - 1]); |
1937 EXPECT_TRUE(form_structure->EncodeUploadRequest(available_field_types, false, | 1935 EXPECT_TRUE(form_structure->EncodeUploadRequest(available_field_types, false, |
1938 &encoded_xml)); | 1936 &encoded_xml)); |
1939 EXPECT_EQ("<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>" | 1937 EXPECT_EQ("<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>" |
1940 "<autofillupload clientversion=\"6.1.1715.1442/en (GGLL)\"" | 1938 "<autofillupload clientversion=\"6.1.1715.1442/en (GGLL)\"" |
1941 " formsignature=\"18062476096658145866\" autofillused=\"false\"" | 1939 " formsignature=\"18062476096658145866\" autofillused=\"false\"" |
1942 " datapresent=\"1440000360000008\">" | 1940 " datapresent=\"1440000360000008\">" |
1943 "<field signature=\"420638584\" autofilltype=\"9\"/>" | 1941 "<field signature=\"420638584\" autofilltype=\"9\"/>" |
1944 "<field signature=\"1089846351\" autofilltype=\"3\"/>" | 1942 "<field signature=\"1089846351\" autofilltype=\"3\"/>" |
1945 "<field signature=\"2404144663\" autofilltype=\"3\"/>" | 1943 "<field signature=\"2404144663\" autofilltype=\"3\"/>" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1986 form_structure->FormSignature()); | 1984 form_structure->FormSignature()); |
1987 | 1985 |
1988 form.name = ASCIIToUTF16("login_form"); | 1986 form.name = ASCIIToUTF16("login_form"); |
1989 form_structure.reset(new FormStructure(form)); | 1987 form_structure.reset(new FormStructure(form)); |
1990 EXPECT_EQ(FormStructureTest::Hash64Bit( | 1988 EXPECT_EQ(FormStructureTest::Hash64Bit( |
1991 std::string("https://login.facebook.com&login_form&email&first")), | 1989 std::string("https://login.facebook.com&login_form&email&first")), |
1992 form_structure->FormSignature()); | 1990 form_structure->FormSignature()); |
1993 } | 1991 } |
1994 | 1992 |
1995 } // namespace | 1993 } // namespace |
OLD | NEW |