blob: 653c02314f55331cc5a4bebd2c1e351cb0993d8d [file] [log] [blame]
// Copyright 2013 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 COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_TYPE_H_
#define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_TYPE_H_
#include <string>
#include "components/autofill/core/browser/field_types.h"
namespace autofill {
// The high-level description of Autofill types, used to categorize form fields
// and for associating form fields with form values in the Web Database.
class AutofillType {
public:
explicit AutofillType(ServerFieldType field_type);
AutofillType(HtmlFieldType field_type, HtmlFieldMode mode);
AutofillType(const AutofillType& autofill_type);
AutofillType& operator=(const AutofillType& autofill_type);
FieldTypeGroup group() const;
// Returns true if both the |server_type_| and the |html_type_| are set to
// their respective enum's unknown value.
bool IsUnknown() const;
// Maps |this| type to a field type that can be directly stored in an Autofill
// data model (in the sense that it makes sense to call
// |AutofillDataModel::SetRawInfo()| with the returned field type as the first
// parameter).
ServerFieldType GetStorableType() const;
// Serializes |this| type to a string.
std::string ToString() const;
// Maps |field_type| to a field type from ADDRESS_BILLING FieldTypeGroup if
// field type is an Address type.
// TODO(isherman): This method is only used by the
// AutofillDialogControllerImpl class. Consider moving it to a more focused
// location.
static ServerFieldType GetEquivalentBillingFieldType(
ServerFieldType field_type);
// TODO(isherman): This method is only used be a single test class. Move the
// logic into there or something, eh?
static ServerFieldType StringToFieldType(const std::string& str);
private:
// The server-native field type, or UNKNOWN_TYPE if unset.
ServerFieldType server_type_;
// The HTML autocomplete field type and mode hints, or HTML_TYPE_UNKNOWN and
// HTML_MODE_NONE if unset.
HtmlFieldType html_type_;
HtmlFieldMode html_mode_;
};
} // namespace autofill
#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_TYPE_H_