| Index: chrome/browser/ui/autofill/data_model_wrapper.h
|
| diff --git a/chrome/browser/ui/autofill/data_model_wrapper.h b/chrome/browser/ui/autofill/data_model_wrapper.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ce6797dc4c69cea3639e41123d3c8227204453df
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/autofill/data_model_wrapper.h
|
| @@ -0,0 +1,131 @@
|
| +// Copyright (c) 2012 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_UI_AUTOFILL_DATA_MODEL_WRAPPER_H_
|
| +#define CHROME_BROWSER_UI_AUTOFILL_DATA_MODEL_WRAPPER_H_
|
| +
|
| +#include "base/compiler_specific.h"
|
| +#include "base/string16.h"
|
| +#include "chrome/browser/autofill/field_types.h"
|
| +#include "chrome/browser/autofill/wallet/wallet_items.h"
|
| +#include "chrome/browser/ui/autofill/autofill_dialog_types.h"
|
| +
|
| +class CreditCard;
|
| +class FormGroup;
|
| +class FormStructure;
|
| +
|
| +namespace gfx {
|
| +class Image;
|
| +}
|
| +
|
| +namespace wallet {
|
| +class Address;
|
| +}
|
| +
|
| +namespace autofill {
|
| +
|
| +// A glue class that allows uniform interactions with autocomplete data sources,
|
| +// regardless of their type. Implementations are intended to be lightweight and
|
| +// copyable, only holding weak references to their backing model.
|
| +class DataModelWrapper {
|
| + public:
|
| + virtual ~DataModelWrapper();
|
| +
|
| + // Returns the data for a specific autocomplete type.
|
| + virtual string16 GetInfo(AutofillFieldType type) = 0;
|
| +
|
| + // Returns the icon, if any, that represents this model.
|
| + virtual gfx::Image GetIcon() = 0;
|
| +
|
| + // Fills in |inputs| with the data that this model contains (|inputs| is an
|
| + // out-param).
|
| + virtual void FillInputs(DetailInputs* inputs) = 0;
|
| +
|
| + // Returns text to display to the user to summarize this data source. The
|
| + // default implementation assumes this is an address.
|
| + virtual string16 GetDisplayText();
|
| +
|
| + // Fills in |form_structure| with the data that this model contains. |inputs|
|
| + // and |comparator| are used to determine whether each field in the
|
| + // FormStructure should be filled in or left alone.
|
| + void FillFormStructure(
|
| + const DetailInputs& inputs,
|
| + const InputFieldComparator& compare,
|
| + FormStructure* form_structure);
|
| +
|
| + protected:
|
| + // Fills in |field| with data from the model.
|
| + virtual void FillFormField(AutofillField* field) = 0;
|
| +};
|
| +
|
| +// A DataModelWrapper for Autofill data.
|
| +class AutofillDataModelWrapper : public DataModelWrapper {
|
| + public:
|
| + AutofillDataModelWrapper(const FormGroup* form_group, size_t variant);
|
| + virtual ~AutofillDataModelWrapper();
|
| +
|
| + virtual string16 GetInfo(AutofillFieldType type) OVERRIDE;
|
| + virtual gfx::Image GetIcon() OVERRIDE;
|
| + virtual void FillInputs(DetailInputs* inputs) OVERRIDE;
|
| +
|
| + protected:
|
| + virtual void FillFormField(AutofillField* field) OVERRIDE;
|
| +
|
| + private:
|
| + const FormGroup* form_group_;
|
| + const size_t variant_;
|
| +};
|
| +
|
| +// A DataModelWrapper specifically for Autofill CreditCard data.
|
| +class AutofillCreditCardWrapper : public AutofillDataModelWrapper {
|
| + public:
|
| + explicit AutofillCreditCardWrapper(const CreditCard* card);
|
| + virtual ~AutofillCreditCardWrapper();
|
| +
|
| + virtual gfx::Image GetIcon() OVERRIDE;
|
| + virtual string16 GetDisplayText() OVERRIDE;
|
| +
|
| + private:
|
| + const CreditCard* card_;
|
| +};
|
| +
|
| +// A DataModelWrapper for Wallet addresses.
|
| +class WalletAddressWrapper : public DataModelWrapper {
|
| + public:
|
| + explicit WalletAddressWrapper(const wallet::Address* address);
|
| + virtual ~WalletAddressWrapper();
|
| +
|
| + virtual string16 GetInfo(AutofillFieldType type) OVERRIDE;
|
| + virtual gfx::Image GetIcon() OVERRIDE;
|
| + virtual void FillInputs(DetailInputs* inputs) OVERRIDE;
|
| +
|
| + protected:
|
| + virtual void FillFormField(AutofillField* field) OVERRIDE;
|
| +
|
| + private:
|
| + const wallet::Address* address_;
|
| +};
|
| +
|
| +// A DataModelWrapper for Wallet instruments.
|
| +class WalletInstrumentWrapper : public DataModelWrapper {
|
| + public:
|
| + explicit WalletInstrumentWrapper(
|
| + const wallet::WalletItems::MaskedInstrument* instrument);
|
| + virtual ~WalletInstrumentWrapper();
|
| +
|
| + virtual string16 GetInfo(AutofillFieldType type) OVERRIDE;
|
| + virtual gfx::Image GetIcon() OVERRIDE;
|
| + virtual void FillInputs(DetailInputs* inputs) OVERRIDE;
|
| + virtual string16 GetDisplayText() OVERRIDE;
|
| +
|
| + protected:
|
| + virtual void FillFormField(AutofillField* field) OVERRIDE;
|
| +
|
| + private:
|
| + const wallet::WalletItems::MaskedInstrument* instrument_;
|
| +};
|
| +
|
| +}
|
| +
|
| +#endif // CHROME_BROWSER_UI_AUTOFILL_DATA_MODEL_WRAPPER_H_
|
|
|