// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_AUTOFILL_CONTENT_RENDERER_FORM_CACHE_H_ #define COMPONENTS_AUTOFILL_CONTENT_RENDERER_FORM_CACHE_H_ #include #include #include #include #include "base/macros.h" #include "base/strings/string16.h" #include "components/autofill/core/common/form_data.h" namespace blink { class WebDocument; class WebElement; class WebElementCollection; class WebFormControlElement; class WebFrame; class WebInputElement; class WebSelectElement; } namespace autofill { struct FormDataPredictions; // Manages the forms in a single RenderFrame. class FormCache { public: explicit FormCache(const blink::WebFrame& frame); ~FormCache(); // Scans the DOM in |frame_| extracting and storing forms that have not been // seen before. Returns the extracted forms. std::vector ExtractNewForms(); // Resets the forms. void Reset(); // Clears the values of all input elements in the form that contains // |element|. Returns false if the form is not found. bool ClearFormWithElement(const blink::WebFormControlElement& element); // For each field in the |form|, sets the title to include the field's // heuristic type, server type, and signature; as well as the form's signature // and the experiment id for the server predictions. bool ShowPredictions(const FormDataPredictions& form); private: // Scans |control_elements| and returns the number of editable elements. // Also remembers the initial element states, and // logs warning messages for deprecated attribute if // |log_deprecation_messages| is set. size_t ScanFormControlElements( const std::vector& control_elements, bool log_deprecation_messages); // Saves initial state of checkbox and select elements. void SaveInitialValues( const std::vector& control_elements); // The frame this FormCache is associated with. const blink::WebFrame& frame_; // The cached forms. Used to prevent re-extraction of forms. std::set parsed_forms_; // The synthetic FormData is for all the fieldsets in the document without a // form owner. FormData synthetic_form_; // The cached initial values for elements. std::map initial_checked_state_; DISALLOW_COPY_AND_ASSIGN(FormCache); }; } // namespace autofill #endif // COMPONENTS_AUTOFILL_CONTENT_RENDERER_FORM_CACHE_H_