// 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_NAME_FIELD_H_ #define CHROME_BROWSER_AUTOFILL_NAME_FIELD_H_ #pragma once #include <vector> #include "chrome/browser/autofill/autofill_field.h" #include "chrome/browser/autofill/form_field.h" // A form field that can parse either a FullNameField or a FirstLastNameField. class NameField : public FormField { public: static NameField* Parse(std::vector<AutofillField*>::const_iterator* iter, bool is_ecml); protected: NameField() {} private: DISALLOW_COPY_AND_ASSIGN(NameField); }; // A form field that can parse a full name field. class FullNameField : public NameField { public: virtual bool GetFieldInfo(FieldTypeMap* field_type_map) const; static FullNameField* Parse( std::vector<AutofillField*>::const_iterator* iter); private: explicit FullNameField(AutofillField* field); AutofillField* field_; DISALLOW_COPY_AND_ASSIGN(FullNameField); }; // A form field that can parse a first and last name field. class FirstLastNameField : public NameField { public: static FirstLastNameField* Parse1( std::vector<AutofillField*>::const_iterator* iter); static FirstLastNameField* Parse2( std::vector<AutofillField*>::const_iterator* iter); static FirstLastNameField* ParseEcmlName( std::vector<AutofillField*>::const_iterator* iter); static FirstLastNameField* Parse( std::vector<AutofillField*>::const_iterator* iter, bool is_ecml); virtual bool GetFieldInfo(FieldTypeMap* field_type_map) const; private: FirstLastNameField(); AutofillField* first_name_; AutofillField* middle_name_; // Optional. AutofillField* last_name_; bool middle_initial_; // True if middle_name_ is a middle initial. DISALLOW_COPY_AND_ASSIGN(FirstLastNameField); }; #endif // CHROME_BROWSER_AUTOFILL_NAME_FIELD_H_