• 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_AUTOFILL_FIELD_H_
6 #define CHROME_BROWSER_AUTOFILL_AUTOFILL_FIELD_H_
7 #pragma once
8 
9 #include <string>
10 
11 #include "base/basictypes.h"
12 #include "base/string16.h"
13 #include "chrome/browser/autofill/field_types.h"
14 #include "webkit/glue/form_field.h"
15 
16 class AutofillField : public webkit_glue::FormField {
17  public:
18   AutofillField();
19   AutofillField(const webkit_glue::FormField& field,
20                 const string16& unique_name);
21   virtual ~AutofillField();
22 
unique_name()23   const string16& unique_name() const { return unique_name_; }
24 
heuristic_type()25   AutofillFieldType heuristic_type() const { return heuristic_type_; }
server_type()26   AutofillFieldType server_type() const { return server_type_; }
possible_types()27   const FieldTypeSet& possible_types() const { return possible_types_; }
28 
29   // Sets the heuristic type of this field, validating the input.
30   void set_heuristic_type(AutofillFieldType type);
set_server_type(AutofillFieldType type)31   void set_server_type(AutofillFieldType type) { server_type_ = type; }
set_possible_types(const FieldTypeSet & possible_types)32   void set_possible_types(const FieldTypeSet& possible_types) {
33     possible_types_ = possible_types;
34   }
35 
36   // This function automatically chooses between server and heuristic autofill
37   // type, depending on the data available.
38   AutofillFieldType type() const;
39 
40   // Returns true if the value of this field is empty.
41   bool IsEmpty() const;
42 
43   // The unique signature of this field, composed of the field name and the html
44   // input type in a 32-bit hash.
45   std::string FieldSignature() const;
46 
47   // Returns true if the field type has been determined (without the text in the
48   // field).
49   bool IsFieldFillable() const;
50 
51  private:
52   // The unique name of this field, generated by Autofill.
53   string16 unique_name_;
54 
55   // The type of the field, as determined by the Autofill server.
56   AutofillFieldType server_type_;
57 
58   // The type of the field, as determined by the local heuristics.
59   AutofillFieldType heuristic_type_;
60 
61   // The set of possible types for this field.
62   FieldTypeSet possible_types_;
63 
64   DISALLOW_COPY_AND_ASSIGN(AutofillField);
65 };
66 
67 #endif  // CHROME_BROWSER_AUTOFILL_AUTOFILL_FIELD_H_
68