diff options
author | isherman@chromium.org <isherman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-24 01:14:06 +0000 |
---|---|---|
committer | isherman@chromium.org <isherman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-24 01:14:06 +0000 |
commit | d77ddc80612ad43982c6f7da0de0c9e299f049c4 (patch) | |
tree | 5f87cdb5038bf919a6285274cfba6b33f489ef4c /chrome/browser/autofill | |
parent | 8c619149607580303c4050ee908f22c08fcb697c (diff) | |
download | chromium_src-d77ddc80612ad43982c6f7da0de0c9e299f049c4.zip chromium_src-d77ddc80612ad43982c6f7da0de0c9e299f049c4.tar.gz chromium_src-d77ddc80612ad43982c6f7da0de0c9e299f049c4.tar.bz2 |
Always include nonzero unique ID with autofill suggestions.
In particular, include the ID when correcting a form field.
BUG=62416
TEST=unit_tests --gtest_filter=AutoFillManagerTest.*
Review URL: http://codereview.chromium.org/5265002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67192 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autofill')
-rw-r--r-- | chrome/browser/autofill/autofill_manager.cc | 11 | ||||
-rw-r--r-- | chrome/browser/autofill/autofill_manager.h | 20 | ||||
-rw-r--r-- | chrome/browser/autofill/autofill_manager_unittest.cc | 162 |
3 files changed, 139 insertions, 54 deletions
diff --git a/chrome/browser/autofill/autofill_manager.cc b/chrome/browser/autofill/autofill_manager.cc index 1ba7a45..42051f7 100644 --- a/chrome/browser/autofill/autofill_manager.cc +++ b/chrome/browser/autofill/autofill_manager.cc @@ -240,15 +240,8 @@ bool AutoFillManager::GetAutoFillSuggestions(bool field_autofilled, // redundant. In addition, remove duplicate values. if (field_autofilled) { RemoveDuplicateElements(&values, &unique_ids); - labels.resize(values.size()); - icons.resize(values.size()); - unique_ids.resize(values.size()); - - for (size_t i = 0; i < labels.size(); ++i) { - labels[i] = string16(); - icons[i] = string16(); - unique_ids[i] = 0; - } + labels.assign(values.size(), string16()); + icons.assign(values.size(), string16()); } host->AutoFillSuggestionsReturned(values, labels, icons, unique_ids); diff --git a/chrome/browser/autofill/autofill_manager.h b/chrome/browser/autofill/autofill_manager.h index bf31052..835f643 100644 --- a/chrome/browser/autofill/autofill_manager.h +++ b/chrome/browser/autofill/autofill_manager.h @@ -95,6 +95,16 @@ class AutoFillManager : public RenderViewHostDelegate::AutoFill, personal_data_ = personal_data; } + // Maps GUIDs to and from IDs that are used to identify profiles and credit + // cards sent to and from the renderer process. + virtual int GUIDToID(const std::string& guid); + virtual const std::string IDToGUID(int id); + + // Methods for packing and unpacking credit card and profile IDs for sending + // and receiving to and from the renderer process. + int PackGUIDs(const std::string& cc_guid, const std::string& profile_guid); + void UnpackGUIDs(int id, std::string* cc_guid, std::string* profile_guid); + private: // Returns a list of values from the stored profiles that match |type| and the // value of |field| and returns the labels of the matching profiles. |labels| @@ -136,16 +146,6 @@ class AutoFillManager : public RenderViewHostDelegate::AutoFill, // Parses the forms using heuristic matching and querying the AutoFill server. void ParseForms(const std::vector<webkit_glue::FormData>& forms); - // Methods for packing and unpacking credit card and profile IDs for sending - // and receiving to and from the renderer process. - int PackGUIDs(const std::string& cc_guid, const std::string& profile_guid); - void UnpackGUIDs(int id, std::string* cc_guid, std::string* profile_guid); - - // Maps GUIDs to and from IDs that are used to identify profiles and credit - // cards sent to and from the renderer process. - int GUIDToID(const std::string& guid); - const std::string IDToGUID(int id); - // The following function is meant to be called from unit-test only. void set_disable_download_manager_requests(bool value) { disable_download_manager_requests_ = value; diff --git a/chrome/browser/autofill/autofill_manager_unittest.cc b/chrome/browser/autofill/autofill_manager_unittest.cc index e830fa3..228bbdb 100644 --- a/chrome/browser/autofill/autofill_manager_unittest.cc +++ b/chrome/browser/autofill/autofill_manager_unittest.cc @@ -8,7 +8,9 @@ #include "base/ref_counted.h" #include "base/scoped_ptr.h" #include "base/scoped_vector.h" +#include "base/string_number_conversions.h" #include "base/string16.h" +#include "base/stringprintf.h" #include "base/tuple.h" #include "base/utf_string_conversions.h" #include "chrome/browser/autofill/autofill_common_test.h" @@ -143,6 +145,28 @@ class TestAutoFillManager : public AutoFillManager { test_personal_data_->AddProfile(profile); } + int GetPackedCreditCardID(int credit_card_id) { + return PackGUIDs(IDToGUID(credit_card_id), std::string()); + } + + protected: + virtual int GUIDToID(const std::string& guid) OVERRIDE { + if (guid.empty()) + return 0; + + int id; + EXPECT_TRUE(base::StringToInt(guid.substr(guid.rfind("-") + 1), &id)); + return id; + } + + virtual const std::string IDToGUID(int id) OVERRIDE { + EXPECT_TRUE(id >= 0); + if (id <= 0) + return std::string(); + + return base::StringPrintf("00000000-0000-0000-0000-%012d", id); + } + private: TestPersonalDataManager* test_personal_data_; bool autofill_enabled_; @@ -248,7 +272,8 @@ class AutoFillManagerTest : public RenderViewHostTestHarness { bool GetAutoFillSuggestionsMessage(int* page_id, std::vector<string16>* values, std::vector<string16>* labels, - std::vector<string16>* icons) { + std::vector<string16>* icons, + std::vector<int>* unique_ids) { const uint32 kMsgID = ViewMsg_AutoFillSuggestionsReturned::ID; const IPC::Message* message = process()->sink().GetFirstMessageMatching(kMsgID); @@ -265,6 +290,8 @@ class AutoFillManagerTest : public RenderViewHostTestHarness { *labels = autofill_param.c; if (icons) *icons = autofill_param.d; + if (unique_ids) + *unique_ids = autofill_param.e; return true; } @@ -321,8 +348,9 @@ TEST_F(AutoFillManagerTest, GetProfileSuggestionsEmptyValue) { std::vector<string16> values; std::vector<string16> labels; std::vector<string16> icons; - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + std::vector<int> unique_ids; + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(2U, values.size()); EXPECT_EQ(ASCIIToUTF16("Elvis"), values[0]); @@ -335,6 +363,9 @@ TEST_F(AutoFillManagerTest, GetProfileSuggestionsEmptyValue) { ASSERT_EQ(2U, icons.size()); EXPECT_EQ(string16(), icons[0]); EXPECT_EQ(string16(), icons[1]); + ASSERT_EQ(2U, unique_ids.size()); + EXPECT_EQ(1, unique_ids[0]); + EXPECT_EQ(2, unique_ids[1]); } // Test that we return only matching address profile suggestions when the @@ -367,8 +398,9 @@ TEST_F(AutoFillManagerTest, GetProfileSuggestionsMatchCharacter) { std::vector<string16> values; std::vector<string16> labels; std::vector<string16> icons; - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + std::vector<int> unique_ids; + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(1U, values.size()); EXPECT_EQ(ASCIIToUTF16("Elvis"), values[0]); @@ -376,6 +408,8 @@ TEST_F(AutoFillManagerTest, GetProfileSuggestionsMatchCharacter) { EXPECT_EQ(ASCIIToUTF16("3734 Elvis Presley Blvd."), labels[0]); ASSERT_EQ(1U, icons.size()); EXPECT_EQ(string16(), icons[0]); + ASSERT_EQ(1U, unique_ids.size()); + EXPECT_EQ(1, unique_ids[0]); } // Test that we return no suggestions when the form has no relevant fields. @@ -472,8 +506,9 @@ TEST_F(AutoFillManagerTest, GetProfileSuggestionsMethodGet) { std::vector<string16> values; std::vector<string16> labels; std::vector<string16> icons; - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + std::vector<int> unique_ids; + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(1U, values.size()); EXPECT_EQ(l10n_util::GetStringUTF16(IDS_AUTOFILL_WARNING_FORM_DISABLED), @@ -482,6 +517,8 @@ TEST_F(AutoFillManagerTest, GetProfileSuggestionsMethodGet) { EXPECT_EQ(string16(), labels[0]); ASSERT_EQ(1U, icons.size()); EXPECT_EQ(string16(), icons[0]); + ASSERT_EQ(1U, unique_ids.size()); + EXPECT_EQ(-1, unique_ids[0]); // Now add some Autocomplete suggestions. We should return the autocomplete // suggestions and the warning; these will be culled by the renderer. @@ -495,8 +532,8 @@ TEST_F(AutoFillManagerTest, GetProfileSuggestionsMethodGet) { suggestions.push_back(ASCIIToUTF16("Jason")); rvh()->AutocompleteSuggestionsReturned(suggestions); - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID2, page_id); ASSERT_EQ(3U, values.size()); EXPECT_EQ(l10n_util::GetStringUTF16(IDS_AUTOFILL_WARNING_FORM_DISABLED), @@ -511,6 +548,10 @@ TEST_F(AutoFillManagerTest, GetProfileSuggestionsMethodGet) { EXPECT_EQ(string16(), icons[0]); EXPECT_EQ(string16(), icons[1]); EXPECT_EQ(string16(), icons[2]); + ASSERT_EQ(3U, unique_ids.size()); + EXPECT_EQ(-1, unique_ids[0]); + EXPECT_EQ(0, unique_ids[1]); + EXPECT_EQ(0, unique_ids[2]); // Now clear the test profiles and try again -- we shouldn't return a warning. test_personal_data_->ClearAutoFillProfiles(); @@ -547,8 +588,9 @@ TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsEmptyValue) { std::vector<string16> values; std::vector<string16> labels; std::vector<string16> icons; - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + std::vector<int> unique_ids; + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(2U, values.size()); EXPECT_EQ(ASCIIToUTF16("************3456"), values[0]); @@ -559,6 +601,9 @@ TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsEmptyValue) { ASSERT_EQ(2U, icons.size()); EXPECT_EQ(ASCIIToUTF16("visaCC"), icons[0]); EXPECT_EQ(ASCIIToUTF16("masterCardCC"), icons[1]); + ASSERT_EQ(2U, unique_ids.size()); + EXPECT_EQ(autofill_manager_->GetPackedCreditCardID(4), unique_ids[0]); + EXPECT_EQ(autofill_manager_->GetPackedCreditCardID(5), unique_ids[1]); } // Test that we return only matching credit card profile suggestions when the @@ -591,8 +636,9 @@ TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsMatchCharacter) { std::vector<string16> values; std::vector<string16> labels; std::vector<string16> icons; - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + std::vector<int> unique_ids; + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(1U, values.size()); EXPECT_EQ(ASCIIToUTF16("************3456"), values[0]); @@ -600,6 +646,8 @@ TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsMatchCharacter) { EXPECT_EQ(ASCIIToUTF16("*3456"), labels[0]); ASSERT_EQ(1U, icons.size()); EXPECT_EQ(ASCIIToUTF16("visaCC"), icons[0]); + ASSERT_EQ(1U, unique_ids.size()); + EXPECT_EQ(autofill_manager_->GetPackedCreditCardID(4), unique_ids[0]); } // Test that we return credit card profile suggestions when the selected form @@ -632,8 +680,9 @@ TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsNonCCNumber) { std::vector<string16> values; std::vector<string16> labels; std::vector<string16> icons; - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + std::vector<int> unique_ids; + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(2U, values.size()); EXPECT_EQ(ASCIIToUTF16("Elvis Presley"), values[0]); @@ -644,6 +693,9 @@ TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsNonCCNumber) { ASSERT_EQ(2U, icons.size()); EXPECT_EQ(ASCIIToUTF16("visaCC"), icons[0]); EXPECT_EQ(ASCIIToUTF16("masterCardCC"), icons[1]); + ASSERT_EQ(2U, unique_ids.size()); + EXPECT_EQ(autofill_manager_->GetPackedCreditCardID(4), unique_ids[0]); + EXPECT_EQ(autofill_manager_->GetPackedCreditCardID(5), unique_ids[1]); } // Test that we return a warning explaining that credit card profile suggestions @@ -676,8 +728,9 @@ TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsNonHTTPS) { std::vector<string16> values; std::vector<string16> labels; std::vector<string16> icons; - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + std::vector<int> unique_ids; + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(1U, values.size()); EXPECT_EQ(l10n_util::GetStringUTF16(IDS_AUTOFILL_WARNING_INSECURE_CONNECTION), @@ -686,6 +739,8 @@ TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsNonHTTPS) { EXPECT_EQ(string16(), labels[0]); ASSERT_EQ(1U, icons.size()); EXPECT_EQ(string16(), icons[0]); + ASSERT_EQ(1U, unique_ids.size()); + EXPECT_EQ(-1, unique_ids[0]); // Now add some Autocomplete suggestions. We should show the autocomplete // suggestions and the warning. @@ -699,8 +754,8 @@ TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsNonHTTPS) { suggestions.push_back(ASCIIToUTF16("Jason")); rvh()->AutocompleteSuggestionsReturned(suggestions); - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID2, page_id); ASSERT_EQ(3U, values.size()); EXPECT_EQ(l10n_util::GetStringUTF16(IDS_AUTOFILL_WARNING_INSECURE_CONNECTION), @@ -715,6 +770,10 @@ TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsNonHTTPS) { EXPECT_EQ(string16(), icons[0]); EXPECT_EQ(string16(), icons[1]); EXPECT_EQ(string16(), icons[2]); + ASSERT_EQ(3U, unique_ids.size()); + EXPECT_EQ(-1, unique_ids[0]); + EXPECT_EQ(0, unique_ids[1]); + EXPECT_EQ(0, unique_ids[2]); // Clear the test credit cards and try again -- we shouldn't return a warning. test_personal_data_->ClearCreditCards(); @@ -751,8 +810,9 @@ TEST_F(AutoFillManagerTest, GetAddressAndCreditCardSuggestions) { std::vector<string16> values; std::vector<string16> labels; std::vector<string16> icons; - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + std::vector<int> unique_ids; + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(2U, values.size()); EXPECT_EQ(ASCIIToUTF16("Elvis"), values[0]); @@ -765,6 +825,9 @@ TEST_F(AutoFillManagerTest, GetAddressAndCreditCardSuggestions) { ASSERT_EQ(2U, icons.size()); EXPECT_EQ(string16(), icons[0]); EXPECT_EQ(string16(), icons[1]); + ASSERT_EQ(2U, unique_ids.size()); + EXPECT_EQ(1, unique_ids[0]); + EXPECT_EQ(2, unique_ids[1]); process()->sink().ClearMessages(); autofill_test::CreateTestFormField( @@ -778,8 +841,8 @@ TEST_F(AutoFillManagerTest, GetAddressAndCreditCardSuggestions) { // Test that we sent the credit card suggestions to the renderer. page_id = 0; - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(2U, values.size()); EXPECT_EQ(ASCIIToUTF16("************3456"), values[0]); @@ -790,6 +853,9 @@ TEST_F(AutoFillManagerTest, GetAddressAndCreditCardSuggestions) { ASSERT_EQ(2U, icons.size()); EXPECT_EQ(ASCIIToUTF16("visaCC"), icons[0]); EXPECT_EQ(ASCIIToUTF16("masterCardCC"), icons[1]); + ASSERT_EQ(2U, unique_ids.size()); + EXPECT_EQ(autofill_manager_->GetPackedCreditCardID(4), unique_ids[0]); + EXPECT_EQ(autofill_manager_->GetPackedCreditCardID(5), unique_ids[1]); } // Test that for non-https forms with both address and credit card fields, we @@ -825,8 +891,9 @@ TEST_F(AutoFillManagerTest, GetAddressAndCreditCardSuggestionsNonHttps) { std::vector<string16> values; std::vector<string16> labels; std::vector<string16> icons; - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + std::vector<int> unique_ids; + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(2U, values.size()); EXPECT_EQ(ASCIIToUTF16("Elvis"), values[0]); @@ -839,6 +906,9 @@ TEST_F(AutoFillManagerTest, GetAddressAndCreditCardSuggestionsNonHttps) { ASSERT_EQ(2U, icons.size()); EXPECT_EQ(string16(), icons[0]); EXPECT_EQ(string16(), icons[1]); + ASSERT_EQ(2U, unique_ids.size()); + EXPECT_EQ(1, unique_ids[0]); + EXPECT_EQ(2, unique_ids[1]); process()->sink().ClearMessages(); autofill_test::CreateTestFormField( @@ -851,8 +921,8 @@ TEST_F(AutoFillManagerTest, GetAddressAndCreditCardSuggestionsNonHttps) { rvh()->AutocompleteSuggestionsReturned(std::vector<string16>()); // Test that we sent the right message to the renderer. - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(1U, values.size()); EXPECT_EQ(l10n_util::GetStringUTF16(IDS_AUTOFILL_WARNING_INSECURE_CONNECTION), @@ -861,6 +931,8 @@ TEST_F(AutoFillManagerTest, GetAddressAndCreditCardSuggestionsNonHttps) { EXPECT_EQ(string16(), labels[0]); ASSERT_EQ(1U, icons.size()); EXPECT_EQ(string16(), icons[0]); + ASSERT_EQ(1U, unique_ids.size()); + EXPECT_EQ(-1, unique_ids[0]); // Clear the test credit cards and try again -- we shouldn't return a warning. test_personal_data_->ClearCreditCards(); @@ -901,8 +973,9 @@ TEST_F(AutoFillManagerTest, GetCombinedAutoFillAndAutocompleteSuggestions) { std::vector<string16> values; std::vector<string16> labels; std::vector<string16> icons; - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + std::vector<int> unique_ids; + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(4U, values.size()); EXPECT_EQ(ASCIIToUTF16("Elvis"), values[0]); @@ -919,6 +992,11 @@ TEST_F(AutoFillManagerTest, GetCombinedAutoFillAndAutocompleteSuggestions) { EXPECT_EQ(string16(), icons[1]); EXPECT_EQ(string16(), icons[2]); EXPECT_EQ(string16(), icons[3]); + ASSERT_EQ(4U, unique_ids.size()); + EXPECT_EQ(1, unique_ids[0]); + EXPECT_EQ(2, unique_ids[1]); + EXPECT_EQ(0, unique_ids[2]); + EXPECT_EQ(0, unique_ids[3]); } // Test that we return autocomplete-like suggestions when trying to autofill @@ -951,8 +1029,9 @@ TEST_F(AutoFillManagerTest, GetFieldSuggestionsFieldIsAutoFilled) { std::vector<string16> values; std::vector<string16> labels; std::vector<string16> icons; - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + std::vector<int> unique_ids; + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(2U, values.size()); EXPECT_EQ(ASCIIToUTF16("Elvis"), values[0]); @@ -963,6 +1042,9 @@ TEST_F(AutoFillManagerTest, GetFieldSuggestionsFieldIsAutoFilled) { ASSERT_EQ(2U, icons.size()); EXPECT_EQ(string16(), icons[0]); EXPECT_EQ(string16(), icons[1]); + ASSERT_EQ(2U, unique_ids.size()); + EXPECT_EQ(1, unique_ids[0]); + EXPECT_EQ(2, unique_ids[1]); } // Test that nothing breaks when there are autocomplete suggestions but no @@ -998,8 +1080,9 @@ TEST_F(AutoFillManagerTest, GetFieldSuggestionsForAutocompleteOnly) { std::vector<string16> values; std::vector<string16> labels; std::vector<string16> icons; - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + std::vector<int> unique_ids; + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(2U, values.size()); ASSERT_EQ(2U, labels.size()); @@ -1010,6 +1093,9 @@ TEST_F(AutoFillManagerTest, GetFieldSuggestionsForAutocompleteOnly) { ASSERT_EQ(2U, icons.size()); EXPECT_EQ(string16(), icons[0]); EXPECT_EQ(string16(), icons[1]); + ASSERT_EQ(2U, unique_ids.size()); + EXPECT_EQ(0, unique_ids[0]); + EXPECT_EQ(0, unique_ids[1]); } // Test that we do not return duplicate values drawn from multiple profiles when @@ -1027,6 +1113,7 @@ TEST_F(AutoFillManagerTest, GetFieldSuggestionsWithDuplicateValues) { AutoFillProfile* profile = new AutoFillProfile; autofill_test::SetProfileInfo(profile, "Duplicate", "Elvis", "", "", "", "", "", "", "", "", "", "", "", ""); + profile->set_guid("00000000-0000-0000-0000-000000000101"); autofill_manager_->AddProfile(profile); // The page ID sent to the AutoFillManager from the RenderView, used to send @@ -1048,8 +1135,9 @@ TEST_F(AutoFillManagerTest, GetFieldSuggestionsWithDuplicateValues) { std::vector<string16> values; std::vector<string16> labels; std::vector<string16> icons; - EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, - &icons)); + std::vector<int> unique_ids; + EXPECT_TRUE(GetAutoFillSuggestionsMessage(&page_id, &values, &labels, &icons, + &unique_ids)); EXPECT_EQ(kPageID, page_id); ASSERT_EQ(2U, values.size()); EXPECT_EQ(ASCIIToUTF16("Elvis"), values[0]); @@ -1060,6 +1148,9 @@ TEST_F(AutoFillManagerTest, GetFieldSuggestionsWithDuplicateValues) { ASSERT_EQ(2U, icons.size()); EXPECT_EQ(string16(), icons[0]); EXPECT_EQ(string16(), icons[1]); + ASSERT_EQ(2U, unique_ids.size()); + EXPECT_EQ(1, unique_ids[0]); + EXPECT_EQ(2, unique_ids[1]); } // Test that we correctly fill an address form. @@ -1071,6 +1162,7 @@ TEST_F(AutoFillManagerTest, FillAddressForm) { "916 16th St.", "Apt. 6", "Lubbock", "Texas", "79401", "USA", "12345678901", ""); + profile->set_guid("00000000-0000-0000-0000-000000000007"); autofill_manager_->AddProfile(profile); FormData form; |