Index: chrome/browser/ui/autofill/autofill_popup_controller_impl.cc |
diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc b/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc |
index 72e6c2b13c7e0e5130b93fa8cd6b2cd77fb03810..e8561a6cc89b8a478db16e01fa4291a31863797f 100644 |
--- a/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc |
+++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc |
@@ -118,6 +118,7 @@ AutofillPopupControllerImpl::AutofillPopupControllerImpl( |
#else |
warning_font_list_ = name_font_list_.DeriveWithStyle(gfx::Font::ITALIC); |
#endif |
+ title_font_list_ = name_font_list_.DeriveWithStyle(gfx::Font::BOLD); |
#endif |
} |
@@ -127,8 +128,9 @@ void AutofillPopupControllerImpl::Show( |
const std::vector<base::string16>& names, |
const std::vector<base::string16>& subtexts, |
const std::vector<base::string16>& icons, |
- const std::vector<int>& identifiers) { |
- SetValues(names, subtexts, icons, identifiers); |
+ const std::vector<int>& identifiers, |
+ const base::string16& title) { |
Garrett Casto
2014/11/04 23:35:30
Given the way that this works for other labels, it
jww
2014/11/06 21:28:56
Done.
|
+ SetValues(names, subtexts, icons, identifiers, title); |
#if !defined(OS_ANDROID) |
// Android displays the long text with ellipsis using the view attributes. |
@@ -260,7 +262,7 @@ bool AutofillPopupControllerImpl::HandleKeyPressEvent( |
SelectNextLine(); |
return true; |
case ui::VKEY_PRIOR: // Page up. |
- SetSelectedLine(0); |
+ SetSelectedLine(GetFirstSelectableLine()); |
return true; |
case ui::VKEY_NEXT: // Page down. |
SetSelectedLine(names().size() - 1); |
@@ -405,6 +407,9 @@ const gfx::FontList& AutofillPopupControllerImpl::GetNameFontListForRow( |
if (identifiers_[index] == POPUP_ITEM_ID_WARNING_MESSAGE) |
return warning_font_list_; |
+ if (identifiers_[index] == POPUP_ITEM_ID_TITLE) |
+ return title_font_list_; |
+ |
return name_font_list_; |
} |
@@ -421,6 +426,10 @@ void AutofillPopupControllerImpl::SetSelectedLine(int selected_line) { |
if (selected_line_ == selected_line) |
return; |
+ if (selected_line != kNoSelection && identifiers_.size() > 0 && |
+ identifiers_[selected_line] == POPUP_ITEM_ID_TITLE) |
+ return; |
+ |
if (selected_line_ != kNoSelection && |
static_cast<size_t>(selected_line_) < identifiers_.size()) |
InvalidateRow(selected_line_); |
@@ -522,7 +531,8 @@ int AutofillPopupControllerImpl::GetRowHeightFromId(int identifier) const { |
} |
bool AutofillPopupControllerImpl::CanAccept(int id) { |
- return id != POPUP_ITEM_ID_SEPARATOR && id != POPUP_ITEM_ID_WARNING_MESSAGE; |
+ return id != POPUP_ITEM_ID_SEPARATOR && id != POPUP_ITEM_ID_WARNING_MESSAGE && |
+ id != POPUP_ITEM_ID_TITLE; |
} |
bool AutofillPopupControllerImpl::HasSuggestions() { |
@@ -538,12 +548,21 @@ void AutofillPopupControllerImpl::SetValues( |
const std::vector<base::string16>& names, |
const std::vector<base::string16>& subtexts, |
const std::vector<base::string16>& icons, |
- const std::vector<int>& identifiers) { |
+ const std::vector<int>& identifiers, |
+ const base::string16& title) { |
names_ = names; |
full_names_ = names; |
subtexts_ = subtexts; |
icons_ = icons; |
identifiers_ = identifiers; |
+ |
+ if (!title.empty()) { |
+ names_.insert(names_.begin(), title); |
+ full_names_.insert(full_names_.begin(), title); |
+ subtexts_.insert(subtexts_.begin(), base::string16()); |
+ icons_.insert(icons_.begin(), base::string16()); |
+ identifiers_.insert(identifiers_.begin(), POPUP_ITEM_ID_TITLE); |
+ } |
} |
void AutofillPopupControllerImpl::ShowView() { |
@@ -632,4 +651,11 @@ void AutofillPopupControllerImpl::ClearState() { |
selected_line_ = kNoSelection; |
} |
+int AutofillPopupControllerImpl::GetFirstSelectableLine() { |
+ if (identifiers().size() < 1 || identifiers()[0] != POPUP_ITEM_ID_TITLE) |
+ return 0; |
+ |
+ return 1; |
+} |
+ |
} // namespace autofill |