form_cache.h revision effb81e5f8246d0db0270817048dc992db66e9fb
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef COMPONENTS_AUTOFILL_CONTENT_RENDERER_FORM_CACHE_H_ 6#define COMPONENTS_AUTOFILL_CONTENT_RENDERER_FORM_CACHE_H_ 7 8#include <map> 9#include <set> 10#include <vector> 11 12#include "base/strings/string16.h" 13 14namespace blink { 15class WebDocument; 16class WebFormControlElement; 17class WebFormElement; 18class WebFrame; 19class WebInputElement; 20class WebSelectElement; 21} 22 23namespace autofill { 24 25struct FormData; 26struct FormDataPredictions; 27 28// Manages the forms in a RenderView. 29class FormCache { 30 public: 31 FormCache(); 32 ~FormCache(); 33 34 // Scans the DOM in |frame| extracting and storing forms. 35 // Fills |forms| with extracted forms. 36 void ExtractForms(const blink::WebFrame& frame, 37 std::vector<FormData>* forms); 38 39 // Scans the DOM in |frame| extracting and storing forms. 40 // Fills |forms| with extracted forms and |web_form_elements| with associated 41 // web form elements. Returns true if there are unextracted forms due to 42 // |minimum_required_fields| limit, else false. 43 bool ExtractFormsAndFormElements( 44 const blink::WebFrame& frame, 45 size_t minimum_required_fields, 46 std::vector<FormData>* forms, 47 std::vector<blink::WebFormElement>* web_form_elements); 48 49 // Resets the forms for the specified |frame|. 50 void ResetFrame(const blink::WebFrame& frame); 51 52 // Clears the values of all input elements in the form that contains 53 // |element|. Returns false if the form is not found. 54 bool ClearFormWithElement(const blink::WebFormControlElement& element); 55 56 // For each field in the |form|, sets the field's placeholder text to the 57 // field's overall predicted type. Also sets the title to include the field's 58 // heuristic type, server type, and signature; as well as the form's signature 59 // and the experiment id for the server predictions. 60 bool ShowPredictions(const FormDataPredictions& form); 61 62 private: 63 // The cached web frames. 64 std::set<blink::WebDocument> web_documents_; 65 66 // The cached initial values for <select> elements. 67 std::map<const blink::WebSelectElement, base::string16> 68 initial_select_values_; 69 70 // The cached initial values for checkable <input> elements. 71 std::map<const blink::WebInputElement, bool> initial_checked_state_; 72 73 DISALLOW_COPY_AND_ASSIGN(FormCache); 74}; 75 76} // namespace autofill 77 78#endif // COMPONENTS_AUTOFILL_CONTENT_RENDERER_FORM_CACHE_H_ 79