Home | History | Annotate | Download | only in autofill
      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 
     23   const string16& unique_name() const { return unique_name_; }
     24 
     25   AutofillFieldType heuristic_type() const { return heuristic_type_; }
     26   AutofillFieldType server_type() const { return server_type_; }
     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);
     31   void set_server_type(AutofillFieldType type) { server_type_ = type; }
     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