/* * Copyright (C) 2009 Google Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * * Neither the name of Google Inc. nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "third_party/blink/public/web/web_searchable_form_data.h" #include "third_party/blink/public/web/web_form_element.h" #include "third_party/blink/public/web/web_input_element.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/html/forms/form_data.h" #include "third_party/blink/renderer/core/html/forms/html_form_control_element.h" #include "third_party/blink/renderer/core/html/forms/html_form_element.h" #include "third_party/blink/renderer/core/html/forms/html_input_element.h" #include "third_party/blink/renderer/core/html/forms/html_option_element.h" #include "third_party/blink/renderer/core/html/forms/html_select_element.h" #include "third_party/blink/renderer/core/html/forms/html_text_area_element.h" #include "third_party/blink/renderer/core/html_names.h" #include "third_party/blink/renderer/core/input_type_names.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" #include "third_party/blink/renderer/platform/network/form_data_encoder.h" #include "third_party/blink/renderer/platform/wtf/text/text_encoding.h" namespace blink { FormControlType; namespace { // Gets the encoding for the form. // TODO(tkent): Use FormDataEncoder::encodingFromAcceptCharset(). void GetFormEncoding(const HTMLFormElement& form, WTF::TextEncoding* encoding) { … } // If the form does not have an activated submit button, the first submit // button is returned. HTMLFormControlElement* ButtonToActivate(const HTMLFormElement& form) { … } // Returns true if the selected state of all the options matches the default // selected state. bool IsSelectInDefaultState(const HTMLSelectElement& select) { … } // Returns true if the form element is in its default state, false otherwise. // The default state is the state of the form element on initial load of the // page, and varies depending upon the form element. For example, a checkbox is // in its default state if the checked state matches the state of the checked // attribute. bool IsInDefaultState(const HTMLFormControlElement& form_element) { … } // Look for a suitable search text field in a given HTMLFormElement // Return nothing if one of those items are found: // - A text area field // - A file upload field // - A Password field // - More than one text field HTMLInputElement* FindSuitableSearchInputElement(const HTMLFormElement& form) { … } // Build a search string based on a given HTMLFormElement and HTMLInputElement // // Search string output example from www.google.com: // "hl=en&source=hp&biw=1085&bih=854&q={searchTerms}&btnG=Google+Search&aq=f&aqi=&aql=&oq=" // // Return false if the provided HTMLInputElement is not found in the form bool BuildSearchString(const HTMLFormElement& form, Vector<char>* encoded_string, const WTF::TextEncoding& encoding, const HTMLInputElement* text_element) { … } } // namespace WebSearchableFormData::WebSearchableFormData( const WebFormElement& form, const WebInputElement& selected_input_element) { … } } // namespace blink