• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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 CHROME_BROWSER_AUTOFILL_FORM_GROUP_H_
6 #define CHROME_BROWSER_AUTOFILL_FORM_GROUP_H_
7 #pragma once
8 
9 #include <vector>
10 
11 #include "base/string16.h"
12 #include "base/string_util.h"
13 #include "chrome/browser/autofill/field_types.h"
14 
15 // This class is an interface for collections of form fields, grouped by type.
16 // The information in objects of this class is managed by the
17 // PersonalDataManager.
18 class FormGroup {
19  public:
~FormGroup()20   virtual ~FormGroup() {}
21 
22   // Used to determine the type of a field based on the text that a user enters
23   // into the field. The field types can then be reported back to the server.
24   // This method is additive on |possible_types|.
25   virtual void GetPossibleFieldTypes(const string16& text,
26                                      FieldTypeSet* possible_types) const = 0;
27 
28   // Returns a set of AutofillFieldTypes for which this FormGroup has non-empty
29   // data.
30   virtual void GetAvailableFieldTypes(FieldTypeSet* available_types) const = 0;
31 
32   // Returns the string that should be auto-filled into a text field given the
33   // type of that field.
34   virtual string16 GetInfo(AutofillFieldType type) const = 0;
35 
36   // Used to populate this FormGroup object with data.
37   virtual void SetInfo(AutofillFieldType type, const string16& value) = 0;
38 
39   // Returns the label for this FormGroup item. This should be overridden for
40   // form group items that implement a label.
41   virtual const string16 Label() const;
42 
43   // Returns true if the field data in |form_group| does not match the field
44   // data in this FormGroup.
45   virtual bool operator!=(const FormGroup& form_group) const;
46 
47   // Returns true if the data in this FormGroup is a subset of the data in
48   // |form_group|.
49   bool IsSubsetOf(const FormGroup& form_group) const;
50 
51   // Returns true if the values of the intersection of the available field types
52   // are equal.  If the intersection is empty, the method returns false.
53   bool IntersectionOfTypesHasEqualValues(const FormGroup& form_group) const;
54 
55   // Merges the field data in |form_group| with this FormGroup.
56   void MergeWith(const FormGroup& form_group);
57 
58   // Overwrites the field data in |form_group| with this FormGroup.
59   void OverwriteWith(const FormGroup& form_group);
60 };
61 
62 #endif  // CHROME_BROWSER_AUTOFILL_FORM_GROUP_H_
63