blob: 0f2cd33f0ff83742a383b0d9d957200b880ca3cb [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_DATA_MODEL_H_
#define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_DATA_MODEL_H_
#include <string>
#include "components/autofill/core/browser/field_types.h"
#include "components/autofill/core/browser/form_group.h"
namespace autofill {
class AutofillField;
struct FormFieldData;
// This class is an interface for the primary data models that back Autofill.
// The information in objects of this class is managed by the
// PersonalDataManager.
class AutofillDataModel : public FormGroup {
public:
AutofillDataModel(const std::string& guid, const std::string& origin);
virtual ~AutofillDataModel();
// Set |field_data|'s value based on |field| and contents of |this| (using
// data variant |variant|).
virtual void FillFormField(const AutofillField& field,
size_t variant,
const std::string& app_locale,
FormFieldData* field_data) const = 0;
// Fills in select control with data matching |type| from |this|.
// Public for testing purposes.
void FillSelectControl(const AutofillType& type,
const std::string& app_locale,
FormFieldData* field_data) const;
// Returns true if the data in this model was entered directly by the user,
// rather than automatically aggregated.
bool IsVerified() const;
std::string guid() const { return guid_; }
void set_guid(const std::string& guid) { guid_ = guid; }
std::string origin() const { return origin_; }
void set_origin(const std::string& origin) { origin_ = origin; }
protected:
// Fills in a select control for a country from data in |this|. Returns true
// for success.
virtual bool FillCountrySelectControl(const std::string& app_locale,
FormFieldData* field_data) const;
private:
// A globally unique ID for this object.
std::string guid_;
// The origin of this data. This should be
// (a) a web URL for the domain of the form from which the data was
// automatically aggregated, e.g. https://www.example.com/register,
// (b) some other non-empty string, which cannot be interpreted as a web
// URL, identifying the origin for non-aggregated data, or
// (c) an empty string, indicating that the origin for this data is unknown.
std::string origin_;
};
} // namespace autofill
#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_DATA_MODEL_H_