AutoFillPopupMenuClient.cpp [plain text]
#include "config.h"
#include "AutoFillPopupMenuClient.h"
#include "HTMLInputElement.h"
#include "WebNode.h"
#include "WebString.h"
#include "WebVector.h"
#include "WebViewClient.h"
#include "WebViewImpl.h"
using namespace WebCore;
namespace WebKit {
unsigned AutoFillPopupMenuClient::getSuggestionsCount() const
{
return m_names.size();
}
WebString AutoFillPopupMenuClient::getSuggestion(unsigned listIndex) const
{
ASSERT(listIndex >= 0 && listIndex < m_names.size());
return m_names[listIndex] + String(" (") + m_labels[listIndex] + String(")");
}
void AutoFillPopupMenuClient::removeSuggestionAtIndex(unsigned listIndex)
{
ASSERT(listIndex >= 0 && listIndex < m_names.size());
m_names.remove(listIndex);
m_labels.remove(listIndex);
}
void AutoFillPopupMenuClient::valueChanged(unsigned listIndex, bool fireEvents)
{
ASSERT(listIndex >= 0 && listIndex < m_names.size());
WebViewImpl* webView = getWebView();
if (!webView)
return;
webView->client()->didAcceptAutoFillSuggestion(WebNode(getTextField()),
m_names[listIndex],
m_labels[listIndex]);
}
void AutoFillPopupMenuClient::initialize(
HTMLInputElement* textField,
const WebVector<WebString>& names,
const WebVector<WebString>& labels,
int defaultSuggestionIndex)
{
ASSERT(names.size() == labels.size());
ASSERT(defaultSuggestionIndex < static_cast<int>(names.size()));
setSuggestions(names, labels);
SuggestionsPopupMenuClient::initialize(textField, defaultSuggestionIndex);
}
void AutoFillPopupMenuClient::setSuggestions(const WebVector<WebString>& names,
const WebVector<WebString>& labels)
{
ASSERT(names.size() == labels.size());
m_names.clear();
m_labels.clear();
for (size_t i = 0; i < names.size(); ++i) {
m_names.append(names[i]);
m_labels.append(labels[i]);
}
if (getSelectedIndex() >= static_cast<int>(names.size()))
setSelectedIndex(-1);
}
}