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/command_line.h" |
8 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
9 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
10 #include "base/guid.h" | 11 #include "base/guid.h" |
11 #include "base/memory/scoped_vector.h" | 12 #include "base/memory/scoped_vector.h" |
12 #include "base/stl_util.h" | 13 #include "base/stl_util.h" |
13 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
14 #include "base/strings/string_util.h" | 15 #include "base/strings/string_util.h" |
15 #include "base/strings/utf_string_conversions.h" | 16 #include "base/strings/utf_string_conversions.h" |
16 #include "base/time/time.h" | 17 #include "base/time/time.h" |
17 #include "components/autofill/core/browser/autofill_profile.h" | 18 #include "components/autofill/core/browser/autofill_profile.h" |
18 #include "components/autofill/core/browser/autofill_test_utils.h" | 19 #include "components/autofill/core/browser/autofill_test_utils.h" |
19 #include "components/autofill/core/browser/autofill_type.h" | 20 #include "components/autofill/core/browser/autofill_type.h" |
20 #include "components/autofill/core/browser/credit_card.h" | 21 #include "components/autofill/core/browser/credit_card.h" |
21 #include "components/autofill/core/browser/webdata/autofill_change.h" | 22 #include "components/autofill/core/browser/webdata/autofill_change.h" |
22 #include "components/autofill/core/browser/webdata/autofill_entry.h" | 23 #include "components/autofill/core/browser/webdata/autofill_entry.h" |
23 #include "components/autofill/core/browser/webdata/autofill_table.h" | 24 #include "components/autofill/core/browser/webdata/autofill_table.h" |
| 25 #include "components/autofill/core/common/autofill_switches.h" |
| 26 #include "components/autofill/core/common/autofill_util.h" |
24 #include "components/autofill/core/common/form_field_data.h" | 27 #include "components/autofill/core/common/form_field_data.h" |
25 #include "components/os_crypt/os_crypt.h" | 28 #include "components/os_crypt/os_crypt.h" |
26 #include "components/webdata/common/web_database.h" | 29 #include "components/webdata/common/web_database.h" |
27 #include "sql/statement.h" | 30 #include "sql/statement.h" |
28 #include "testing/gtest/include/gtest/gtest.h" | 31 #include "testing/gtest/include/gtest/gtest.h" |
29 | 32 |
30 using base::ASCIIToUTF16; | 33 using base::ASCIIToUTF16; |
31 using base::Time; | 34 using base::Time; |
32 using base::TimeDelta; | 35 using base::TimeDelta; |
33 | 36 |
(...skipping 1815 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1849 base::Time(), base::Time::Max(), &profile_guids, &credit_card_guids)); | 1852 base::Time(), base::Time::Max(), &profile_guids, &credit_card_guids)); |
1850 | 1853 |
1851 // Should be masked again. | 1854 // Should be masked again. |
1852 ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get())); | 1855 ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get())); |
1853 ASSERT_EQ(1u, outputs.size()); | 1856 ASSERT_EQ(1u, outputs.size()); |
1854 EXPECT_EQ(CreditCard::MASKED_SERVER_CARD, outputs[0]->record_type()); | 1857 EXPECT_EQ(CreditCard::MASKED_SERVER_CARD, outputs[0]->record_type()); |
1855 EXPECT_EQ(masked_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); | 1858 EXPECT_EQ(masked_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); |
1856 outputs.clear(); | 1859 outputs.clear(); |
1857 } | 1860 } |
1858 | 1861 |
| 1862 TEST_F(AutofillTableTest, GetFormValuesForElementName_SubstringMatchEnabled) { |
| 1863 // Token matching is currently behind a flag. |
| 1864 base::CommandLine::ForCurrentProcess()->AppendSwitch( |
| 1865 autofill::switches::kEnableSuggestionsWithSubstringMatch); |
| 1866 |
| 1867 const size_t kMaxCount = 2; |
| 1868 const struct { |
| 1869 const char* const field_suggestion[kMaxCount]; |
| 1870 const char* const field_contents; |
| 1871 size_t expected_suggestion_count; |
| 1872 const char* const expected_suggestion[kMaxCount]; |
| 1873 } kTestCases[] = { |
| 1874 {{"user.test", "test_user"}, "TEST", 2, {"test_user", "user.test"}}, |
| 1875 {{"user test", "test-user"}, "user", 2, {"user test", "test-user"}}, |
| 1876 {{"user test", "test-rest"}, "user", 1, {"user test", nullptr}}, |
| 1877 {{"user@test", "test_user"}, "user@t", 1, {"user@test", nullptr}}, |
| 1878 {{"user.test", "test_user"}, "er.tes", 0, {nullptr, nullptr}}, |
| 1879 {{"user test", "test_user"}, "_ser", 0, {nullptr, nullptr}}, |
| 1880 {{"user.test", "test_user"}, "%ser", 0, {nullptr, nullptr}}, |
| 1881 {{"user.test", "test_user"}, |
| 1882 "; DROP TABLE autofill;", |
| 1883 0, |
| 1884 {nullptr, nullptr}}, |
| 1885 }; |
| 1886 |
| 1887 for (size_t i = 0; i < arraysize(kTestCases); ++i) { |
| 1888 SCOPED_TRACE(testing::Message() |
| 1889 << "suggestion = " << kTestCases[i].field_suggestion[0] |
| 1890 << ", contents = " << kTestCases[i].field_contents); |
| 1891 |
| 1892 Time t1 = Time::Now(); |
| 1893 |
| 1894 // Simulate the submission of a handful of entries in a field called "Name". |
| 1895 AutofillChangeList changes; |
| 1896 FormFieldData field; |
| 1897 for (size_t k = 0; k < kMaxCount; ++k) { |
| 1898 field.name = ASCIIToUTF16("Name"); |
| 1899 field.value = ASCIIToUTF16(kTestCases[i].field_suggestion[k]); |
| 1900 table_->AddFormFieldValue(field, &changes); |
| 1901 } |
| 1902 |
| 1903 std::vector<base::string16> v; |
| 1904 table_->GetFormValuesForElementName( |
| 1905 ASCIIToUTF16("Name"), ASCIIToUTF16(kTestCases[i].field_contents), &v, |
| 1906 6); |
| 1907 |
| 1908 EXPECT_EQ(kTestCases[i].expected_suggestion_count, v.size()); |
| 1909 for (size_t j = 0; j < kTestCases[i].expected_suggestion_count; ++j) { |
| 1910 EXPECT_EQ(ASCIIToUTF16(kTestCases[i].expected_suggestion[j]), v[j]); |
| 1911 } |
| 1912 |
| 1913 changes.clear(); |
| 1914 table_->RemoveFormElementsAddedBetween(t1, Time(), &changes); |
| 1915 } |
| 1916 } |
| 1917 |
1859 } // namespace autofill | 1918 } // namespace autofill |
OLD | NEW |