OLD | NEW |
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 <utility> | 5 #include <utility> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
10 #include "base/guid.h" | 10 #include "base/guid.h" |
(...skipping 1647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1658 inputs.push_back(CreditCard(CreditCard::MASKED_SERVER_CARD, "a123")); | 1658 inputs.push_back(CreditCard(CreditCard::MASKED_SERVER_CARD, "a123")); |
1659 inputs[0].SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Jay Johnson")); | 1659 inputs[0].SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Jay Johnson")); |
1660 inputs[0].SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1")); | 1660 inputs[0].SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1")); |
1661 inputs[0].SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); | 1661 inputs[0].SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); |
1662 inputs[0].SetRawInfo(CREDIT_CARD_NUMBER, masked_number); | 1662 inputs[0].SetRawInfo(CREDIT_CARD_NUMBER, masked_number); |
1663 inputs[0].SetTypeForMaskedCard(kVisaCard); | 1663 inputs[0].SetTypeForMaskedCard(kVisaCard); |
1664 test::SetServerCreditCards(table_.get(), inputs); | 1664 test::SetServerCreditCards(table_.get(), inputs); |
1665 | 1665 |
1666 // Unmask the number. The full number should be available. | 1666 // Unmask the number. The full number should be available. |
1667 base::string16 full_number(ASCIIToUTF16("4111111111111111")); | 1667 base::string16 full_number(ASCIIToUTF16("4111111111111111")); |
1668 ASSERT_TRUE(table_->UnmaskServerCreditCard(inputs[0].server_id(), | 1668 ASSERT_TRUE(table_->UnmaskServerCreditCard(inputs[0], |
1669 full_number)); | 1669 full_number)); |
1670 | 1670 |
1671 std::vector<CreditCard*> outputs; | 1671 std::vector<CreditCard*> outputs; |
1672 table_->GetServerCreditCards(&outputs); | 1672 table_->GetServerCreditCards(&outputs); |
1673 ASSERT_EQ(1u, outputs.size()); | 1673 ASSERT_EQ(1u, outputs.size()); |
1674 EXPECT_TRUE(CreditCard::FULL_SERVER_CARD == outputs[0]->record_type()); | 1674 EXPECT_TRUE(CreditCard::FULL_SERVER_CARD == outputs[0]->record_type()); |
1675 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); | 1675 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); |
1676 | 1676 |
1677 STLDeleteContainerPointers(outputs.begin(), outputs.end()); | 1677 STLDeleteContainerPointers(outputs.begin(), outputs.end()); |
1678 outputs.clear(); | 1678 outputs.clear(); |
(...skipping 19 matching lines...) Expand all Loading... |
1698 masked_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); | 1698 masked_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); |
1699 masked_card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("1111")); | 1699 masked_card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("1111")); |
1700 masked_card.SetTypeForMaskedCard(kVisaCard); | 1700 masked_card.SetTypeForMaskedCard(kVisaCard); |
1701 | 1701 |
1702 std::vector<CreditCard> inputs; | 1702 std::vector<CreditCard> inputs; |
1703 inputs.push_back(masked_card); | 1703 inputs.push_back(masked_card); |
1704 test::SetServerCreditCards(table_.get(), inputs); | 1704 test::SetServerCreditCards(table_.get(), inputs); |
1705 | 1705 |
1706 // Now unmask it. | 1706 // Now unmask it. |
1707 base::string16 full_number = ASCIIToUTF16("4111111111111111"); | 1707 base::string16 full_number = ASCIIToUTF16("4111111111111111"); |
1708 table_->UnmaskServerCreditCard(masked_card.server_id(), full_number); | 1708 table_->UnmaskServerCreditCard(masked_card, full_number); |
1709 | 1709 |
1710 // The card should now be unmasked. | 1710 // The card should now be unmasked. |
1711 std::vector<CreditCard*> outputs; | 1711 std::vector<CreditCard*> outputs; |
1712 table_->GetServerCreditCards(&outputs); | 1712 table_->GetServerCreditCards(&outputs); |
1713 ASSERT_EQ(1u, outputs.size()); | 1713 ASSERT_EQ(1u, outputs.size()); |
1714 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::FULL_SERVER_CARD); | 1714 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::FULL_SERVER_CARD); |
1715 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); | 1715 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); |
1716 | 1716 |
1717 STLDeleteContainerPointers(outputs.begin(), outputs.end()); | 1717 STLDeleteContainerPointers(outputs.begin(), outputs.end()); |
1718 outputs.clear(); | 1718 outputs.clear(); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1757 table_->GetServerCreditCards(&outputs); | 1757 table_->GetServerCreditCards(&outputs); |
1758 ASSERT_EQ(1u, outputs.size()); | 1758 ASSERT_EQ(1u, outputs.size()); |
1759 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::MASKED_SERVER_CARD); | 1759 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::MASKED_SERVER_CARD); |
1760 EXPECT_EQ(masked_card.server_id(), outputs[0]->server_id()); | 1760 EXPECT_EQ(masked_card.server_id(), outputs[0]->server_id()); |
1761 EXPECT_EQ(ASCIIToUTF16("1111"), outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); | 1761 EXPECT_EQ(ASCIIToUTF16("1111"), outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); |
1762 | 1762 |
1763 STLDeleteContainerPointers(outputs.begin(), outputs.end()); | 1763 STLDeleteContainerPointers(outputs.begin(), outputs.end()); |
1764 outputs.clear(); | 1764 outputs.clear(); |
1765 } | 1765 } |
1766 | 1766 |
| 1767 TEST_F(AutofillTableTest, SetServerCardUpdateUsageStats) { |
| 1768 // Add a masked card. |
| 1769 CreditCard masked_card(CreditCard::MASKED_SERVER_CARD, "a123"); |
| 1770 masked_card.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Paul F. Tompkins")); |
| 1771 masked_card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1")); |
| 1772 masked_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); |
| 1773 masked_card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("1111")); |
| 1774 masked_card.SetTypeForMaskedCard(kVisaCard); |
| 1775 |
| 1776 std::vector<CreditCard> inputs; |
| 1777 inputs.push_back(masked_card); |
| 1778 test::SetServerCreditCards(table_.get(), inputs); |
| 1779 |
| 1780 ScopedVector<CreditCard> outputs; |
| 1781 table_->GetServerCreditCards(&outputs.get()); |
| 1782 ASSERT_EQ(1u, outputs.size()); |
| 1783 EXPECT_EQ(masked_card.server_id(), outputs[0]->server_id()); |
| 1784 EXPECT_EQ(0U, outputs[0]->use_count()); |
| 1785 EXPECT_EQ(base::Time(), outputs[0]->use_date()); |
| 1786 outputs.clear(); |
| 1787 |
| 1788 // Update the usage stats; make sure they're reflected in GetServerProfiles. |
| 1789 inputs.back().set_use_count(4U); |
| 1790 inputs.back().set_use_date(base::Time::Now()); |
| 1791 table_->UpdateServerCardUsageStats(inputs.back()); |
| 1792 table_->GetServerCreditCards(&outputs.get()); |
| 1793 ASSERT_EQ(1u, outputs.size()); |
| 1794 EXPECT_EQ(masked_card.server_id(), outputs[0]->server_id()); |
| 1795 EXPECT_EQ(4U, outputs[0]->use_count()); |
| 1796 EXPECT_NE(base::Time(), outputs[0]->use_date()); |
| 1797 outputs.clear(); |
| 1798 |
| 1799 // Setting the cards again shouldn't delete the usage stats. |
| 1800 table_->SetServerCreditCards(inputs); |
| 1801 table_->GetServerCreditCards(&outputs.get()); |
| 1802 ASSERT_EQ(1u, outputs.size()); |
| 1803 EXPECT_EQ(masked_card.server_id(), outputs[0]->server_id()); |
| 1804 EXPECT_EQ(4U, outputs[0]->use_count()); |
| 1805 EXPECT_NE(base::Time(), outputs[0]->use_date()); |
| 1806 outputs.clear(); |
| 1807 |
| 1808 // Set a card list where the card is missing --- this should clear metadata. |
| 1809 CreditCard masked_card2(CreditCard::MASKED_SERVER_CARD, "b456"); |
| 1810 inputs.back() = masked_card2; |
| 1811 table_->SetServerCreditCards(inputs); |
| 1812 |
| 1813 // Back to the original card list. |
| 1814 inputs.back() = masked_card; |
| 1815 table_->SetServerCreditCards(inputs); |
| 1816 table_->GetServerCreditCards(&outputs.get()); |
| 1817 ASSERT_EQ(1u, outputs.size()); |
| 1818 EXPECT_EQ(masked_card.server_id(), outputs[0]->server_id()); |
| 1819 EXPECT_EQ(0U, outputs[0]->use_count()); |
| 1820 EXPECT_EQ(base::Time(), outputs[0]->use_date()); |
| 1821 outputs.clear(); |
| 1822 } |
| 1823 |
1767 TEST_F(AutofillTableTest, SetServerProfile) { | 1824 TEST_F(AutofillTableTest, SetServerProfile) { |
1768 AutofillProfile one(AutofillProfile::SERVER_PROFILE, "a123"); | 1825 AutofillProfile one(AutofillProfile::SERVER_PROFILE, "a123"); |
1769 std::vector<AutofillProfile> inputs; | 1826 std::vector<AutofillProfile> inputs; |
1770 inputs.push_back(one); | 1827 inputs.push_back(one); |
1771 table_->SetServerProfiles(inputs); | 1828 table_->SetServerProfiles(inputs); |
1772 | 1829 |
1773 std::vector<AutofillProfile*> outputs; | 1830 std::vector<AutofillProfile*> outputs; |
1774 table_->GetServerProfiles(&outputs); | 1831 table_->GetServerProfiles(&outputs); |
1775 ASSERT_EQ(1u, outputs.size()); | 1832 ASSERT_EQ(1u, outputs.size()); |
1776 EXPECT_EQ(one.server_id(), outputs[0]->server_id()); | 1833 EXPECT_EQ(one.server_id(), outputs[0]->server_id()); |
1777 | 1834 |
1778 STLDeleteContainerPointers(outputs.begin(), outputs.end()); | 1835 STLDeleteContainerPointers(outputs.begin(), outputs.end()); |
1779 outputs.clear(); | 1836 outputs.clear(); |
1780 | 1837 |
1781 // Set a different profile. | 1838 // Set a different profile. |
1782 AutofillProfile two(AutofillProfile::SERVER_PROFILE, "b456"); | 1839 AutofillProfile two(AutofillProfile::SERVER_PROFILE, "b456"); |
1783 inputs[0] = two; | 1840 inputs[0] = two; |
1784 table_->SetServerProfiles(inputs); | 1841 table_->SetServerProfiles(inputs); |
1785 | 1842 |
1786 // The original one should have been replaced. | 1843 // The original one should have been replaced. |
1787 table_->GetServerProfiles(&outputs); | 1844 table_->GetServerProfiles(&outputs); |
1788 ASSERT_EQ(1u, outputs.size()); | 1845 ASSERT_EQ(1u, outputs.size()); |
1789 EXPECT_EQ(two.server_id(), outputs[0]->server_id()); | 1846 EXPECT_EQ(two.server_id(), outputs[0]->server_id()); |
1790 | 1847 |
1791 STLDeleteContainerPointers(outputs.begin(), outputs.end()); | 1848 STLDeleteContainerPointers(outputs.begin(), outputs.end()); |
1792 outputs.clear(); | 1849 outputs.clear(); |
1793 } | 1850 } |
1794 | 1851 |
| 1852 TEST_F(AutofillTableTest, SetServerProfileUpdateUsageStats) { |
| 1853 AutofillProfile one(AutofillProfile::SERVER_PROFILE, "a123"); |
| 1854 std::vector<AutofillProfile> inputs; |
| 1855 inputs.push_back(one); |
| 1856 table_->SetServerProfiles(inputs); |
| 1857 |
| 1858 ScopedVector<AutofillProfile> outputs; |
| 1859 table_->GetServerProfiles(&outputs.get()); |
| 1860 ASSERT_EQ(1u, outputs.size()); |
| 1861 EXPECT_EQ(one.server_id(), outputs[0]->server_id()); |
| 1862 EXPECT_EQ(0U, outputs[0]->use_count()); |
| 1863 EXPECT_EQ(base::Time(), outputs[0]->use_date()); |
| 1864 outputs.clear(); |
| 1865 |
| 1866 // Update the usage stats; make sure they're reflected in GetServerProfiles. |
| 1867 inputs.back().set_use_count(4U); |
| 1868 inputs.back().set_use_date(base::Time::Now()); |
| 1869 table_->UpdateServerAddressUsageStats(inputs.back()); |
| 1870 table_->GetServerProfiles(&outputs.get()); |
| 1871 ASSERT_EQ(1u, outputs.size()); |
| 1872 EXPECT_EQ(one.server_id(), outputs[0]->server_id()); |
| 1873 EXPECT_EQ(4U, outputs[0]->use_count()); |
| 1874 EXPECT_NE(base::Time(), outputs[0]->use_date()); |
| 1875 outputs.clear(); |
| 1876 |
| 1877 // Setting the profiles again shouldn't delete the usage stats. |
| 1878 table_->SetServerProfiles(inputs); |
| 1879 table_->GetServerProfiles(&outputs.get()); |
| 1880 ASSERT_EQ(1u, outputs.size()); |
| 1881 EXPECT_EQ(one.server_id(), outputs[0]->server_id()); |
| 1882 EXPECT_EQ(4U, outputs[0]->use_count()); |
| 1883 EXPECT_NE(base::Time(), outputs[0]->use_date()); |
| 1884 outputs.clear(); |
| 1885 |
| 1886 // Set a null profile list --- this should clear metadata. |
| 1887 table_->SetServerProfiles(std::vector<AutofillProfile>()); |
| 1888 // Reset the old profile list and see the metadata is reset. |
| 1889 table_->SetServerProfiles(inputs); |
| 1890 table_->GetServerProfiles(&outputs.get()); |
| 1891 ASSERT_EQ(1u, outputs.size()); |
| 1892 EXPECT_EQ(one.server_id(), outputs[0]->server_id()); |
| 1893 EXPECT_EQ(0U, outputs[0]->use_count()); |
| 1894 EXPECT_EQ(base::Time(), outputs[0]->use_date()); |
| 1895 outputs.clear(); |
| 1896 } |
| 1897 |
1795 // Tests that deleting time ranges re-masks server credit cards that were | 1898 // Tests that deleting time ranges re-masks server credit cards that were |
1796 // unmasked in that time. | 1899 // unmasked in that time. |
1797 // TODO(brettw) fix flakiness and re-enable: crbug.com/465882 | 1900 // TODO(brettw) fix flakiness and re-enable: crbug.com/465882 |
1798 TEST_F(AutofillTableTest, DISABLED_DeleteUnmaskedCard) { | 1901 TEST_F(AutofillTableTest, DISABLED_DeleteUnmaskedCard) { |
1799 // This isn't the exact unmasked time, since the database will use the | 1902 // This isn't the exact unmasked time, since the database will use the |
1800 // current time that it is called. The code below has to be approximate. | 1903 // current time that it is called. The code below has to be approximate. |
1801 base::Time unmasked_time = base::Time::Now(); | 1904 base::Time unmasked_time = base::Time::Now(); |
1802 | 1905 |
1803 // Add a masked card. | 1906 // Add a masked card. |
1804 base::string16 masked_number = ASCIIToUTF16("1111"); | 1907 base::string16 masked_number = ASCIIToUTF16("1111"); |
1805 CreditCard masked_card(CreditCard::MASKED_SERVER_CARD, "a123"); | 1908 CreditCard masked_card(CreditCard::MASKED_SERVER_CARD, "a123"); |
1806 masked_card.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Paul F. Tompkins")); | 1909 masked_card.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Paul F. Tompkins")); |
1807 masked_card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1")); | 1910 masked_card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1")); |
1808 masked_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); | 1911 masked_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); |
1809 masked_card.SetRawInfo(CREDIT_CARD_NUMBER, masked_number); | 1912 masked_card.SetRawInfo(CREDIT_CARD_NUMBER, masked_number); |
1810 masked_card.SetTypeForMaskedCard(kVisaCard); | 1913 masked_card.SetTypeForMaskedCard(kVisaCard); |
1811 | 1914 |
1812 std::vector<CreditCard> inputs; | 1915 std::vector<CreditCard> inputs; |
1813 inputs.push_back(masked_card); | 1916 inputs.push_back(masked_card); |
1814 table_->SetServerCreditCards(inputs); | 1917 table_->SetServerCreditCards(inputs); |
1815 | 1918 |
1816 // Unmask it. | 1919 // Unmask it. |
1817 base::string16 full_number = ASCIIToUTF16("4111111111111111"); | 1920 base::string16 full_number = ASCIIToUTF16("4111111111111111"); |
1818 table_->UnmaskServerCreditCard(masked_card.server_id(), full_number); | 1921 table_->UnmaskServerCreditCard(masked_card, full_number); |
1819 | 1922 |
1820 // Delete data in a range a year in the future. | 1923 // Delete data in a range a year in the future. |
1821 std::vector<std::string> profile_guids; | 1924 std::vector<std::string> profile_guids; |
1822 std::vector<std::string> credit_card_guids; | 1925 std::vector<std::string> credit_card_guids; |
1823 ASSERT_TRUE(table_->RemoveAutofillDataModifiedBetween( | 1926 ASSERT_TRUE(table_->RemoveAutofillDataModifiedBetween( |
1824 unmasked_time + base::TimeDelta::FromDays(365), | 1927 unmasked_time + base::TimeDelta::FromDays(365), |
1825 unmasked_time + base::TimeDelta::FromDays(530), | 1928 unmasked_time + base::TimeDelta::FromDays(530), |
1826 &profile_guids, &credit_card_guids)); | 1929 &profile_guids, &credit_card_guids)); |
1827 | 1930 |
1828 // This should not affect the unmasked card (should be unmasked). | 1931 // This should not affect the unmasked card (should be unmasked). |
(...skipping 11 matching lines...) Expand all Loading... |
1840 &profile_guids, &credit_card_guids)); | 1943 &profile_guids, &credit_card_guids)); |
1841 | 1944 |
1842 // This should re-mask. | 1945 // This should re-mask. |
1843 ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get())); | 1946 ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get())); |
1844 ASSERT_EQ(1u, outputs.size()); | 1947 ASSERT_EQ(1u, outputs.size()); |
1845 EXPECT_EQ(CreditCard::MASKED_SERVER_CARD, outputs[0]->record_type()); | 1948 EXPECT_EQ(CreditCard::MASKED_SERVER_CARD, outputs[0]->record_type()); |
1846 EXPECT_EQ(masked_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); | 1949 EXPECT_EQ(masked_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); |
1847 outputs.clear(); | 1950 outputs.clear(); |
1848 | 1951 |
1849 // Unmask again, the card should be back. | 1952 // Unmask again, the card should be back. |
1850 table_->UnmaskServerCreditCard(masked_card.server_id(), full_number); | 1953 table_->UnmaskServerCreditCard(masked_card, full_number); |
1851 ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get())); | 1954 ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get())); |
1852 ASSERT_EQ(1u, outputs.size()); | 1955 ASSERT_EQ(1u, outputs.size()); |
1853 EXPECT_EQ(CreditCard::FULL_SERVER_CARD, outputs[0]->record_type()); | 1956 EXPECT_EQ(CreditCard::FULL_SERVER_CARD, outputs[0]->record_type()); |
1854 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); | 1957 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); |
1855 outputs.clear(); | 1958 outputs.clear(); |
1856 | 1959 |
1857 // Delete all data. | 1960 // Delete all data. |
1858 ASSERT_TRUE(table_->RemoveAutofillDataModifiedBetween( | 1961 ASSERT_TRUE(table_->RemoveAutofillDataModifiedBetween( |
1859 base::Time(), base::Time::Max(), &profile_guids, &credit_card_guids)); | 1962 base::Time(), base::Time::Max(), &profile_guids, &credit_card_guids)); |
1860 | 1963 |
1861 // Should be masked again. | 1964 // Should be masked again. |
1862 ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get())); | 1965 ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get())); |
1863 ASSERT_EQ(1u, outputs.size()); | 1966 ASSERT_EQ(1u, outputs.size()); |
1864 EXPECT_EQ(CreditCard::MASKED_SERVER_CARD, outputs[0]->record_type()); | 1967 EXPECT_EQ(CreditCard::MASKED_SERVER_CARD, outputs[0]->record_type()); |
1865 EXPECT_EQ(masked_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); | 1968 EXPECT_EQ(masked_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); |
1866 outputs.clear(); | 1969 outputs.clear(); |
1867 } | 1970 } |
1868 | 1971 |
1869 } // namespace autofill | 1972 } // namespace autofill |
OLD | NEW |