Index: components/autofill/core/browser/webdata/autofill_table_unittest.cc |
diff --git a/components/autofill/core/browser/webdata/autofill_table_unittest.cc b/components/autofill/core/browser/webdata/autofill_table_unittest.cc |
index f3cf2006b1ac6c27f43c08654179e51bc4bea717..6a53237d9a29f5345559fd618b13e9e09f8982a5 100644 |
--- a/components/autofill/core/browser/webdata/autofill_table_unittest.cc |
+++ b/components/autofill/core/browser/webdata/autofill_table_unittest.cc |
@@ -5,6 +5,7 @@ |
#include <utility> |
#include <vector> |
+#include "base/command_line.h" |
#include "base/files/file_util.h" |
#include "base/files/scoped_temp_dir.h" |
#include "base/guid.h" |
@@ -21,6 +22,8 @@ |
#include "components/autofill/core/browser/webdata/autofill_change.h" |
#include "components/autofill/core/browser/webdata/autofill_entry.h" |
#include "components/autofill/core/browser/webdata/autofill_table.h" |
+#include "components/autofill/core/common/autofill_switches.h" |
+#include "components/autofill/core/common/autofill_util.h" |
#include "components/autofill/core/common/form_field_data.h" |
#include "components/os_crypt/os_crypt.h" |
#include "components/webdata/common/web_database.h" |
@@ -1856,4 +1859,60 @@ TEST_F(AutofillTableTest, DeleteUnmaskedCard) { |
outputs.clear(); |
} |
+TEST_F(AutofillTableTest, GetFormValuesForElementName) { |
+ // Token matching is currently behind a flag. |
+ base::CommandLine::ForCurrentProcess()->AppendSwitch( |
+ autofill::switches::kEnableSuggestionsWithSubstringMatch); |
+ |
+ const size_t max_count = 2; |
please use gerrit instead
2015/07/03 02:05:43
We usually format constants kLikeThis.
const size
Pritam Nikam
2015/07/03 16:21:27
Done.
|
+ const struct { |
+ const char* const field_suggestion[max_count]; |
+ const char* const field_contents; |
+ size_t expected_suggestion_count; |
+ const char* const expected_suggestion[max_count]; |
+ } test_cases[] = { |
please use gerrit instead
2015/07/03 02:05:43
kTestCases
Pritam Nikam
2015/07/03 16:21:27
Done.
|
+ {{"user.test", "test_user"}, "TEST", 2, {"test_user", "user.test"}}, |
+ {{"user test", "test-user"}, "user", 2, {"user test", "test-user"}}, |
+ {{"user test", "test-rest"}, "user", 1, {"user test", nullptr}}, |
+ {{"user@test", "test_user"}, "user@t", 1, {"user@test", nullptr}}, |
+ {{"user.test", "test_user"}, "er.tes", 0, {nullptr, nullptr}}, |
+ {{"user test", "test_user"}, "_ser", 0, {nullptr, nullptr}}, |
+ {{"user.test", "test_user"}, "%ser", 0, {nullptr, nullptr}}, |
+ {{"user.test", "test_user"}, |
+ "; DROP TABLE autofill;", |
+ 0, |
+ {nullptr, nullptr}}, |
+ }; |
+ |
+ for (size_t i = 0; i < arraysize(test_cases); ++i) { |
+ SCOPED_TRACE(testing::Message() |
+ << "suggestion = " << test_cases[i].field_suggestion[0] |
+ << ", contents = " << test_cases[i].field_contents); |
+ |
+ Time t1 = Time::Now(); |
+ |
+ // Simulate the submission of a handful of entries in a field called "Name". |
+ AutofillChangeList changes; |
+ FormFieldData field; |
+ for (size_t k = 0; k < arraysize(test_cases[i].field_suggestion); ++k) { |
please use gerrit instead
2015/07/03 02:05:43
You can use kMaxCount instead of arraysize(...) he
Pritam Nikam
2015/07/03 16:21:27
Done.
|
+ field.name = ASCIIToUTF16("Name"); |
+ field.value = ASCIIToUTF16(test_cases[i].field_suggestion[k]); |
+ table_->AddFormFieldValue(field, &changes); |
+ } |
+ |
+ std::vector<base::string16> v; |
+ table_->GetFormValuesForElementName( |
+ ASCIIToUTF16("Name"), ASCIIToUTF16(test_cases[i].field_contents), &v, |
+ 6); |
+ |
+ EXPECT_EQ(test_cases[i].expected_suggestion_count, v.size()); |
+ for (size_t j = 0; j < test_cases[i].expected_suggestion_count; ++j) { |
+ EXPECT_EQ(ASCIIToUTF16(test_cases[i].expected_suggestion[j]), v[j]); |
+ } |
+ |
+ changes.clear(); |
+ table_->RemoveFormElementsAddedBetween(t1, Time(), &changes); |
+ } |
+} |
+ |
} // namespace autofill |