| Index: Source/WebKit/chromium/src/AutofillPopupMenuClient.cpp
|
| diff --git a/Source/WebKit/chromium/src/AutofillPopupMenuClient.cpp b/Source/WebKit/chromium/src/AutofillPopupMenuClient.cpp
|
| index c84ea12f60e9c7539f921907383c46a77a709664..64071e2c5a43707b9c47a54e50bd66affb2cf31b 100644
|
| --- a/Source/WebKit/chromium/src/AutofillPopupMenuClient.cpp
|
| +++ b/Source/WebKit/chromium/src/AutofillPopupMenuClient.cpp
|
| @@ -52,8 +52,7 @@ using namespace WebCore;
|
| namespace WebKit {
|
|
|
| AutofillPopupMenuClient::AutofillPopupMenuClient()
|
| - : m_separatorIndex(-1)
|
| - , m_selectedIndex(-1)
|
| + : m_selectedIndex(-1)
|
| , m_textField(0)
|
| {
|
| }
|
| @@ -64,37 +63,25 @@ AutofillPopupMenuClient::~AutofillPopupMenuClient()
|
|
|
| unsigned AutofillPopupMenuClient::getSuggestionsCount() const
|
| {
|
| - return m_names.size() + ((m_separatorIndex == -1) ? 0 : 1);
|
| + return m_names.size();
|
| }
|
|
|
| WebString AutofillPopupMenuClient::getSuggestion(unsigned listIndex) const
|
| {
|
| - int index = convertListIndexToInternalIndex(listIndex);
|
| - if (index == -1)
|
| - return WebString();
|
| -
|
| - ASSERT(index >= 0 && static_cast<size_t>(index) < m_names.size());
|
| - return m_names[index];
|
| + ASSERT(listIndex < m_names.size());
|
| + return m_names[listIndex];
|
| }
|
|
|
| WebString AutofillPopupMenuClient::getLabel(unsigned listIndex) const
|
| {
|
| - int index = convertListIndexToInternalIndex(listIndex);
|
| - if (index == -1)
|
| - return WebString();
|
| -
|
| - ASSERT(index >= 0 && static_cast<size_t>(index) < m_labels.size());
|
| - return m_labels[index];
|
| + ASSERT(listIndex < m_labels.size());
|
| + return m_labels[listIndex];
|
| }
|
|
|
| WebString AutofillPopupMenuClient::getIcon(unsigned listIndex) const
|
| {
|
| - int index = convertListIndexToInternalIndex(listIndex);
|
| - if (index == -1)
|
| - return WebString();
|
| -
|
| - ASSERT(index >= 0 && static_cast<size_t>(index) < m_icons.size());
|
| - return m_icons[index];
|
| + ASSERT(listIndex < m_icons.size());
|
| + return m_icons[listIndex];
|
| }
|
|
|
| void AutofillPopupMenuClient::removeSuggestionAtIndex(unsigned listIndex)
|
| @@ -102,26 +89,18 @@ void AutofillPopupMenuClient::removeSuggestionAtIndex(unsigned listIndex)
|
| if (!canRemoveSuggestionAtIndex(listIndex))
|
| return;
|
|
|
| - int index = convertListIndexToInternalIndex(listIndex);
|
| -
|
| - ASSERT(static_cast<unsigned>(index) < m_names.size());
|
| -
|
| - m_names.remove(index);
|
| - m_labels.remove(index);
|
| - m_icons.remove(index);
|
| - m_uniqueIDs.remove(index);
|
| + ASSERT(listIndex < m_names.size());
|
|
|
| - // Shift the separator index if necessary.
|
| - if (m_separatorIndex != -1)
|
| - m_separatorIndex--;
|
| + m_names.remove(listIndex);
|
| + m_labels.remove(listIndex);
|
| + m_icons.remove(listIndex);
|
| + m_itemIDs.remove(listIndex);
|
| }
|
|
|
| bool AutofillPopupMenuClient::canRemoveSuggestionAtIndex(unsigned listIndex)
|
| {
|
| - // Only allow deletion of items before the separator that have unique id 0
|
| - // (i.e. are autocomplete rather than autofill items).
|
| - int index = convertListIndexToInternalIndex(listIndex);
|
| - return !m_uniqueIDs[index] && (m_separatorIndex == -1 || listIndex < static_cast<unsigned>(m_separatorIndex));
|
| + return m_itemIDs[listIndex] == AutocompleteEntryMenuItemID ||
|
| + m_itemIDs[listIndex] == PasswordEntryMenuItemID;
|
| }
|
|
|
| void AutofillPopupMenuClient::valueChanged(unsigned listIndex, bool fireEvents)
|
| @@ -130,15 +109,12 @@ void AutofillPopupMenuClient::valueChanged(unsigned listIndex, bool fireEvents)
|
| if (!webView)
|
| return;
|
|
|
| - if (m_separatorIndex != -1 && listIndex > static_cast<unsigned>(m_separatorIndex))
|
| - --listIndex;
|
| -
|
| ASSERT(listIndex < m_names.size());
|
|
|
| webView->autofillClient()->didAcceptAutofillSuggestion(WebNode(getTextField()),
|
| m_names[listIndex],
|
| m_labels[listIndex],
|
| - m_uniqueIDs[listIndex],
|
| + m_itemIDs[listIndex],
|
| listIndex);
|
| }
|
|
|
| @@ -148,15 +124,12 @@ void AutofillPopupMenuClient::selectionChanged(unsigned listIndex, bool fireEven
|
| if (!webView)
|
| return;
|
|
|
| - if (m_separatorIndex != -1 && listIndex > static_cast<unsigned>(m_separatorIndex))
|
| - --listIndex;
|
| -
|
| ASSERT(listIndex < m_names.size());
|
|
|
| webView->autofillClient()->didSelectAutofillSuggestion(WebNode(getTextField()),
|
| m_names[listIndex],
|
| m_labels[listIndex],
|
| - m_uniqueIDs[listIndex]);
|
| + m_itemIDs[listIndex]);
|
| }
|
|
|
| void AutofillPopupMenuClient::selectionCleared()
|
| @@ -228,17 +201,12 @@ void AutofillPopupMenuClient::popupDidHide()
|
|
|
| bool AutofillPopupMenuClient::itemIsSeparator(unsigned listIndex) const
|
| {
|
| - return (m_separatorIndex != -1 && static_cast<unsigned>(m_separatorIndex) == listIndex);
|
| + return m_itemIDs[listIndex] == SeparatorMenuItemID;
|
| }
|
|
|
| bool AutofillPopupMenuClient::itemIsWarning(unsigned listIndex) const
|
| {
|
| - int index = convertListIndexToInternalIndex(listIndex);
|
| - if (index == -1)
|
| - return false;
|
| -
|
| - ASSERT(index >= 0 && static_cast<size_t>(index) < m_uniqueIDs.size());
|
| - return m_uniqueIDs[index] < 0;
|
| + return m_itemIDs[listIndex] == WarningMessageMenuItemID;
|
| }
|
|
|
| void AutofillPopupMenuClient::setTextFromItem(unsigned listIndex)
|
| @@ -269,20 +237,18 @@ void AutofillPopupMenuClient::initialize(
|
| const WebVector<WebString>& names,
|
| const WebVector<WebString>& labels,
|
| const WebVector<WebString>& icons,
|
| - const WebVector<int>& uniqueIDs,
|
| - int separatorIndex)
|
| + const WebVector<int>& itemIDs)
|
| {
|
| ASSERT(names.size() == labels.size());
|
| ASSERT(names.size() == icons.size());
|
| - ASSERT(names.size() == uniqueIDs.size());
|
| - ASSERT(separatorIndex < static_cast<int>(names.size()));
|
| + ASSERT(names.size() == itemIDs.size());
|
|
|
| m_selectedIndex = -1;
|
| m_textField = textField;
|
|
|
| // The suggestions must be set before initializing the
|
| // AutofillPopupMenuClient.
|
| - setSuggestions(names, labels, icons, uniqueIDs, separatorIndex);
|
| + setSuggestions(names, labels, icons, itemIDs);
|
|
|
| FontDescription regularFontDescription;
|
| RenderTheme::defaultTheme()->systemFont(CSSValueWebkitControl,
|
| @@ -313,42 +279,28 @@ void AutofillPopupMenuClient::initialize(
|
| void AutofillPopupMenuClient::setSuggestions(const WebVector<WebString>& names,
|
| const WebVector<WebString>& labels,
|
| const WebVector<WebString>& icons,
|
| - const WebVector<int>& uniqueIDs,
|
| - int separatorIndex)
|
| + const WebVector<int>& itemIDs)
|
| {
|
| ASSERT(names.size() == labels.size());
|
| ASSERT(names.size() == icons.size());
|
| - ASSERT(names.size() == uniqueIDs.size());
|
| - ASSERT(separatorIndex < static_cast<int>(names.size()));
|
| + ASSERT(names.size() == itemIDs.size());
|
|
|
| m_names.clear();
|
| m_labels.clear();
|
| m_icons.clear();
|
| - m_uniqueIDs.clear();
|
| + m_itemIDs.clear();
|
| for (size_t i = 0; i < names.size(); ++i) {
|
| m_names.append(names[i]);
|
| m_labels.append(labels[i]);
|
| m_icons.append(icons[i]);
|
| - m_uniqueIDs.append(uniqueIDs[i]);
|
| + m_itemIDs.append(itemIDs[i]);
|
| }
|
|
|
| - m_separatorIndex = separatorIndex;
|
| -
|
| // Try to preserve selection if possible.
|
| if (getSelectedIndex() >= static_cast<int>(names.size()))
|
| setSelectedIndex(-1);
|
| }
|
|
|
| -int AutofillPopupMenuClient::convertListIndexToInternalIndex(unsigned listIndex) const
|
| -{
|
| - if (listIndex == static_cast<unsigned>(m_separatorIndex))
|
| - return -1;
|
| -
|
| - if (m_separatorIndex == -1 || listIndex < static_cast<unsigned>(m_separatorIndex))
|
| - return listIndex;
|
| - return listIndex - 1;
|
| -}
|
| -
|
| WebViewImpl* AutofillPopupMenuClient::getWebView() const
|
| {
|
| Frame* frame = m_textField->document()->frame();
|
|
|