| // Copyright (c) 2011 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 CHROME_BROWSER_AUTOFILL_FORM_GROUP_H_ |
| #define CHROME_BROWSER_AUTOFILL_FORM_GROUP_H_ |
| #pragma once |
| |
| #include <vector> |
| |
| #include "base/string16.h" |
| #include "base/string_util.h" |
| #include "chrome/browser/autofill/field_types.h" |
| |
| // This class is an interface for collections of form fields, grouped by type. |
| // The information in objects of this class is managed by the |
| // PersonalDataManager. |
| class FormGroup { |
| public: |
| virtual ~FormGroup() {} |
| |
| // Used to determine the type of a field based on the text that a user enters |
| // into the field. The field types can then be reported back to the server. |
| // This method is additive on |possible_types|. |
| virtual void GetPossibleFieldTypes(const string16& text, |
| FieldTypeSet* possible_types) const = 0; |
| |
| // Returns a set of AutofillFieldTypes for which this FormGroup has non-empty |
| // data. |
| virtual void GetAvailableFieldTypes(FieldTypeSet* available_types) const = 0; |
| |
| // Returns the string that should be auto-filled into a text field given the |
| // type of that field. |
| virtual string16 GetInfo(AutofillFieldType type) const = 0; |
| |
| // Used to populate this FormGroup object with data. |
| virtual void SetInfo(AutofillFieldType type, const string16& value) = 0; |
| |
| // Returns the label for this FormGroup item. This should be overridden for |
| // form group items that implement a label. |
| virtual const string16 Label() const; |
| |
| // Returns true if the field data in |form_group| does not match the field |
| // data in this FormGroup. |
| virtual bool operator!=(const FormGroup& form_group) const; |
| |
| // Returns true if the data in this FormGroup is a subset of the data in |
| // |form_group|. |
| bool IsSubsetOf(const FormGroup& form_group) const; |
| |
| // Returns true if the values of the intersection of the available field types |
| // are equal. If the intersection is empty, the method returns false. |
| bool IntersectionOfTypesHasEqualValues(const FormGroup& form_group) const; |
| |
| // Merges the field data in |form_group| with this FormGroup. |
| void MergeWith(const FormGroup& form_group); |
| |
| // Overwrites the field data in |form_group| with this FormGroup. |
| void OverwriteWith(const FormGroup& form_group); |
| }; |
| |
| #endif // CHROME_BROWSER_AUTOFILL_FORM_GROUP_H_ |