diff options
Diffstat (limited to 'WebKit/chromium/src/WebSearchableFormData.cpp')
-rw-r--r-- | WebKit/chromium/src/WebSearchableFormData.cpp | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/WebKit/chromium/src/WebSearchableFormData.cpp b/WebKit/chromium/src/WebSearchableFormData.cpp index eddaffe..50192eb 100644 --- a/WebKit/chromium/src/WebSearchableFormData.cpp +++ b/WebKit/chromium/src/WebSearchableFormData.cpp @@ -62,7 +62,7 @@ void GetFormEncoding(const HTMLFormElement* form, TextEncoding* encoding) return; } const Frame* frame = form->document()->frame(); - *encoding = frame ? TextEncoding(frame->loader()->encoding()) : Latin1Encoding(); + *encoding = frame ? TextEncoding(frame->loader()->writer()->encoding()) : Latin1Encoding(); } // Returns true if the submit request results in an HTTP URL. @@ -77,7 +77,8 @@ bool IsHTTPFormSubmit(const HTMLFormElement* form) HTMLFormControlElement* GetButtonToActivate(HTMLFormElement* form) { HTMLFormControlElement* firstSubmitButton = 0; - for (Vector<HTMLFormControlElement*>::const_iterator i(form->formElements.begin()); i != form->formElements.end(); ++i) { + // FIXME: Consider refactoring this code so that we don't call form->associatedElements() twice. + for (Vector<HTMLFormControlElement*>::const_iterator i(form->associatedElements().begin()); i != form->associatedElements().end(); ++i) { HTMLFormControlElement* formElement = *i; if (formElement->isActivatedSubmit()) // There's a button that is already activated for submit, return 0. @@ -130,7 +131,7 @@ bool IsInDefaultState(const HTMLFormControlElement* formElement) { if (formElement->hasTagName(HTMLNames::inputTag)) { const HTMLInputElement* inputElement = static_cast<const HTMLInputElement*>(formElement); - if (inputElement->inputType() == HTMLInputElement::CHECKBOX || inputElement->inputType() == HTMLInputElement::RADIO) + if (inputElement->isCheckbox() || inputElement->isRadioButton()) return inputElement->checked() == inputElement->defaultChecked(); } else if (formElement->hasTagName(HTMLNames::selectTag)) return IsSelectInDefaultState(static_cast<const HTMLSelectElement*>(formElement)); @@ -154,7 +155,8 @@ bool HasSuitableTextElement(const HTMLFormElement* form, Vector<char>* encodedSt *encodingName = encoding.name(); HTMLInputElement* textElement = 0; - for (Vector<HTMLFormControlElement*>::const_iterator i(form->formElements.begin()); i != form->formElements.end(); ++i) { + // FIXME: Consider refactoring this code so that we don't call form->associatedElements() twice. + for (Vector<HTMLFormControlElement*>::const_iterator i(form->associatedElements().begin()); i != form->associatedElements().end(); ++i) { HTMLFormControlElement* formElement = *i; if (formElement->disabled() || formElement->name().isNull()) continue; @@ -164,29 +166,27 @@ bool HasSuitableTextElement(const HTMLFormElement* form, Vector<char>* encodedSt bool isTextElement = false; if (formElement->hasTagName(HTMLNames::inputTag)) { - switch (static_cast<const HTMLInputElement*>(formElement)->inputType()) { - case HTMLInputElement::TEXT: - case HTMLInputElement::ISINDEX: - isTextElement = true; - break; - case HTMLInputElement::PASSWORD: - // Don't store passwords! This is most likely an https anyway. - // Fall through. - case HTMLInputElement::FILE: + const HTMLInputElement* input = static_cast<const HTMLInputElement*>(formElement); + if (input->isFileUpload()) { // Too big, don't try to index this. return 0; - default: - // All other input types are indexable. - break; } + + if (input->isPasswordField()) { + // Don't store passwords! This is most likely an https anyway. + return 0; + } + + if (input->isTextField()) + isTextElement = true; } FormDataList dataList(encoding); if (!formElement->appendFormData(dataList, false)) continue; - const Vector<FormDataList::Item>& itemList = dataList.list(); - if (isTextElement && !itemList.isEmpty()) { + const Vector<FormDataList::Item>& items = dataList.items(); + if (isTextElement && !items.isEmpty()) { if (textElement) { // The auto-complete bar only knows how to fill in one value. // This form has multiple fields; don't treat it as searchable. @@ -194,7 +194,7 @@ bool HasSuitableTextElement(const HTMLFormElement* form, Vector<char>* encodedSt } textElement = static_cast<HTMLInputElement*>(formElement); } - for (Vector<FormDataList::Item>::const_iterator j(itemList.begin()); j != itemList.end(); ++j) { + for (Vector<FormDataList::Item>::const_iterator j(items.begin()); j != items.end(); ++j) { // Handle ISINDEX / <input name=isindex> specially, but only if it's // the first entry. if (!encodedString->isEmpty() || j->data() != "isindex") { |