| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 #include "config.h" | 31 #include "config.h" |
| 32 #include "public/web/WebSearchableFormData.h" | 32 #include "public/web/WebSearchableFormData.h" |
| 33 | 33 |
| 34 #include "core/HTMLNames.h" | 34 #include "core/HTMLNames.h" |
| 35 #include "core/InputTypeNames.h" |
| 35 #include "core/dom/Document.h" | 36 #include "core/dom/Document.h" |
| 36 #include "core/html/FormDataList.h" | 37 #include "core/html/FormDataList.h" |
| 37 #include "core/html/HTMLFormControlElement.h" | 38 #include "core/html/HTMLFormControlElement.h" |
| 38 #include "core/html/HTMLFormElement.h" | 39 #include "core/html/HTMLFormElement.h" |
| 39 #include "core/html/HTMLInputElement.h" | 40 #include "core/html/HTMLInputElement.h" |
| 40 #include "core/html/HTMLOptionElement.h" | 41 #include "core/html/HTMLOptionElement.h" |
| 41 #include "core/html/HTMLSelectElement.h" | 42 #include "core/html/HTMLSelectElement.h" |
| 42 #include "platform/network/FormDataBuilder.h" | 43 #include "platform/network/FormDataBuilder.h" |
| 43 #include "public/web/WebFormElement.h" | 44 #include "public/web/WebFormElement.h" |
| 44 #include "public/web/WebInputElement.h" | 45 #include "public/web/WebInputElement.h" |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 | 133 |
| 133 // Returns true if the form element is in its default state, false otherwise. | 134 // Returns true if the form element is in its default state, false otherwise. |
| 134 // The default state is the state of the form element on initial load of the | 135 // The default state is the state of the form element on initial load of the |
| 135 // page, and varies depending upon the form element. For example, a checkbox is | 136 // page, and varies depending upon the form element. For example, a checkbox is |
| 136 // in its default state if the checked state matches the state of the checked at
tribute. | 137 // in its default state if the checked state matches the state of the checked at
tribute. |
| 137 bool IsInDefaultState(HTMLFormControlElement* formElement) | 138 bool IsInDefaultState(HTMLFormControlElement* formElement) |
| 138 { | 139 { |
| 139 ASSERT(formElement); | 140 ASSERT(formElement); |
| 140 if (isHTMLInputElement(*formElement)) { | 141 if (isHTMLInputElement(*formElement)) { |
| 141 const HTMLInputElement& inputElement = toHTMLInputElement(*formElement); | 142 const HTMLInputElement& inputElement = toHTMLInputElement(*formElement); |
| 142 if (inputElement.isCheckbox() || inputElement.isRadioButton()) | 143 if (inputElement.type() == InputTypeNames::checkbox || inputElement.type
() == InputTypeNames::radio) |
| 143 return inputElement.checked() == inputElement.hasAttribute(checkedAt
tr); | 144 return inputElement.checked() == inputElement.hasAttribute(checkedAt
tr); |
| 144 } else if (isHTMLSelectElement(*formElement)) { | 145 } else if (isHTMLSelectElement(*formElement)) { |
| 145 return IsSelectInDefaultState(toHTMLSelectElement(formElement)); | 146 return IsSelectInDefaultState(toHTMLSelectElement(formElement)); |
| 146 } | 147 } |
| 147 return true; | 148 return true; |
| 148 } | 149 } |
| 149 | 150 |
| 150 // Look for a suitable search text field in a given HTMLFormElement | 151 // Look for a suitable search text field in a given HTMLFormElement |
| 151 // Return nothing if one of those items are found: | 152 // Return nothing if one of those items are found: |
| 152 // - A text area field | 153 // - A text area field |
| (...skipping 13 matching lines...) Expand all Loading... |
| 166 if (control->isDisabledFormControl() || control->name().isNull()) | 167 if (control->isDisabledFormControl() || control->name().isNull()) |
| 167 continue; | 168 continue; |
| 168 | 169 |
| 169 if (!IsInDefaultState(control) || isHTMLTextAreaElement(*control)) | 170 if (!IsInDefaultState(control) || isHTMLTextAreaElement(*control)) |
| 170 return 0; | 171 return 0; |
| 171 | 172 |
| 172 if (isHTMLInputElement(*control) && control->willValidate()) { | 173 if (isHTMLInputElement(*control) && control->willValidate()) { |
| 173 const HTMLInputElement& input = toHTMLInputElement(*control); | 174 const HTMLInputElement& input = toHTMLInputElement(*control); |
| 174 | 175 |
| 175 // Return nothing if a file upload field or a password field are fou
nd. | 176 // Return nothing if a file upload field or a password field are fou
nd. |
| 176 if (input.isFileUpload() || input.isPasswordField()) | 177 if (input.type() == InputTypeNames::file || input.type() == InputTyp
eNames::password) |
| 177 return 0; | 178 return 0; |
| 178 | 179 |
| 179 if (input.isTextField()) { | 180 if (input.isTextField()) { |
| 180 if (textElement) { | 181 if (textElement) { |
| 181 // The auto-complete bar only knows how to fill in one value
. | 182 // The auto-complete bar only knows how to fill in one value
. |
| 182 // This form has multiple fields; don't treat it as searchab
le. | 183 // This form has multiple fields; don't treat it as searchab
le. |
| 183 return 0; | 184 return 0; |
| 184 } | 185 } |
| 185 textElement = toHTMLInputElement(control); | 186 textElement = toHTMLInputElement(control); |
| 186 } | 187 } |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 | 284 |
| 284 String action(formElement->action()); | 285 String action(formElement->action()); |
| 285 KURL url(formElement->document().completeURL(action.isNull() ? "" : action))
; | 286 KURL url(formElement->document().completeURL(action.isNull() ? "" : action))
; |
| 286 RefPtr<FormData> formData = FormData::create(encodedString); | 287 RefPtr<FormData> formData = FormData::create(encodedString); |
| 287 url.setQuery(formData->flattenToString()); | 288 url.setQuery(formData->flattenToString()); |
| 288 m_url = url; | 289 m_url = url; |
| 289 m_encoding = String(encoding.name()); | 290 m_encoding = String(encoding.name()); |
| 290 } | 291 } |
| 291 | 292 |
| 292 } // namespace blink | 293 } // namespace blink |
| OLD | NEW |