blob: 1b79e3eea75bb8a53655145d2d59ad11eb3e3992 [file] [log] [blame]
/*
* Copyright (C) 2012 Research In Motion Limited. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "config.h"
#include "AutofillManager.h"
#include "AutofillBackingStore.h"
#include "HTMLCollection.h"
#include "HTMLFormElement.h"
#include "HTMLInputElement.h"
#include "WebPage_p.h"
namespace WebCore {
static bool isAutofillable(HTMLInputElement* element)
{
return element && element->isTextField() && !element->isPasswordField()
&& !element->isAutofilled() && element->shouldAutocomplete();
}
PassRefPtr<AutofillManager> AutofillManager::create(BlackBerry::WebKit::WebPagePrivate* page)
{
return adoptRef(new AutofillManager(page));
}
void AutofillManager::didChangeInTextField(HTMLInputElement* element)
{
if (!isAutofillable(element))
return;
if (m_element != element)
m_element = element;
Vector<String> candidates = autofillBackingStore().get(element->getAttribute(HTMLNames::nameAttr).string(), element->value());
m_webPagePrivate->notifyPopupAutofillDialog(candidates);
}
void AutofillManager::textFieldDidEndEditing(HTMLInputElement*)
{
m_webPagePrivate->notifyDismissAutofillDialog();
}
void AutofillManager::autofillTextField(const String& value)
{
if (!m_element)
return;
m_element->setValue(value);
m_element->setAutofilled();
}
void AutofillManager::saveTextFields(HTMLFormElement* form)
{
RefPtr<HTMLCollection> elements = form->elements();
size_t itemCount = elements->length();
for (size_t i = 0; i < itemCount; ++i) {
HTMLInputElement* element = form->item(i)->toInputElement();
if (!isAutofillable(element))
continue;
autofillBackingStore().add(element->getAttribute(HTMLNames::nameAttr).string(), element->value());
}
}
void AutofillManager::clear()
{
autofillBackingStore().clear();
}
} // namespace WebCore