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

Unified Diff: chrome/browser/ui/views/payments/editor_view_controller.h

Issue 2709093006: Adding new shipping address editor view to payment flow. (Closed)
Patch Set: Bot failure fix Created 3 years, 9 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
« no previous file with comments | « chrome/browser/ui/BUILD.gn ('k') | chrome/browser/ui/views/payments/editor_view_controller.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/payments/editor_view_controller.h
diff --git a/chrome/browser/ui/views/payments/editor_view_controller.h b/chrome/browser/ui/views/payments/editor_view_controller.h
index 3ef846896e78fd6fc3c17d1c0b18f7ca6943df0d..dd72bb43d3712c2e49b87d5a80417dd371402c82 100644
--- a/chrome/browser/ui/views/payments/editor_view_controller.h
+++ b/chrome/browser/ui/views/payments/editor_view_controller.h
@@ -47,12 +47,12 @@ struct EditorField {
enum class ControlType : int { TEXTFIELD, COMBOBOX };
EditorField(autofill::ServerFieldType type,
- const base::string16& label,
+ base::string16 label,
LengthHint length_hint,
bool required,
ControlType control_type = ControlType::TEXTFIELD)
: type(type),
- label(label),
+ label(std::move(label)),
length_hint(length_hint),
required(required),
control_type(control_type) {}
@@ -64,9 +64,9 @@ struct EditorField {
};
// Data type in the field.
- const autofill::ServerFieldType type;
+ autofill::ServerFieldType type;
// Label to be shown alongside the field.
- const base::string16 label;
+ base::string16 label;
// Hint about the length of this field's contents.
LengthHint length_hint;
// Whether the field is required.
@@ -124,6 +124,15 @@ class EditorViewController : public PaymentRequestSheetController,
std::unique_ptr<views::Button> CreatePrimaryButton() override;
std::unique_ptr<views::View> CreateExtraFooterView() override;
+ // views::ComboboxListener:
+ void OnPerformAction(views::Combobox* combobox) override;
+
+ // Update the editor view by removing all it's child views and recreating
+ // the input fields returned by GetFieldDefinitions. Note that
+ // CreateEditorView MUST have been called at least once before calling
+ // UpdateEditorView.
+ virtual void UpdateEditorView();
+
private:
// PaymentRequestSheetController:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
@@ -132,12 +141,9 @@ class EditorViewController : public PaymentRequestSheetController,
void ContentsChanged(views::Textfield* sender,
const base::string16& new_contents) override;
- // views::ComboboxListener:
- void OnPerformAction(views::Combobox* combobox) override;
-
// Creates the whole editor view to go within the editor dialog. It
// encompasses all the input fields created by CreateInputField().
- std::unique_ptr<views::View> CreateEditorView();
+ void CreateEditorView();
// Adds some views to |layout|, to represent an input field and its labels.
// |field| is the field definition, which contains the label and the hint
@@ -145,6 +151,15 @@ class EditorViewController : public PaymentRequestSheetController,
// added (see implementation).
void CreateInputField(views::GridLayout* layout, const EditorField& field);
+ // The implementation of UpdateEditorView which is also called from
+ // CreateEditorView.
+ void UpdateEditorViewImpl();
+
+ // The editor content view, owned by the client so the derived classes can
+ // refresh it when some user interactions cause layout changes by calling
+ // UpdateEditorView().
+ std::unique_ptr<views::View> editor_view_;
+
// Used to remember the association between the input field UI element and the
// original field definition. The ValidatingTextfield* and ValidatingCombobox*
// are owned by their parent view, this only keeps a reference that is good as
« no previous file with comments | « chrome/browser/ui/BUILD.gn ('k') | chrome/browser/ui/views/payments/editor_view_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698