Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(410)

Unified Diff: chrome/browser/ui/autofill/data_model_wrapper.h

Issue 12208070: allow wallet items to appear in requestAutocomplete UI (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: clang fix Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_

Powered by Google App Engine
This is Rietveld 408576698