Index: chrome/browser/ui/autofill/autofill_popup_controller_unittest.cc |
diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_unittest.cc b/chrome/browser/ui/autofill/autofill_popup_controller_unittest.cc |
index 9265f0a170ecd087b254ec1b3a41c317690a8dbe..b04fb747f4d79b9d8510833af1a300aa9bf64f03 100644 |
--- a/chrome/browser/ui/autofill/autofill_popup_controller_unittest.cc |
+++ b/chrome/browser/ui/autofill/autofill_popup_controller_unittest.cc |
@@ -86,9 +86,10 @@ class TestAutofillPopupController : public AutofillPopupControllerImpl { |
// Making protected functions public for testing |
using AutofillPopupControllerImpl::SetPopupBounds; |
- using AutofillPopupControllerImpl::names; |
- using AutofillPopupControllerImpl::subtexts; |
- using AutofillPopupControllerImpl::identifiers; |
+ using AutofillPopupControllerImpl::GetLineCount; |
+ using AutofillPopupControllerImpl::GetSuggestionAt; |
+ using AutofillPopupControllerImpl::GetElidedValueAt; |
+ using AutofillPopupControllerImpl::GetElidedLabelAt; |
using AutofillPopupControllerImpl::selected_line; |
using AutofillPopupControllerImpl::SetSelectedLine; |
using AutofillPopupControllerImpl::SelectNextLine; |
@@ -97,8 +98,8 @@ class TestAutofillPopupController : public AutofillPopupControllerImpl { |
using AutofillPopupControllerImpl::popup_bounds; |
using AutofillPopupControllerImpl::element_bounds; |
#if !defined(OS_ANDROID) |
- using AutofillPopupControllerImpl::GetNameFontListForRow; |
- using AutofillPopupControllerImpl::subtext_font_list; |
+ using AutofillPopupControllerImpl::GetValueFontListForRow; |
+ using AutofillPopupControllerImpl::GetLabelFontList; |
using AutofillPopupControllerImpl::RowWidthWithoutText; |
#endif |
using AutofillPopupControllerImpl::SetValues; |
@@ -186,20 +187,21 @@ TEST_F(AutofillPopupControllerUnitTest, SetBounds) { |
TEST_F(AutofillPopupControllerUnitTest, ChangeSelectedLine) { |
// Set up the popup. |
- std::vector<base::string16> names(2, base::string16()); |
- std::vector<int> autofill_ids(2, 0); |
- autofill_popup_controller_->Show(names, names, names, autofill_ids); |
+ std::vector<Suggestion> suggestions; |
+ suggestions.push_back(Suggestion("", "", "", 0)); |
+ suggestions.push_back(Suggestion("", "", "", 0)); |
+ autofill_popup_controller_->Show(suggestions); |
EXPECT_LT(autofill_popup_controller_->selected_line(), 0); |
// Check that there are at least 2 values so that the first and last selection |
// are different. |
EXPECT_GE(2, |
- static_cast<int>(autofill_popup_controller_->subtexts().size())); |
+ static_cast<int>(autofill_popup_controller_->GetLineCount())); |
// Test wrapping before the front. |
autofill_popup_controller_->SelectPreviousLine(); |
EXPECT_EQ(static_cast<int>( |
- autofill_popup_controller_->subtexts().size() - 1), |
+ autofill_popup_controller_->GetLineCount() - 1), |
autofill_popup_controller_->selected_line()); |
// Test wrapping after the end. |
@@ -209,9 +211,10 @@ TEST_F(AutofillPopupControllerUnitTest, ChangeSelectedLine) { |
TEST_F(AutofillPopupControllerUnitTest, RedrawSelectedLine) { |
// Set up the popup. |
- std::vector<base::string16> names(2, base::string16()); |
- std::vector<int> autofill_ids(2, 0); |
- autofill_popup_controller_->Show(names, names, names, autofill_ids); |
+ std::vector<Suggestion> suggestions; |
+ suggestions.push_back(Suggestion("", "", "", 0)); |
+ suggestions.push_back(Suggestion("", "", "", 0)); |
+ autofill_popup_controller_->Show(suggestions); |
// Make sure that when a new line is selected, it is invalidated so it can |
// be updated to show it is selected. |
@@ -231,12 +234,11 @@ TEST_F(AutofillPopupControllerUnitTest, RedrawSelectedLine) { |
TEST_F(AutofillPopupControllerUnitTest, RemoveLine) { |
// Set up the popup. |
- std::vector<base::string16> names(3, base::string16()); |
- std::vector<int> autofill_ids; |
- autofill_ids.push_back(1); |
- autofill_ids.push_back(1); |
- autofill_ids.push_back(POPUP_ITEM_ID_AUTOFILL_OPTIONS); |
- autofill_popup_controller_->Show(names, names, names, autofill_ids); |
+ std::vector<Suggestion> suggestions; |
+ suggestions.push_back(Suggestion("", "", "", 1)); |
+ suggestions.push_back(Suggestion("", "", "", 1)); |
+ suggestions.push_back(Suggestion("", "", "", POPUP_ITEM_ID_AUTOFILL_OPTIONS)); |
+ autofill_popup_controller_->Show(suggestions); |
// Generate a popup, so it can be hidden later. It doesn't matter what the |
// external_delegate thinks is being shown in the process, since we are just |
@@ -248,7 +250,7 @@ TEST_F(AutofillPopupControllerUnitTest, RemoveLine) { |
// Try to remove the last entry and ensure it fails (it is an option). |
autofill_popup_controller_->SetSelectedLine( |
- autofill_popup_controller_->subtexts().size() - 1); |
+ autofill_popup_controller_->GetLineCount() - 1); |
EXPECT_FALSE(autofill_popup_controller_->RemoveSelectedLine()); |
EXPECT_LE(0, autofill_popup_controller_->selected_line()); |
@@ -267,10 +269,9 @@ TEST_F(AutofillPopupControllerUnitTest, RemoveLine) { |
TEST_F(AutofillPopupControllerUnitTest, RemoveOnlyLine) { |
// Set up the popup. |
- std::vector<base::string16> names(1, base::string16()); |
- std::vector<int> autofill_ids; |
- autofill_ids.push_back(1); |
- autofill_popup_controller_->Show(names, names, names, autofill_ids); |
+ std::vector<Suggestion> suggestions; |
+ suggestions.push_back(Suggestion("", "", "", 1)); |
+ autofill_popup_controller_->Show(suggestions); |
// Generate a popup. |
autofill::GenerateTestAutofillPopup(external_delegate_.get()); |
@@ -287,12 +288,11 @@ TEST_F(AutofillPopupControllerUnitTest, RemoveOnlyLine) { |
TEST_F(AutofillPopupControllerUnitTest, SkipSeparator) { |
// Set up the popup. |
- std::vector<base::string16> names(3, base::string16()); |
- std::vector<int> autofill_ids; |
- autofill_ids.push_back(1); |
- autofill_ids.push_back(POPUP_ITEM_ID_SEPARATOR); |
- autofill_ids.push_back(POPUP_ITEM_ID_AUTOFILL_OPTIONS); |
- autofill_popup_controller_->Show(names, names, names, autofill_ids); |
+ std::vector<Suggestion> suggestions; |
+ suggestions.push_back(Suggestion("", "", "", 1)); |
+ suggestions.push_back(Suggestion("", "", "", POPUP_ITEM_ID_SEPARATOR)); |
+ suggestions.push_back(Suggestion("", "", "", POPUP_ITEM_ID_AUTOFILL_OPTIONS)); |
+ autofill_popup_controller_->Show(suggestions); |
autofill_popup_controller_->SetSelectedLine(0); |
@@ -306,22 +306,19 @@ TEST_F(AutofillPopupControllerUnitTest, SkipSeparator) { |
} |
TEST_F(AutofillPopupControllerUnitTest, RowWidthWithoutText) { |
- std::vector<base::string16> names(4); |
- std::vector<base::string16> subtexts(4); |
- std::vector<base::string16> icons(4); |
- std::vector<int> ids(4); |
+ // Give elements 1 and 3 subtexts and elements 2 and 3 icons, to ensure |
+ // all combinations of subtexts and icons. |
+ std::vector<Suggestion> suggestions; |
+ suggestions.push_back(Suggestion("", "", "", 0)); |
+ suggestions.push_back(Suggestion("", "x", "", 0)); |
+ suggestions.push_back(Suggestion("", "", "americanExpressCC", 0)); |
+ suggestions.push_back(Suggestion("", "x", "genericCC", 0)); |
// Set up some visible display so the text values are kept. |
gfx::Display display(0, gfx::Rect(0, 0, 100, 100)); |
autofill_popup_controller_->set_display(display); |
- // Give elements 1 and 3 subtexts and elements 2 and 3 icons, to ensure |
- // all combinations of subtexts and icons. |
- subtexts[1] = ASCIIToUTF16("x"); |
- subtexts[3] = ASCIIToUTF16("x"); |
- icons[2] = ASCIIToUTF16("americanExpressCC"); |
- icons[3] = ASCIIToUTF16("genericCC"); |
- autofill_popup_controller_->Show(names, subtexts, icons, ids); |
+ autofill_popup_controller_->Show(suggestions); |
int base_size = |
AutofillPopupView::kEndPadding * 2 + |
@@ -342,82 +339,80 @@ TEST_F(AutofillPopupControllerUnitTest, RowWidthWithoutText) { |
} |
TEST_F(AutofillPopupControllerUnitTest, UpdateDataListValues) { |
- std::vector<base::string16> items; |
- items.push_back(base::string16()); |
- std::vector<int> ids; |
- ids.push_back(1); |
- |
- autofill_popup_controller_->Show(items, items, items, ids); |
- |
- EXPECT_EQ(items, autofill_popup_controller_->names()); |
- EXPECT_EQ(ids, autofill_popup_controller_->identifiers()); |
+ std::vector<Suggestion> suggestions; |
+ suggestions.push_back(Suggestion("", "", "", 1)); |
+ autofill_popup_controller_->Show(suggestions); |
// Add one data list entry. |
+ base::string16 value1 = ASCIIToUTF16("data list value 1"); |
std::vector<base::string16> data_list_values; |
- data_list_values.push_back(ASCIIToUTF16("data list value 1")); |
+ data_list_values.push_back(value1); |
autofill_popup_controller_->UpdateDataListValues(data_list_values, |
data_list_values); |
- // Update the expected values. |
- items.insert(items.begin(), data_list_values[0]); |
- items.insert(items.begin() + 1, base::string16()); |
- ids.insert(ids.begin(), POPUP_ITEM_ID_DATALIST_ENTRY); |
- ids.insert(ids.begin() + 1, POPUP_ITEM_ID_SEPARATOR); |
+ ASSERT_EQ(3u, autofill_popup_controller_->GetLineCount()); |
+ |
+ Suggestion result0 = autofill_popup_controller_->GetSuggestionAt(0); |
+ EXPECT_EQ(value1, result0.value); |
+ EXPECT_EQ(value1, autofill_popup_controller_->GetElidedValueAt(0)); |
+ EXPECT_EQ(value1, result0.label); |
+ EXPECT_EQ(value1, autofill_popup_controller_->GetElidedLabelAt(0)); |
+ EXPECT_EQ(POPUP_ITEM_ID_DATALIST_ENTRY, result0.frontend_id); |
+ |
+ Suggestion result1 = autofill_popup_controller_->GetSuggestionAt(1); |
+ EXPECT_EQ(base::string16(), result1.value); |
+ EXPECT_EQ(base::string16(), result1.label); |
+ EXPECT_EQ(POPUP_ITEM_ID_SEPARATOR, result1.frontend_id); |
- EXPECT_EQ(items, autofill_popup_controller_->names()); |
- EXPECT_EQ(ids, autofill_popup_controller_->identifiers()); |
+ Suggestion result2 = autofill_popup_controller_->GetSuggestionAt(2); |
+ EXPECT_EQ(base::string16(), result2.value); |
+ EXPECT_EQ(base::string16(), result2.label); |
+ EXPECT_EQ(1, result2.frontend_id); |
// Add two data list entries (which should replace the current one). |
- data_list_values.push_back(ASCIIToUTF16("data list value 2")); |
+ base::string16 value2 = ASCIIToUTF16("data list value 2"); |
+ data_list_values.push_back(value2); |
autofill_popup_controller_->UpdateDataListValues(data_list_values, |
data_list_values); |
+ ASSERT_EQ(4u, autofill_popup_controller_->GetLineCount()); |
- // Update the expected values. |
- items.insert(items.begin() + 1, data_list_values[1]); |
- ids.insert(ids.begin(), POPUP_ITEM_ID_DATALIST_ENTRY); |
- |
- EXPECT_EQ(items, autofill_popup_controller_->names()); |
- EXPECT_EQ(ids, autofill_popup_controller_->identifiers()); |
+ // Original one first, followed by new one, then separator. |
+ EXPECT_EQ(value1, autofill_popup_controller_->GetSuggestionAt(0).value); |
+ EXPECT_EQ(value1, autofill_popup_controller_->GetElidedValueAt(0)); |
+ EXPECT_EQ(value2, autofill_popup_controller_->GetSuggestionAt(1).value); |
+ EXPECT_EQ(value2, autofill_popup_controller_->GetElidedValueAt(1)); |
+ EXPECT_EQ(POPUP_ITEM_ID_SEPARATOR, |
+ autofill_popup_controller_->GetSuggestionAt(2).frontend_id); |
// Clear all data list values. |
data_list_values.clear(); |
- |
autofill_popup_controller_->UpdateDataListValues(data_list_values, |
data_list_values); |
- items.clear(); |
- items.push_back(base::string16()); |
- ids.clear(); |
- ids.push_back(1); |
- |
- EXPECT_EQ(items, autofill_popup_controller_->names()); |
- EXPECT_EQ(ids, autofill_popup_controller_->identifiers()); |
+ ASSERT_EQ(1u, autofill_popup_controller_->GetLineCount()); |
+ EXPECT_EQ(1, autofill_popup_controller_->GetSuggestionAt(0).frontend_id); |
} |
TEST_F(AutofillPopupControllerUnitTest, PopupsWithOnlyDataLists) { |
// Create the popup with a single datalist element. |
- std::vector<base::string16> items; |
- items.push_back(base::string16()); |
- std::vector<int> ids; |
- ids.push_back(POPUP_ITEM_ID_DATALIST_ENTRY); |
- |
- autofill_popup_controller_->Show(items, items, items, ids); |
- |
- EXPECT_EQ(items, autofill_popup_controller_->names()); |
- EXPECT_EQ(ids, autofill_popup_controller_->identifiers()); |
+ std::vector<Suggestion> suggestions; |
+ suggestions.push_back(Suggestion("", "", "", POPUP_ITEM_ID_DATALIST_ENTRY)); |
+ autofill_popup_controller_->Show(suggestions); |
// Replace the datalist element with a new one. |
+ base::string16 value1 = ASCIIToUTF16("data list value 1"); |
std::vector<base::string16> data_list_values; |
- data_list_values.push_back(ASCIIToUTF16("data list value 1")); |
+ data_list_values.push_back(value1); |
autofill_popup_controller_->UpdateDataListValues(data_list_values, |
data_list_values); |
- EXPECT_EQ(data_list_values, autofill_popup_controller_->names()); |
- // The id value should stay the same. |
- EXPECT_EQ(ids, autofill_popup_controller_->identifiers()); |
+ ASSERT_EQ(1u, autofill_popup_controller_->GetLineCount()); |
+ EXPECT_EQ(value1, autofill_popup_controller_->GetSuggestionAt(0).value); |
+ EXPECT_EQ(POPUP_ITEM_ID_DATALIST_ENTRY, |
+ autofill_popup_controller_->GetSuggestionAt(0).frontend_id); |
// Clear datalist values and check that the popup becomes hidden. |
EXPECT_CALL(*autofill_popup_controller_, Hide()); |
@@ -481,9 +476,10 @@ TEST_F(AutofillPopupControllerUnitTest, GetOrCreate) { |
} |
TEST_F(AutofillPopupControllerUnitTest, ProperlyResetController) { |
- std::vector<base::string16> names(2); |
- std::vector<int> ids(2); |
- popup_controller()->SetValues(names, names, names, ids); |
+ std::vector<Suggestion> suggestions; |
+ suggestions.push_back(Suggestion("", "", "", 0)); |
+ suggestions.push_back(Suggestion("", "", "", 0)); |
+ popup_controller()->SetValues(suggestions); |
popup_controller()->SetSelectedLine(0); |
// Now show a new popup with the same controller, but with fewer items. |
@@ -496,43 +492,45 @@ TEST_F(AutofillPopupControllerUnitTest, ProperlyResetController) { |
gfx::Rect(), |
base::i18n::UNKNOWN_DIRECTION); |
EXPECT_NE(0, controller->selected_line()); |
- EXPECT_TRUE(controller->names().empty()); |
+ EXPECT_EQ(0u, controller->GetLineCount()); |
} |
#if !defined(OS_ANDROID) |
TEST_F(AutofillPopupControllerUnitTest, ElideText) { |
- std::vector<base::string16> names; |
- names.push_back(ASCIIToUTF16("Text that will need to be trimmed")); |
- names.push_back(ASCIIToUTF16("Untrimmed")); |
- |
- std::vector<base::string16> subtexts; |
- subtexts.push_back(ASCIIToUTF16("Label that will be trimmed")); |
- subtexts.push_back(ASCIIToUTF16("Untrimmed")); |
- |
- std::vector<base::string16> icons(2, ASCIIToUTF16("genericCC")); |
- std::vector<int> autofill_ids(2, 0); |
+ std::vector<Suggestion> suggestions; |
+ suggestions.push_back( |
+ Suggestion("Text that will need to be trimmed", |
+ "Label that will be trimmed", "genericCC", 0)); |
+ suggestions.push_back( |
+ Suggestion("untrimmed", "Untrimmed", "genericCC", 0)); |
// Show the popup once so we can easily generate the size it needs. |
- autofill_popup_controller_->Show(names, subtexts, icons, autofill_ids); |
+ autofill_popup_controller_->Show(suggestions); |
// Ensure the popup will be too small to display all of the first row. |
int popup_max_width = |
gfx::GetStringWidth( |
- names[0], autofill_popup_controller_->GetNameFontListForRow(0)) + |
+ suggestions[0].value, |
+ autofill_popup_controller_->GetValueFontListForRow(0)) + |
gfx::GetStringWidth( |
- subtexts[0], autofill_popup_controller_->subtext_font_list()) - 25; |
+ suggestions[0].label, |
+ autofill_popup_controller_->GetLabelFontList()) - 25; |
gfx::Rect popup_bounds = gfx::Rect(0, 0, popup_max_width, 0); |
autofill_popup_controller_->set_display(gfx::Display(0, popup_bounds)); |
- autofill_popup_controller_->Show(names, subtexts, icons, autofill_ids); |
+ autofill_popup_controller_->Show(suggestions); |
// The first element was long so it should have been trimmed. |
- EXPECT_NE(names[0], autofill_popup_controller_->names()[0]); |
- EXPECT_NE(subtexts[0], autofill_popup_controller_->subtexts()[0]); |
+ EXPECT_NE(autofill_popup_controller_->GetSuggestionAt(0).value, |
+ autofill_popup_controller_->GetElidedValueAt(0)); |
+ EXPECT_NE(autofill_popup_controller_->GetSuggestionAt(0).label, |
+ autofill_popup_controller_->GetElidedLabelAt(0)); |
// The second element was shorter so it should be unchanged. |
- EXPECT_EQ(names[1], autofill_popup_controller_->names()[1]); |
- EXPECT_EQ(subtexts[1], autofill_popup_controller_->subtexts()[1]); |
+ EXPECT_EQ(autofill_popup_controller_->GetSuggestionAt(1).value, |
+ autofill_popup_controller_->GetElidedValueAt(1)); |
+ EXPECT_EQ(autofill_popup_controller_->GetSuggestionAt(1).label, |
+ autofill_popup_controller_->GetElidedLabelAt(1)); |
} |
#endif |