OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_STRUCTURE_H_ | 5 #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_STRUCTURE_H_ |
6 #define COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_STRUCTURE_H_ | 6 #define COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_STRUCTURE_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 30 matching lines...) Expand all Loading... |
41 class AutofillMetrics; | 41 class AutofillMetrics; |
42 | 42 |
43 struct AutocheckoutPageMetaData; | 43 struct AutocheckoutPageMetaData; |
44 struct FormData; | 44 struct FormData; |
45 struct FormDataPredictions; | 45 struct FormDataPredictions; |
46 | 46 |
47 // FormStructure stores a single HTML form together with the values entered | 47 // FormStructure stores a single HTML form together with the values entered |
48 // in the fields along with additional information needed by Autofill. | 48 // in the fields along with additional information needed by Autofill. |
49 class FormStructure { | 49 class FormStructure { |
50 public: | 50 public: |
51 // Whether the form fields should be parsed to match the semantics of plain | |
52 // ol' Autofill, or of the interactive Autofill dialog. | |
53 enum ParseTarget { | |
54 PARSE_FOR_AUTOFILL, | |
55 PARSE_FOR_AUTOFILL_DIALOG, | |
56 }; | |
57 | |
58 FormStructure(const FormData& form, | 51 FormStructure(const FormData& form, |
59 const std::string& autocheckout_url_prefix); | 52 const std::string& autocheckout_url_prefix); |
60 virtual ~FormStructure(); | 53 virtual ~FormStructure(); |
61 | 54 |
62 // Runs several heuristics against the form fields to determine their possible | 55 // Runs several heuristics against the form fields to determine their possible |
63 // types. | 56 // types. |
64 void DetermineHeuristicTypes(const AutofillMetrics& metric_logger); | 57 void DetermineHeuristicTypes(const AutofillMetrics& metric_logger); |
65 | 58 |
66 // Encodes the XML upload request from this FormStructure. | 59 // Encodes the XML upload request from this FormStructure. |
67 bool EncodeUploadRequest(const NativeFieldTypeSet& available_field_types, | 60 bool EncodeUploadRequest(const NativeFieldTypeSet& available_field_types, |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 // set for each field. |interaction_time| should be a timestamp corresponding | 124 // set for each field. |interaction_time| should be a timestamp corresponding |
132 // to the user's first interaction with the form. |submission_time| should be | 125 // to the user's first interaction with the form. |submission_time| should be |
133 // a timestamp corresponding to the form's submission. | 126 // a timestamp corresponding to the form's submission. |
134 void LogQualityMetrics(const AutofillMetrics& metric_logger, | 127 void LogQualityMetrics(const AutofillMetrics& metric_logger, |
135 const base::TimeTicks& load_time, | 128 const base::TimeTicks& load_time, |
136 const base::TimeTicks& interaction_time, | 129 const base::TimeTicks& interaction_time, |
137 const base::TimeTicks& submission_time) const; | 130 const base::TimeTicks& submission_time) const; |
138 | 131 |
139 // Classifies each field in |fields_| based upon its |autocomplete| attribute, | 132 // Classifies each field in |fields_| based upon its |autocomplete| attribute, |
140 // if the attribute is available. The association is stored into the field's | 133 // if the attribute is available. The association is stored into the field's |
141 // |heuristic_type|. The exact method of classification depends on | 134 // |heuristic_type|. |
142 // |parse_target|, as the Autofill dialog has slightly different semantics | |
143 // from regular ol' Autofill. | |
144 // Fills |found_types| with |true| if the attribute is available and neither | 135 // Fills |found_types| with |true| if the attribute is available and neither |
145 // empty nor set to the special values "on" or "off" for at least one field. | 136 // empty nor set to the special values "on" or "off" for at least one field. |
146 // Fills |found_sections| with |true| if the attribute specifies a section for | 137 // Fills |found_sections| with |true| if the attribute specifies a section for |
147 // at least one field. | 138 // at least one field. |
148 void ParseFieldTypesFromAutocompleteAttributes(ParseTarget parse_target, | 139 void ParseFieldTypesFromAutocompleteAttributes(bool* found_types, |
149 bool* found_types, | |
150 bool* found_sections); | 140 bool* found_sections); |
151 | 141 |
152 const AutofillField* field(size_t index) const; | 142 const AutofillField* field(size_t index) const; |
153 AutofillField* field(size_t index); | 143 AutofillField* field(size_t index); |
154 size_t field_count() const; | 144 size_t field_count() const; |
155 | 145 |
156 // Returns the number of fields that are able to be autofilled. | 146 // Returns the number of fields that are able to be autofilled. |
157 size_t autofill_count() const { return autofill_count_; } | 147 size_t autofill_count() const { return autofill_count_; } |
158 | 148 |
159 // Used for iterating over the fields. | 149 // Used for iterating over the fields. |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 | 253 |
264 // Whether or not this form was filled by Autocheckout. | 254 // Whether or not this form was filled by Autocheckout. |
265 bool filled_by_autocheckout_; | 255 bool filled_by_autocheckout_; |
266 | 256 |
267 DISALLOW_COPY_AND_ASSIGN(FormStructure); | 257 DISALLOW_COPY_AND_ASSIGN(FormStructure); |
268 }; | 258 }; |
269 | 259 |
270 } // namespace autofill | 260 } // namespace autofill |
271 | 261 |
272 #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_STRUCTURE_H_ | 262 #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_STRUCTURE_H_ |
OLD | NEW |